From 9a339342aa69cb5fcdc3bfcff4e8e47642f3d134 Mon Sep 17 00:00:00 2001 From: ThaUnknown <6506529+ThaUnknown@users.noreply.github.com> Date: Mon, 25 Sep 2023 11:17:29 +0200 Subject: [PATCH] feat: resolve adult media fix: episode list issues --- package.json | 2 +- src/main/discord.js | 4 ++-- src/main/main.js | 2 +- src/renderer/modules/anilist.js | 5 ++-- src/renderer/modules/anime.js | 5 ++++ .../views/ViewAnime/EpisodeList.svelte | 24 ++++++++++++------- src/renderer/views/ViewAnime/ViewAnime.svelte | 2 +- 7 files changed, 28 insertions(+), 16 deletions(-) diff --git a/package.json b/package.json index fa18023..ad74cd3 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "Miru", - "version": "4.4.11", + "version": "4.4.12", "author": "ThaUnknown_ ", "description": "Stream anime torrents, real-time with no waiting for downloads.", "main": "build/main.js", diff --git a/src/main/discord.js b/src/main/discord.js index c78dee2..4e91a67 100644 --- a/src/main/discord.js +++ b/src/main/discord.js @@ -40,8 +40,8 @@ export default class { this.discord.subscribe('ACTIVITY_JOIN') this.discord.subscribe('ACTIVITY_SPECTATE') }) - this.discord.on('ACTIVITY_JOIN', (args) => { - this.window.webContents.send('w2glink', args.secret) + this.discord.on('ACTIVITY_JOIN', ({ secret }) => { + this.window.webContents.send('w2glink', secret) }) this.loginRPC() diff --git a/src/main/main.js b/src/main/main.js index f5aa7f3..8a3fa6b 100644 --- a/src/main/main.js +++ b/src/main/main.js @@ -71,7 +71,7 @@ function createWindow () { mainWindow = null try { webtorrentWindow.webContents.postMessage('destroy', null) - } catch(e) {} + } catch (e) {} app.quit() }) diff --git a/src/renderer/modules/anilist.js b/src/renderer/modules/anilist.js index 093da51..d56c0cc 100644 --- a/src/renderer/modules/anilist.js +++ b/src/renderer/modules/anilist.js @@ -305,13 +305,14 @@ export async function alRequest (opts) { switch (opts.method) { case 'SearchName': { variables.search = opts.name + variables.isAdult = variables.isAdult ?? false query = /* js */` -query($page: Int, $perPage: Int, $sort: [MediaSort], $search: String, $status: [MediaStatus], $year: Int){ +query($page: Int, $perPage: Int, $sort: [MediaSort], $search: String, $status: [MediaStatus], $year: Int, $isAdult: Boolean){ Page(page: $page, perPage: $perPage){ pageInfo{ hasNextPage }, - media(type: ANIME, search: $search, sort: $sort, status_in: $status, isAdult: false, format_not: MUSIC, seasonYear: $year){ + media(type: ANIME, search: $search, sort: $sort, status_in: $status, isAdult: $isAdult, format_not: MUSIC, seasonYear: $year){ ${queryObjects} } } diff --git a/src/renderer/modules/anime.js b/src/renderer/modules/anime.js index cffd7d7..4037288 100644 --- a/src/renderer/modules/anime.js +++ b/src/renderer/modules/anime.js @@ -212,6 +212,11 @@ async function resolveTitle (parseObject) { media = (await alSearch(method)).data.Page.media[0] } } + // check adult + if (!media) { + method.isAdult = true + media = (await alSearch(method)).data.Page.media[0] + } } catch (e) { } if (media) relations[getRelationKey(parseObject)] = media diff --git a/src/renderer/views/ViewAnime/EpisodeList.svelte b/src/renderer/views/ViewAnime/EpisodeList.svelte index cc356af..6448927 100644 --- a/src/renderer/views/ViewAnime/EpisodeList.svelte +++ b/src/renderer/views/ViewAnime/EpisodeList.svelte @@ -3,32 +3,38 @@ import { click } from '@/modules/click.js' import { getEpisodeNumberByAirDate } from '@/modules/providers/tosho.js' import { alRequest } from '@/modules/anilist' - import { media } from '../Player/MediaHandler.svelte' - export let id + export let media + + const id = media.id + + const duration = media.duration export let episodeCount export let userProgress = 0 - export let duration - export let play - const episodeList = Array.from({ length: episodeCount }, (_, i) => ({ episode: i + 1 })) + const episodeList = Array.from({ length: episodeCount }, (_, i) => ({ + episode: i + 1, image: null, summary: null, rating: null, title: null, length: null, airdate: null, airingAt: null + })) async function load () { - const episodesPromise = alRequest({ method: 'Episodes', id }) const res = await fetch('https://api.ani.zip/mappings?anilist_id=' + id) const { episodes, specialCount, episodeCount } = await res.json() - const settled = (await episodesPromise).data.Page?.airingSchedules - const alEpisodes = settled?.length ? settled : episodeList + let alEpisodes = episodeList + + if (!(media.episodes && media.episodes === episodeCount && media.status === 'FINISHED')) { + const settled = (await alRequest({ method: 'Episodes', id })).data.Page?.airingSchedules + if (settled?.length) alEpisodes = settled + } for (const { episode, airingAt } of alEpisodes) { const alDate = new Date((airingAt || 0) * 1000) const needsValidation = !(!specialCount || (media.episodes && media.episodes === episodeCount && episodes[Number(episode)])) const { image, summary, rating, title, length, airdate } = needsValidation ? getEpisodeNumberByAirDate(alDate, episodes, episode) : (episodes[Number(episode)] || {}) - episodeList[episode - 1] = { episode, image, summary, rating, title, length: length || duration, airdate: +alDate || airdate } + episodeList[episode - 1] = { episode, image, summary, rating, title, length: length || duration, airdate: +alDate || airdate, airingAt: +alDate || airdate } } } load() diff --git a/src/renderer/views/ViewAnime/ViewAnime.svelte b/src/renderer/views/ViewAnime/ViewAnime.svelte index 2688699..7a03dbc 100644 --- a/src/renderer/views/ViewAnime/ViewAnime.svelte +++ b/src/renderer/views/ViewAnime/ViewAnime.svelte @@ -170,7 +170,7 @@
- +