node-csfd-api
Version:
ČSFD API in JavaScript. Amazing NPM library for scrapping csfd.cz :)
43 lines (41 loc) • 1.97 kB
JavaScript
import { csfd } from "../index.js";
import { c } from "./utils.js";
//#region src/bin/search.ts
async function runSearch(query, json) {
const results = await csfd.search(query);
if (json) {
console.log(JSON.stringify(results, null, 2));
return;
}
printSearch(query, results);
}
function printSearch(query, results) {
const ratingDot = (colorRating) => colorRating === "good" ? c.green("●") : colorRating === "average" ? c.yellow("●") : colorRating === "bad" ? c.red("●") : c.dim("●");
const section = (label, count) => count > 0 ? `\n${c.bold(label)} ${c.dim(`(${count})`)}` : null;
const total = results.movies.length + results.tvSeries.length + results.creators.length + results.users.length;
console.log("");
console.log(`${c.bold("Search results for")} ${c.cyan(`"${query}"`)} ${c.dim(`— ${total} found`)}`);
console.log(c.dim("─".repeat(52)));
const movieLine = (r) => ` ${c.dim(String(r.id).padEnd(8))} ${ratingDot(r.colorRating)} ${r.title}` + (r.year ? c.dim(` ${r.year}`) : "") + (r.origins?.length ? c.dim(` ${r.origins[0]}`) : "");
if (results.movies.length > 0) {
console.log(section("Movies", results.movies.length));
results.movies.forEach((r) => console.log(movieLine(r)));
}
if (results.tvSeries.length > 0) {
console.log(section("TV Series", results.tvSeries.length));
results.tvSeries.forEach((r) => console.log(movieLine(r)));
}
if (results.creators.length > 0) {
console.log(section("Creators", results.creators.length));
results.creators.forEach((r) => console.log(` ${c.dim(String(r.id).padEnd(8))} ${r.name}`));
}
if (results.users.length > 0) {
console.log(section("Users", results.users.length));
results.users.forEach((r) => console.log(` ${c.dim(String(r.id).padEnd(8))} ${r.user}` + (r.userRealName ? c.dim(` (${r.userRealName})`) : "")));
}
if (total === 0) console.log(c.dim(" No results found."));
console.log("");
}
//#endregion
export { runSearch };