mirror of
				https://github.com/KevinMidboe/fetch-the-release.git
				synced 2025-10-29 17:40:23 +00:00 
			
		
		
		
	Fetch and find releases for all requested seasoned media. Print all our fetches and then prints length of all releases with a matching title. TODO: Find relevant release types.
This commit is contained in:
		
							
								
								
									
										71
									
								
								index.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										71
									
								
								index.js
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,71 @@ | |||||||
|  | require('dotenv').config() | ||||||
|  | const fetch = require('node-fetch') | ||||||
|  | const { whoAmI, printAll } = require('./utils') | ||||||
|  |  | ||||||
|  | const BASE_PATH = process.env.BASE_PATH  | ||||||
|  |  | ||||||
|  | const mapResult = (result) => { | ||||||
|  |   return { | ||||||
|  |     title: result.title, | ||||||
|  |     year: result.year, | ||||||
|  |     id: result.id, | ||||||
|  |     status: result.status, | ||||||
|  |     date: result.date | ||||||
|  |   } | ||||||
|  | } | ||||||
|  |  | ||||||
|  | const undownloaded = (media) => { | ||||||
|  |   return media.filter(item => item.status === 'requested') | ||||||
|  | } | ||||||
|  |  | ||||||
|  | function fetchRequestMedia() { | ||||||
|  |   return fetch(`${BASE_PATH}/v2/request?page=1`) | ||||||
|  |     .then(resp => resp.json()) | ||||||
|  |     .then(result => { | ||||||
|  |       const { results, total_results } = {...result} | ||||||
|  |  | ||||||
|  |       const media = results.map(mapResult) | ||||||
|  |       return media | ||||||
|  |     }) | ||||||
|  | } | ||||||
|  |  | ||||||
|  | function fetchReleases(media) { | ||||||
|  |   const url = encodeURI(`${BASE_PATH}/v1/pirate/search?query=${media.title}`) | ||||||
|  |   return fetch(url, { | ||||||
|  |       headers: {  | ||||||
|  |         'Authorization': process.env.AUTHORIZATION  | ||||||
|  |       } | ||||||
|  |     }) | ||||||
|  |     .then(resp => resp.json()) | ||||||
|  |     .then(result => { | ||||||
|  |       const { results } = { ...result } | ||||||
|  |       console.log(`Releases for ${media.title} returned: ${results.length}`) | ||||||
|  |       return results ? {catch: media, release: results } : null  | ||||||
|  |     }) | ||||||
|  |     .catch(console.error) | ||||||
|  |  | ||||||
|  | } | ||||||
|  |  | ||||||
|  | async function Fetch() { | ||||||
|  |   const media = await fetchRequestMedia() | ||||||
|  |   printAll(media) | ||||||
|  |   return media | ||||||
|  | } | ||||||
|  |  | ||||||
|  | async function Release(media) { | ||||||
|  |   Promise.all(media.map(fetchReleases)) | ||||||
|  |     .then(releases => { | ||||||
|  |       // TODO could maybe return here ? | ||||||
|  |       // releases.forEach(r => console.log(`Release for ${r.media.title}:\n${r.results.length}`)) | ||||||
|  |       Promise.resolve() | ||||||
|  |     }) | ||||||
|  | } | ||||||
|  |  | ||||||
|  | function main() { | ||||||
|  |   console.info("👋🎣 lets do some fetch-and-releasin'\n") | ||||||
|  |  | ||||||
|  |   Fetch().then(Release) | ||||||
|  | } | ||||||
|  |  | ||||||
|  |  | ||||||
|  | main() | ||||||
		Reference in New Issue
	
	Block a user