CoolFace
Apppublic

mikmc/Internet_Archive

sourceHugging Faceupdated 2y agoView on Hugging Face
1likes
catalog.js57 linesDownload Raw Back to usecases
1const Catalog = (dependencies) => {2  const { httpClient, queryBuilder, env } = dependencies;3 4  const searchCatalog = async (request) => {5    const { search, genre, skip } = request;6 7    try {8      // Build the query using the queryBuilder9      const query = queryBuilder({10        collection: 'feature_films',11        mediatype: 'movies',12        search: search ? `${search}*` : null,13        subject: genre,14      });15 16      // Make the API request to Archive.org using the built query17      const response = await httpClient.get(env.url.search, {18        params: {19          rows: (+skip || 0) + 50,  // Adjusted to fetch 50 results per page (can increase this as needed)20          sort: 'num_reviews desc, avg_rating desc',  // Sort by number of reviews and rating21          fields: 'avg_rating,description,genre,identifier,title,subject',  // Fetch relevant fields22          q: query,23          output: 'json',24        },25      });26 27      // Check if response data is valid and return catalog items28      if (response.data && response.data.response && response.data.response.docs) {29        const catalogItems = response.data.response.docs.map((doc) => ({30          id: `archorg.addon:${doc.identifier}`,31          name: doc.title || "Untitled",32          description: doc.description || "No description available",33          poster: `https://archive.org/services/img/${doc.identifier}`,34          background: `https://archive.org/services/img/${doc.identifier}`,35          type: 'movie',36          genre: genre || "Unknown",  // Default to "Unknown" if no genre is provided37        }));38 39        return { metas: catalogItems };40      } else {41        // Return an empty catalog if response is not as expected42        return { metas: [] };43      }44    } catch (error) {45      // Return empty catalog in case of an error and log the error for debugging46      console.error('Error fetching catalog:', error.message || error);47      return { metas: [] };48    }49  };50 51  return {52    searchCatalog,53  };54};55 56module.exports = Catalog;57