mirror of
https://github.com/ThaUnknown/miru.git
synced 2026-04-19 08:22:12 +00:00
fix: improve episode resolve
This commit is contained in:
parent
98cf51a8e6
commit
68d2cfe6ed
3 changed files with 24 additions and 18 deletions
|
|
@ -1,6 +1,6 @@
|
|||
{
|
||||
"name": "Miru",
|
||||
"version": "4.1.8",
|
||||
"version": "4.1.9",
|
||||
"author": "ThaUnknown_ <ThaUnknown@users.noreply.github.com>",
|
||||
"description": "Stream anime torrents, real-time with no waiting for downloads.",
|
||||
"main": "build/main.js",
|
||||
|
|
|
|||
|
|
@ -52,20 +52,35 @@ function getRelation (list, type) {
|
|||
}
|
||||
|
||||
// TODO: https://anilist.co/anime/13055/
|
||||
async function getAniDBEpisodeFromAL ({ media, episode }, { episodes, episodeCount }) {
|
||||
async function getAniDBEpisodeFromAL ({ media, episode }, { episodes, episodeCount, specialCount }) {
|
||||
console.log('getting AniDB EpID for Mal EP', { episode, episodes })
|
||||
if (!episode || !Object.values(episodes).length) return
|
||||
if (media.episodes && media.episodes === episodeCount && episodes[Number(episode)]) return episodes[Number(episode)]
|
||||
// if media has no specials or their episode counts don't match
|
||||
if (!specialCount || (media.episodes && media.episodes === episodeCount && episodes[Number(episode)])) return episodes[Number(episode)]
|
||||
console.log('EP count doesn\'t match, checking by air date')
|
||||
const res = await alRequest({ method: 'EpisodeDate', id: media.id, ep: episode })
|
||||
const alDate = new Date((res.data.AiringSchedule?.airingAt || 0) * 1000)
|
||||
|
||||
if (!+alDate) return episodes[Number(episode)] || episodes[1] // what the fuck, are you braindead anilist?, the source episode number to play is from an array created from AL ep count, so how come it's missing?
|
||||
|
||||
// find closest episode by air date
|
||||
// find closest episodes by air date, multiple episodes can have the same air date distance
|
||||
// ineffcient but reliable
|
||||
return Object.values(episodes).reduce((prev, curr) => {
|
||||
return Math.abs(new Date(curr.airdate) - alDate) < Math.abs(new Date(prev.airdate) - alDate) ? curr : prev
|
||||
const closestEpisodes = Object.values(episodes).reduce((prev, curr) => {
|
||||
if (!prev[0]) return [curr]
|
||||
const prevDate = Math.abs(new Date(prev[0]?.airdate) - alDate)
|
||||
const currDate = Math.abs(new Date(curr.airdate) - alDate)
|
||||
if (prevDate === currDate) {
|
||||
prev.push(curr)
|
||||
return prev
|
||||
}
|
||||
if (currDate < prevDate) return [curr]
|
||||
return prev
|
||||
}, [])
|
||||
|
||||
console.log({ closestEpisodes })
|
||||
|
||||
return closestEpisodes.reduce((prev, curr) => {
|
||||
return Math.abs(curr.episodeNumber - episode) < Math.abs(prev.episodeNumber - episode) ? curr : prev
|
||||
})
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
export default function scroll (t, { speed = 120, smooth = 15 } = {}) {
|
||||
export default function scroll (t, { speed = 120, smooth = 10 } = {}) {
|
||||
let moving = false
|
||||
let pos = 0
|
||||
let scrollTop = 0
|
||||
|
|
@ -9,17 +9,8 @@ export default function scroll (t, { speed = 120, smooth = 15 } = {}) {
|
|||
if (!moving) update()
|
||||
}, { capture: true, passive: false })
|
||||
|
||||
let scrollBar = false
|
||||
|
||||
t.addEventListener('pointerdown', e => {
|
||||
if (e.offsetX > t.clientWidth) scrollBar = true
|
||||
})
|
||||
|
||||
t.addEventListener('pointerup', () => { scrollBar = false })
|
||||
|
||||
t.addEventListener('scroll', () => {
|
||||
if (scrollBar) pos = scrollTop = t.scrollTop
|
||||
}, { capture: false, passive: true })
|
||||
// TODO: this needs to be the scrollend event once we update electron
|
||||
t.addEventListener('pointerup', () => { pos = scrollTop = t.scrollTop })
|
||||
|
||||
function update () {
|
||||
const delta = pos - scrollTop === smooth * 2 ? 0 : ((pos - scrollTop) / smooth)
|
||||
|
|
|
|||
Loading…
Reference in a new issue