mirror of
				https://github.com/KevinMidboe/fetch-the-release.git
				synced 2025-10-29 17:40:23 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			88 lines
		
	
	
		
			2.1 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			88 lines
		
	
	
		
			2.1 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
| require('dotenv').config()
 | ||
| const fetch = require('node-fetch')
 | ||
| const { whoAmI, printAll, writeCache, readCache } = require('./utils')
 | ||
| 
 | ||
| const BASE_URL = process.env.BASE_URL
 | ||
| 
 | ||
| const mapResult = (result) => {
 | ||
|   return {
 | ||
|     title: result.title,
 | ||
|     year: result.year,
 | ||
|     id: result.id,
 | ||
|     status: result.status,
 | ||
|     type: result.type,
 | ||
|     date: result.date
 | ||
|   }
 | ||
| }
 | ||
| 
 | ||
| const undownloaded = (media) => {
 | ||
|   return media.filter(item => item.status === 'requested')
 | ||
| }
 | ||
| 
 | ||
| function fetchRequestMedia() {
 | ||
|   return fetch(`${BASE_URL}/v2/request?page=1`)
 | ||
|     .then(resp => resp.json())
 | ||
|     .then(result => {
 | ||
|       const { results, total_results } = {...result}
 | ||
| 
 | ||
|       const media = results.map(mapResult)
 | ||
|       // console.log('requested: ', media)
 | ||
|       return media
 | ||
|     })
 | ||
| }
 | ||
| 
 | ||
| function fetchReleases(media) {
 | ||
|   const url = encodeURI(`${BASE_URL}/v1/pirate/search?query=${media.title}`)
 | ||
|   return fetch(url, {
 | ||
|       headers: { 
 | ||
|         'Authorization': process.env.AUTHORIZATION 
 | ||
|       }
 | ||
|     })
 | ||
|     .then(resp => resp.json())
 | ||
| //    .then(resp => { writeToFile(resp); return resp })
 | ||
|     .then(result => {
 | ||
|       const { results } = { ...result }
 | ||
|       console.log(`Releases for ${media.title} returned: ${results.length}`)
 | ||
|       return results ? {media: media, release: results } : null 
 | ||
|     })
 | ||
|     .catch(console.error)
 | ||
| 
 | ||
| }
 | ||
| 
 | ||
| function seasonedReleases(release) {
 | ||
|   const { media, releases } = release
 | ||
|   console.log(media.title)
 | ||
|   if (releases)
 | ||
|     console.log(releases[0])
 | ||
|   console.log()
 | ||
| 
 | ||
| }
 | ||
| 
 | ||
| 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")
 | ||
| 
 | ||
|   fetchRequestMedia()
 | ||
|     .then(media => Promise.all(media.map(fetchReleases)))
 | ||
|     .then(async(releases) => releases.map(await writeCache))
 | ||
| //  readCache()
 | ||
| //    .then(releases => releases.filter(seasonedReleases))
 | ||
| }
 | ||
| 
 | ||
| 
 | ||
| main()
 |