added better quality not found error handeling
This commit is contained in:
parent
be78d588b1
commit
5ae5e837c6
@ -1,5 +1,5 @@
|
||||
<template>
|
||||
<div class="flex flex-col mt-3 font-dm" style="-webkit-app-region: no-drag">
|
||||
<div class="flex flex-col mt-3 gap-3 font-dm" style="-webkit-app-region: no-drag">
|
||||
<div class="flex flex-col items-center p-3 bg-[#11111189] rounded-xl select-none">
|
||||
<div class="text-sm mb-2"> Account Management </div>
|
||||
<div v-for="account in accounts" class="flex flex-row items-center h-12 p-3 w-full bg-[#4b4b4b89] rounded-xl">
|
||||
@ -18,10 +18,91 @@
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="flex flex-col items-center p-3 bg-[#11111189] rounded-xl select-none">
|
||||
<div class="text-sm mb-2"> Default Dubs </div>
|
||||
<div class="w-full bg-[#636363] rounded-xl grid grid-cols-10 gap-1 p-1 z-10">
|
||||
<button
|
||||
v-for="l in locales"
|
||||
@click="toggleDub(l)"
|
||||
class="flex flex-row items-center justify-center gap-3 py-2 rounded-xl text-sm"
|
||||
:class="dubLocales.find((i) => i.locale === l.locale) ? 'bg-[#424242]' : 'hover:bg-[#747474]'"
|
||||
>
|
||||
{{ l.name }}
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
<div class="flex flex-col items-center p-3 bg-[#11111189] rounded-xl select-none">
|
||||
<div class="text-sm mb-2"> Default Subs </div>
|
||||
<div class="w-full bg-[#636363] rounded-xl grid grid-cols-10 gap-1 p-1 z-10">
|
||||
<button
|
||||
v-for="l in locales"
|
||||
@click="toggleSub(l)"
|
||||
class="flex flex-row items-center justify-center gap-3 py-2 rounded-xl text-sm"
|
||||
:class="subLocales.find((i) => i.locale === l.locale) ? 'bg-[#424242]' : 'hover:bg-[#747474]'"
|
||||
>
|
||||
{{ l.name }}
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script lang="ts" setup>
|
||||
const dubLocales = ref<Array<{ locale: string; name: string }>>([])
|
||||
|
||||
const subLocales = ref<Array<{ locale: string; name: string }>>([])
|
||||
|
||||
const locales = ref<Array<{ locale: string; name: string }>>([
|
||||
{ locale: 'ja-JP', name: 'JP' },
|
||||
{ locale: 'de-DE', name: 'DE' },
|
||||
{ locale: 'hi-IN', name: 'HI' },
|
||||
{ locale: 'ru-RU', name: 'RU' },
|
||||
{ locale: 'en-US', name: 'EN' },
|
||||
{ locale: 'fr-FR', name: 'FR' },
|
||||
{ locale: 'pt-BR', name: 'PT' },
|
||||
{ locale: 'es-419', name: 'LA-ES' },
|
||||
{ locale: 'en-IN', name: 'EN-IN' },
|
||||
{ locale: 'it-IT', name: 'IT' },
|
||||
{ locale: 'es-ES', name: 'ES' },
|
||||
{ locale: 'ta-IN', name: 'TA' },
|
||||
{ locale: 'te-IN', name: 'TE' },
|
||||
{ locale: 'ar-SA', name: 'AR' },
|
||||
{ locale: 'ms-MY', name: 'MS' },
|
||||
{ locale: 'th-TH', name: 'TH' },
|
||||
{ locale: 'vi-VN', name: 'VI' },
|
||||
{ locale: 'id-ID', name: 'ID' },
|
||||
{ locale: 'ko-KR', name: 'KO' }
|
||||
])
|
||||
|
||||
const toggleDub = (lang: { locale: string; name: string }) => {
|
||||
const index = dubLocales.value.findIndex((i) => i.locale === lang.locale)
|
||||
|
||||
if (index !== -1) {
|
||||
dubLocales.value.splice(index, 1)
|
||||
return
|
||||
}
|
||||
|
||||
if (index === -1) {
|
||||
dubLocales.value.push(lang)
|
||||
return
|
||||
}
|
||||
}
|
||||
|
||||
const toggleSub = (lang: { locale: string; name: string }) => {
|
||||
const index = subLocales.value.findIndex((i) => i.locale === lang.locale)
|
||||
|
||||
if (index !== -1) {
|
||||
subLocales.value.splice(index, 1)
|
||||
return
|
||||
}
|
||||
|
||||
if (index === -1) {
|
||||
subLocales.value.push(lang)
|
||||
return
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
const services = ref<{ name: string; service: string }[]>([
|
||||
{
|
||||
name: 'Crunchyroll',
|
||||
@ -64,6 +145,17 @@ const deleteAccount = async (id: number) => {
|
||||
|
||||
getAccounts()
|
||||
}
|
||||
|
||||
onMounted(() => {
|
||||
;(window as any).myAPI.getArray('defdubarray').then((result: any) => {
|
||||
dubLocales.value = result
|
||||
})
|
||||
|
||||
;(window as any).myAPI.getFile('defsubarray').then((result: any) => {
|
||||
subLocales.value = result
|
||||
})
|
||||
})
|
||||
|
||||
</script>
|
||||
|
||||
<style></style>
|
||||
|
@ -66,7 +66,7 @@ export async function crunchyLogin(user: string, passw: string) {
|
||||
async function crunchyLoginFetch(user: string, passw: string) {
|
||||
const headers = {
|
||||
Authorization: 'Basic dC1rZGdwMmg4YzNqdWI4Zm4wZnE6eWZMRGZNZnJZdktYaDRKWFMxTEVJMmNDcXUxdjVXYW4=',
|
||||
'Content-Type': 'application/x-www-form-urlencoded',
|
||||
'Content-Type': 'application/json',
|
||||
'User-Agent': 'Crunchyroll/3.46.2 Android/13 okhttp/4.12.0'
|
||||
}
|
||||
|
||||
@ -88,9 +88,9 @@ async function crunchyLoginFetch(user: string, passw: string) {
|
||||
country: string
|
||||
account_id: string
|
||||
profile_id: string
|
||||
}>('https://beta-api.crunchyroll.com/auth/v1/token', {
|
||||
}>('https://crd.cx/auth/v1/token', {
|
||||
type: 'POST',
|
||||
body: new URLSearchParams(body).toString(),
|
||||
body: JSON.stringify(body),
|
||||
header: headers,
|
||||
credentials: 'same-origin'
|
||||
})
|
||||
@ -103,6 +103,8 @@ async function crunchyLoginFetch(user: string, passw: string) {
|
||||
return { data: null, error: null }
|
||||
}
|
||||
|
||||
console.log(data.country)
|
||||
|
||||
return { data: data, error: null }
|
||||
}
|
||||
|
||||
|
@ -605,7 +605,18 @@ export async function downloadCrunchyrollPlaylist(
|
||||
|
||||
var hq = mdp.playlists.find((i) => i.attributes.RESOLUTION?.height === quality)
|
||||
|
||||
if (!hq) return
|
||||
if (!hq) {
|
||||
console.log(`Res ${quality}p not found, using res ${mdp.playlists[0].attributes.RESOLUTION?.height}p instead`)
|
||||
messageBox(
|
||||
'warning',
|
||||
['OK'],
|
||||
5,
|
||||
`Resolution ${quality}p not found`,
|
||||
`Resolution ${quality}p not found`,
|
||||
`Resolution ${quality}p not found, using resolution ${mdp.playlists[0].attributes.RESOLUTION?.height}p instead`
|
||||
)
|
||||
hq = mdp.playlists[0]
|
||||
}
|
||||
|
||||
const assetId = hq.segments[0].resolvedUri.match(/\/assets\/(?:p\/)?([^_,]+)/)
|
||||
|
||||
|
@ -96,7 +96,7 @@ app.whenReady().then(async () => {
|
||||
|
||||
export async function messageBox(
|
||||
type: 'none' | 'info' | 'error' | 'question' | 'warning' | undefined,
|
||||
buttons: Array<'Cancel'>,
|
||||
buttons: Array<'Cancel' | 'OK'>,
|
||||
defaultId: number,
|
||||
title: string,
|
||||
message: string,
|
||||
@ -198,6 +198,20 @@ ipcMain.handle('dialog:defaultFile', async (events, type: string) => {
|
||||
return savedPath
|
||||
})
|
||||
|
||||
ipcMain.handle('dialog:defaultArray', async (events, type: string) => {
|
||||
|
||||
if (!type) return
|
||||
|
||||
const savedPath = await settings.get(type)
|
||||
|
||||
if (!savedPath) {
|
||||
return []
|
||||
}
|
||||
|
||||
return savedPath
|
||||
})
|
||||
|
||||
|
||||
app.on('window-all-closed', () => {
|
||||
if (process.platform !== 'darwin') {
|
||||
app.quit()
|
||||
|
@ -7,6 +7,7 @@ contextBridge.exposeInMainWorld('myAPI', {
|
||||
getEndpoint: () => ipcRenderer.invoke('dialog:getEndpoint'),
|
||||
getFolder: () => ipcRenderer.invoke('dialog:defaultDirectory'),
|
||||
getFile: (type: string) => ipcRenderer.invoke('dialog:defaultFile', type),
|
||||
getArray: (type: string) => ipcRenderer.invoke('dialog:defaultArray', type),
|
||||
openWindow: (opt: { title: string; url: string; width: number; height: number; backgroundColor: string }) => ipcRenderer.invoke('window:openNewWindow', opt),
|
||||
getUpdateStatus: () => ipcRenderer.invoke('updater:getUpdateStatus'),
|
||||
startUpdateDownload: () => ipcRenderer.invoke('updater:download'),
|
||||
|
Reference in New Issue
Block a user