node-csfd-api
Version:
ČSFD API in JavaScript. Amazing NPM library for scrapping csfd.cz :)
53 lines (51 loc) • 1.43 kB
JavaScript
import { csfd } from "../index.js";
import { escapeCsvField, renderProgress } from "./utils.js";
import { writeFile } from "node:fs/promises";
//#region src/bin/export-reviews.ts
async function runReviewsExport(userId, options) {
try {
console.log(`Fetching reviews for user ${userId} (${options.format.toUpperCase()})...`);
const reviews = await csfd.userReviews(userId, {
...options.userReviewsOptions,
onProgress: renderProgress
});
console.log(`Fetched ${reviews.length} reviews.`);
let content = "";
let fileName = "";
if (options.format === "json") {
content = JSON.stringify(reviews, null, 2);
fileName = `${userId}-reviews.json`;
} else {
content = [[
"id",
"title",
"year",
"type",
"colorRating",
"userRating",
"date",
"url",
"text"
].join(","), ...reviews.map((r) => [
r.id,
escapeCsvField(r.title ?? ""),
r.year ?? "",
escapeCsvField(r.type ?? ""),
escapeCsvField(r.colorRating ?? ""),
r.userRating ?? "",
escapeCsvField(r.userDate ?? ""),
escapeCsvField(r.url ?? ""),
escapeCsvField(r.text ?? "")
].join(","))].join("\n");
fileName = `${userId}-reviews.csv`;
}
await writeFile(fileName, content);
console.log("Saved in file:", `./${fileName}`);
} catch (error) {
console.error("Error exporting reviews:", error);
throw error;
}
}
//#endregion
export { runReviewsExport };