fixed default sub dub selector

This commit is contained in:
stratuma 2024-05-20 00:44:43 +02:00
parent 56865e767d
commit fc1323351b
5 changed files with 125 additions and 46 deletions

View File

@ -25,7 +25,7 @@
v-for="l in locales" v-for="l in locales"
@click="toggleDub(l)" @click="toggleDub(l)"
class="flex flex-row items-center justify-center gap-3 py-2 rounded-xl text-sm" class="flex flex-row items-center justify-center gap-3 py-2 rounded-xl text-sm"
:class="dubLocales && dubLocales.find((i) => i.locale === l.locale) ? 'bg-[#424242]' : 'hover:bg-[#747474]'" :class="dubLocales && dubLocales.length !== 0 && dubLocales.find((i) => i.locale === l.locale) ? 'bg-[#424242]' : 'hover:bg-[#747474]'"
> >
{{ l.name }} {{ l.name }}
</button> </button>
@ -38,7 +38,7 @@
v-for="l in locales" v-for="l in locales"
@click="toggleSub(l)" @click="toggleSub(l)"
class="flex flex-row items-center justify-center gap-3 py-2 rounded-xl text-sm" class="flex flex-row items-center justify-center gap-3 py-2 rounded-xl text-sm"
:class="subLocales && subLocales.find((i) => i.locale === l.locale) ? 'bg-[#424242]' : 'hover:bg-[#747474]'" :class="subLocales && subLocales.length !== 0 && subLocales.find((i) => i.locale === l.locale) ? 'bg-[#424242]' : 'hover:bg-[#747474]'"
> >
{{ l.name }} {{ l.name }}
</button> </button>
@ -79,11 +79,20 @@ const toggleDub = (lang: { locale: string; name: string }) => {
if (index !== -1) { if (index !== -1) {
dubLocales.value.splice(index, 1) dubLocales.value.splice(index, 1)
if (process.client) {
;(window as any).myAPI.setArrayDub(JSON.stringify(dubLocales.value))
}
return return
} }
if (index === -1) { if (index === -1) {
dubLocales.value.push(lang) dubLocales.value.push(lang)
if (process.client) {
;(window as any).myAPI.setArrayDub(JSON.stringify(dubLocales.value))
}
return return
} }
} }
@ -93,16 +102,19 @@ const toggleSub = (lang: { locale: string; name: string }) => {
if (index !== -1) { if (index !== -1) {
subLocales.value.splice(index, 1) subLocales.value.splice(index, 1)
;(window as any).myAPI.setArraySub(JSON.stringify(subLocales.value))
return return
} }
if (index === -1) { if (index === -1) {
subLocales.value.push(lang) subLocales.value.push(lang)
;(window as any).myAPI.setArraySub(JSON.stringify(subLocales.value))
return return
} }
} }
const services = ref<{ name: string; service: string }[]>([ const services = ref<{ name: string; service: string }[]>([
{ {
name: 'Crunchyroll', name: 'Crunchyroll',
@ -148,14 +160,12 @@ const deleteAccount = async (id: number) => {
onMounted(() => { onMounted(() => {
;(window as any).myAPI.getArray('defdubarray').then((result: any) => { ;(window as any).myAPI.getArray('defdubarray').then((result: any) => {
dubLocales.value = result dubLocales.value = JSON.parse(result)
}) })
;(window as any).myAPI.getArray('defsubarray').then((result: any) => {
;(window as any).myAPI.getFile('defsubarray').then((result: any) => { subLocales.value = JSON.parse(result)
subLocales.value = result
}) })
}) })
</script> </script>
<style></style> <style></style>

View File

@ -381,6 +381,8 @@ const locales = ref<Array<{ locale: string; name: string }>>([
const isProduction = process.env.NODE_ENV !== 'development' const isProduction = process.env.NODE_ENV !== 'development'
const selectDub = ref<boolean>(false) const selectDub = ref<boolean>(false)
const selectedDubs = ref<Array<{ name: string | undefined; locale: string }>>([{ locale: 'ja-JP', name: 'JP' }]) const selectedDubs = ref<Array<{ name: string | undefined; locale: string }>>([{ locale: 'ja-JP', name: 'JP' }])
const dubLocales = ref<Array<{ locale: string; name: string }>>([])
const subLocales = ref<Array<{ locale: string; name: string }>>([])
const selectSub = ref<boolean>(false) const selectSub = ref<boolean>(false)
const selectedSubs = ref<Array<{ name: string | undefined; locale: string }>>([]) const selectedSubs = ref<Array<{ name: string | undefined; locale: string }>>([])
@ -525,6 +527,12 @@ onMounted(() => {
;(window as any).myAPI.getFolder().then((result: any) => { ;(window as any).myAPI.getFolder().then((result: any) => {
path.value = result path.value = result
}) })
;(window as any).myAPI.getArray('defdubarray').then((result: any) => {
dubLocales.value = JSON.parse(result)
})
;(window as any).myAPI.getArray('defsubarray').then((result: any) => {
subLocales.value = JSON.parse(result)
})
}) })
const getFolderPath = () => { const getFolderPath = () => {
@ -637,8 +645,29 @@ const switchToSeason = async () => {
selectedEndEpisode.value = episodes.value[0] selectedEndEpisode.value = episodes.value[0]
} }
tab.value = 2 tab.value = 2
selectedDubs.value = [{ locale: 'ja-JP', name: 'JP' }]
selectedDubs.value = []
selectedSubs.value = [] selectedSubs.value = []
if (dubLocales.value && dubLocales.value.length !== 0) {
for (const a of dubLocales.value) {
if (CRselectedShow.value.Dubs.find(cr => cr === a.locale)) {
toggleDub(a)
}
}
} else {
selectedDubs.value = [{ locale: 'ja-JP', name: 'JP' }]
}
if (subLocales.value && subLocales.value.length !== 0) {
for (const a of subLocales.value) {
if (CRselectedShow.value.Subs.find(cr => cr === a.locale)) {
toggleSub(a)
}
}
} else {
selectedSubs.value = []
}
} }
if (url.value && url.value.includes('crunchyroll') && !CRselectedShow.value) { if (url.value && url.value.includes('crunchyroll') && !CRselectedShow.value) {
@ -657,8 +686,29 @@ const switchToSeason = async () => {
selectedEndEpisode.value = episodes.value[0] selectedEndEpisode.value = episodes.value[0]
} }
tab.value = 2 tab.value = 2
selectedDubs.value = [{ locale: 'ja-JP', name: 'JP' }]
selectedDubs.value = []
selectedSubs.value = [] selectedSubs.value = []
if (dubLocales.value && dubLocales.value.length !== 0) {
for (const a of dubLocales.value) {
if (CRselectedShow.value.Dubs.find(cr => cr === a.locale)) {
toggleDub(a)
}
}
} else {
selectedDubs.value = [{ locale: 'ja-JP', name: 'JP' }]
}
if (subLocales.value && subLocales.value.length !== 0) {
for (const a of subLocales.value) {
if (CRselectedShow.value.Subs.find(cr => cr === a.locale)) {
toggleSub(a)
}
}
} else {
selectedSubs.value = []
}
} }
isFetchingSeasons.value-- isFetchingSeasons.value--

View File

@ -82,7 +82,11 @@ async function deletePlaylistandTMP() {
deletePlaylistandTMP() deletePlaylistandTMP()
// Update Playlist Item // Update Playlist Item
export async function updatePlaylistByID(id: number, status?: 'waiting' | 'preparing' | 'downloading' | 'merging' | 'decrypting' | 'completed' | 'failed', quality?: 1080 | 720 | 480 | 360 | 240) { export async function updatePlaylistByID(
id: number,
status?: 'waiting' | 'preparing' | 'downloading' | 'merging' | 'decrypting' | 'completed' | 'failed',
quality?: 1080 | 720 | 480 | 360 | 240
) {
await Playlist.update({ status: status, quality: quality }, { where: { id: id } }) await Playlist.update({ status: status, quality: quality }, { where: { id: id } })
} }
@ -156,7 +160,7 @@ async function checkPlaylists() {
e.dataValues.quality, e.dataValues.quality,
e.dataValues.dir, e.dataValues.dir,
e.dataValues.format, e.dataValues.format,
(e.dataValues.media as CrunchyEpisode).geo, (e.dataValues.media as CrunchyEpisode).geo
) )
} }
if (e.dataValues.service === 'ADN') { if (e.dataValues.service === 'ADN') {
@ -653,11 +657,7 @@ export async function downloadCrunchyrollPlaylist(
keys = await getDRMKeys(pssh, assetId[1], play.account_id) keys = await getDRMKeys(pssh, assetId[1], play.account_id)
} }
if ( if ((hq.contentProtection && !drmL3blob && !drmL3key) || (hq.contentProtection && !drmL3blob) || (hq.contentProtection && !drmL3key)) {
(hq.contentProtection && !drmL3blob && !drmL3key) ||
(hq.contentProtection && !drmL3blob) ||
(hq.contentProtection && !drmL3key)
) {
await updatePlaylistByID(downloadID, 'failed') await updatePlaylistByID(downloadID, 'failed')
messageBox( messageBox(
'error', 'error',
@ -714,8 +714,8 @@ async function downloadParts(parts: { filename: string; url: string }[], downloa
const path = await createFolder() const path = await createFolder()
const dn = downloading.find((i) => i.id === downloadID) const dn = downloading.find((i) => i.id === downloadID)
let totalDownloadedBytes = 0; let totalDownloadedBytes = 0
let totalSizeBytes = 0; let totalSizeBytes = 0
let startTime = Date.now() let startTime = Date.now()
for (const [index, part] of parts.entries()) { for (const [index, part] of parts.entries()) {
@ -730,12 +730,12 @@ async function downloadParts(parts: { filename: string; url: string }[], downloa
const readableStream = Readable.from(body as any) const readableStream = Readable.from(body as any)
let partDownloadedBytes = 0 let partDownloadedBytes = 0
let partSizeBytes = 0; let partSizeBytes = 0
readableStream.on('data', (chunk) => { readableStream.on('data', (chunk) => {
partDownloadedBytes += chunk.length partDownloadedBytes += chunk.length
totalDownloadedBytes += chunk.length totalDownloadedBytes += chunk.length
totalSizeBytes += chunk.length; totalSizeBytes += chunk.length
}) })
await finished(readableStream.pipe(stream)) await finished(readableStream.pipe(stream))
@ -748,7 +748,7 @@ async function downloadParts(parts: { filename: string; url: string }[], downloa
const endTime = Date.now() const endTime = Date.now()
const durationInSeconds = (endTime - startTime) / 1000 const durationInSeconds = (endTime - startTime) / 1000
dn.downloadSpeed = totalDownloadedBytes / 1024 / 1024 / durationInSeconds dn.downloadSpeed = totalDownloadedBytes / 1024 / 1024 / durationInSeconds
dn.totalDownloaded = tot; dn.totalDownloaded = tot
} }
success = true success = true
@ -941,29 +941,35 @@ async function mergeVideoFile(video: string, audios: Array<string>, subs: Array<
}) })
} }
export async function checkProxies() { export async function checkProxies() {
const cachedData = server.CacheController.get('proxycheck') as { name: string; code: string; url: string; status: string | undefined }[]
const cachedData = server.CacheController.get('proxycheck') as { name: string, code: string, url: string, status: string | undefined }[];
if (!cachedData) { if (!cachedData) {
const proxies: { name: string, code: string, url: string, status: string | undefined }[] = [{ const proxies: { name: string; code: string; url: string; status: string | undefined }[] = [
name: 'US Proxy', code: 'US', url: 'https://us-proxy.crd.cx/', status: undefined {
name: 'US Proxy',
code: 'US',
url: 'https://us-proxy.crd.cx/',
status: undefined
}, },
{ {
name: 'UK Proxy', code: 'GB', url: 'https://uk-proxy.crd.cx/', status: undefined name: 'UK Proxy',
code: 'GB',
url: 'https://uk-proxy.crd.cx/',
status: undefined
}, },
{ {
name: 'DE Proxy', code: 'DE', url: 'https://de-proxy.crd.cx/', status: undefined name: 'DE Proxy',
}] code: 'DE',
url: 'https://de-proxy.crd.cx/',
status: undefined
}
]
for (const p of proxies) { for (const p of proxies) {
const response = await fetch( const response = await fetch(p.url + 'health', {
p.url + 'health', method: 'GET'
{ })
method: 'GET',
}
)
if (response.ok) { if (response.ok) {
p.status = 'online' p.status = 'online'
@ -978,5 +984,4 @@ export async function checkProxies() {
} }
return cachedData return cachedData
} }

View File

@ -211,6 +211,18 @@ ipcMain.handle('dialog:defaultArray', async (events, type: string) => {
return savedPath return savedPath
}) })
ipcMain.handle('dialog:defaultArraySetSub', async (events, va: Array<any>) => {
await settings.set('defsubarray', va)
return va
})
ipcMain.handle('dialog:defaultArraySetDub', async (events, va: Array<any>) => {
await settings.set('defdubarray', va)
return va
})
ipcMain.handle('dialog:proxyActive', async (events) => { ipcMain.handle('dialog:proxyActive', async (events) => {
const savedStat = await settings.get('proxyActive') const savedStat = await settings.get('proxyActive')

View File

@ -8,6 +8,8 @@ contextBridge.exposeInMainWorld('myAPI', {
getFolder: () => ipcRenderer.invoke('dialog:defaultDirectory'), getFolder: () => ipcRenderer.invoke('dialog:defaultDirectory'),
getFile: (type: string) => ipcRenderer.invoke('dialog:defaultFile', type), getFile: (type: string) => ipcRenderer.invoke('dialog:defaultFile', type),
getArray: (type: string) => ipcRenderer.invoke('dialog:defaultArray', type), getArray: (type: string) => ipcRenderer.invoke('dialog:defaultArray', type),
setArraySub: (va: Array<any>) => ipcRenderer.invoke('dialog:defaultArraySetSub', va),
setArrayDub: (va: Array<any>) => ipcRenderer.invoke('dialog:defaultArraySetDub', va),
getProxyActive: () => ipcRenderer.invoke('dialog:proxyActive'), getProxyActive: () => ipcRenderer.invoke('dialog:proxyActive'),
setProxyActive: (status: boolean) => ipcRenderer.invoke('dialog:proxyActiveSet', status), setProxyActive: (status: boolean) => ipcRenderer.invoke('dialog:proxyActiveSet', status),
openWindow: (opt: { title: string; url: string; width: number; height: number; backgroundColor: string }) => ipcRenderer.invoke('window:openNewWindow', opt), openWindow: (opt: { title: string; url: string; width: number; height: number; backgroundColor: string }) => ipcRenderer.invoke('window:openNewWindow', opt),