Merge remote-tracking branch 'origin/develop' into develop

This commit is contained in:
Core 2022-03-24 15:22:21 +00:00
commit d177a1ccc6
No known key found for this signature in database
GPG key ID: FE9BF1B547F8F3C6
29 changed files with 1412 additions and 1128 deletions

View file

@ -76,4 +76,4 @@ jobs:
- run:
name: Publish Release
command: |
gh release create "v${APP_VERSION}" --target ${CIRCLE_SHA1} --title "Cider Version ${APP_VERSION} - Build ${CIRCLE_BUILD_NUM} (${CIRCLE_BRANCH})" --generate-notes -R ciderapp/cider-releases ~/Cider/dist/artifacts/*.deb ~/Cider/dist/artifacts/*.AppImage ~/Cider/dist/artifacts/*.snap ~/Cider/dist/artifacts/*.exe ~/Cider/dist/artifacts/*.yml ~/Cider/dist/artifacts/*.blockmap
gh release create "v${APP_VERSION}.${CIRCLE_BUILD_NUM}" --title "Cider Version ${APP_VERSION} - Build ${CIRCLE_BUILD_NUM} (${CIRCLE_BRANCH})" --generate-notes -R ciderapp/cider-releases ~/Cider/dist/artifacts/*.deb ~/Cider/dist/artifacts/*.AppImage ~/Cider/dist/artifacts/*.snap ~/Cider/dist/artifacts/*.exe ~/Cider/dist/artifacts/*.yml ~/Cider/dist/artifacts/*.blockmap

View file

@ -1,6 +1,6 @@
name: Feature Request
description: Suggest an idea to improve Cider.
title: "[Enhancement]: "
title: "[Feature Request]: "
labels: ["enhancement", "triage"]
assignees: []
body:

View file

@ -29,7 +29,7 @@ if (process.env['CIRCLE_BRANCH'] === 'lts') {
// https://circleci.com/docs/2.0/env-vars/#built-in-environment-variables
var pvers = package.version.split('.')
package.version = `${pvers[0]}.${pvers[1]}.${pvers[2]}-${channel}.${process.env['CIRCLE_BUILD_NUM']}`
package.build.channel = channel
// package.build.channel = channel
package.publish = {
"provider": "github",
"repo": "cider-releases",

View file

@ -174,6 +174,7 @@
"term.plays": "Pways",
"term.topGenres": "Top Genwes",
"term.confirmLogout": "Awe you suwe you want to wogout?",
"term.creditDesignedBy": "Designyed by ${authorUsername}",
"home.title": "Home",
"home.recentlyPlayed": "Wecentwy Pwayed",
"home.recentlyAdded": "Wecentwy Added",
@ -283,6 +284,7 @@
"settings.option.audio.seamlessTransition": "Seamwess Audio Twansition",
"settings.option.audio.enableAdvancedFunctionality": "Enyabwe Advanced Functionyawity",
"settings.option.audio.enableAdvancedFunctionality.description": "Enyabwing AudioContext functionyawity wiww awwow fow extended audio featuwes wike Audio Nyowmawization, Equawizews and Visuawizews - howevew on some systems this may cause stuttewing in audio twacks.",
"settings.warn.audio.enableAdvancedFunctionality.lowcores": "Cidew thinks youw PC cant handwe these featuwes. Awe you suwe you want to continyue?",
"settings.option.audio.audioLab": "Cidew Audio Wab",
"settings.option.audio.audioLab.description": "An assowtment of in-house devewoped audio effects fow Cidew.",
"settings.warn.audioLab.withoutAF": "AudioContext (Advanced Functionyawity) is wequiwed to enyabwe Cidew Audio Wabowatowy.",
@ -301,6 +303,7 @@
"settings.option.audio.enableAdvancedFunctionality.ciderPPEStrength.aggressive": "Aggwessive",
"settings.option.audio.enableAdvancedFunctionality.audioNormalization": "Audio Nyowmawization",
"settings.option.audio.enableAdvancedFunctionality.audioNormalization.description": "Nyowmawizes peak vowume fow individuaw twacks to cweate a mowe unyifowm wistenying expewience.",
"settings.option.audio.enableAdvancedFunctionality.audioNormalization.disabled": "Manyaged by Audio Wab",
"settings.option.audio.enableAdvancedFunctionality.audioSpatialization": "Audio Spatiawization",
"settings.option.audio.enableAdvancedFunctionality.audioSpatialization.description": "Spatiawize audio and make audio mowe 3-dimensionyaw (nyote: This is nyot Dowby Atmos)",
"settings.option.audio.enableAdvancedFunctionality.tunedAudioSpatialization": "Cidew Tunyed Spatiawization",
@ -378,6 +381,8 @@
"settings.option.debug.openAppData": "Open Cidew Fowdew",
"settings.header.experimental": "Expewimentaw",
"settings.header.experimental.description": "Adjust the expewimentaw settings fow Cidew.",
"settings.option.experimental.reinstallwidevine": "Weinstaww WidevinyeCDM",
"settings.option.experimental.reinstallwidevine.confirm": "Awe you suwe you want to weinstaww Widevinye?",
"settings.option.experimental.unknownPlugin": "Unknyown Souwces",
"settings.option.experimental.unknownPlugin.description": "Awwow instawwation of pwugins fwom wepos othew than the Cidew Pwugin Wepositowy",
"settings.option.experimental.compactUI": "Compact UI",
@ -409,5 +414,15 @@
"settings.header.unfinished": "Unfinyished",
"remote.web.title": "Cidew Wemote",
"remote.web.description": "Scan the QW code to paiw youw phonye up with this Cidew instance",
"share.platform.twitter.tweet": "Wisten to {{song}} on Appwe Music.\n\n{{song}}\n\n#AppweMusic #Cidew",
"share.platform.twitter": "Twittew",
"share.platform.facebook": "Facebook",
"share.platform.reddit": "Weddit",
"share.platform.telegram": "Tewegwam",
"share.platform.whatsapp": "WhatsApp",
"share.platform.messenger": "Messengew",
"share.platform.email": "Emaiw",
"share.platform.songLink": "Copy with song.wink",
"share.platform.clipboard": "Copy Wink",
"about.thanks": "Majow thanks to the Cidew Cowwective Team and aww of ouw contwibutows."
}

View file

@ -132,8 +132,8 @@
"term.reset": "Reset",
"term.tracks": "tracks",
"term.track": {
"one" : "track",
"other" : "tracks"
"one": "track",
"other": "tracks"
},
"term.videos": "Videos",
"term.menu": "Menu",
@ -284,6 +284,7 @@
"settings.option.audio.seamlessTransition": "Seamless Audio Transition",
"settings.option.audio.enableAdvancedFunctionality": "Enable Advanced Functionality",
"settings.option.audio.enableAdvancedFunctionality.description": "Enabling AudioContext functionality will allow for extended audio features like Audio Normalization, Equalizers and Visualizers - however on some systems this may cause stuttering in audio tracks.",
"settings.warn.audio.enableAdvancedFunctionality.lowcores": "Cider thinks your PC cant handle these features. Are you sure you want to continue?",
"settings.option.audio.audioLab": "Cider Audio Lab",
"settings.option.audio.audioLab.description": "An assortment of in-house developed audio effects for Cider.",
"settings.warn.audioLab.withoutAF": "AudioContext (Advanced Functionality) is required to enable Cider Audio Laboratory.",
@ -302,6 +303,7 @@
"settings.option.audio.enableAdvancedFunctionality.ciderPPEStrength.aggressive": "Aggressive",
"settings.option.audio.enableAdvancedFunctionality.audioNormalization": "Audio Normalization",
"settings.option.audio.enableAdvancedFunctionality.audioNormalization.description": "Normalizes peak volume for individual tracks to create a more uniform listening experience.",
"settings.option.audio.enableAdvancedFunctionality.audioNormalization.disabled": "Managed by Audio Lab",
"settings.option.audio.enableAdvancedFunctionality.audioSpatialization": "Audio Spatialization",
"settings.option.audio.enableAdvancedFunctionality.audioSpatialization.description": "Spatialize audio and make audio more 3-dimensional (note: This is not Dolby Atmos)",
"settings.option.audio.enableAdvancedFunctionality.tunedAudioSpatialization": "Cider Tuned Spatialization",
@ -379,6 +381,8 @@
"settings.option.debug.openAppData": "Open Cider Folder",
"settings.header.experimental": "Experimental",
"settings.header.experimental.description": "Adjust the experimental settings for Cider.",
"settings.option.experimental.reinstallwidevine": "Reinstall WidevineCDM",
"settings.option.experimental.reinstallwidevine.confirm": "Are you sure you want to reinstall Widevine?",
"settings.option.experimental.unknownPlugin": "Unknown Sources",
"settings.option.experimental.unknownPlugin.description": "Allow installation of plugins from repos other than the Cider Plugin Repository",
"settings.option.experimental.compactUI": "Compact UI",
@ -388,6 +392,7 @@
"settings.option.advanced.playlistTrackMapping.description": "Enables deep scanning of playlists to determine which tracks are in which playlists. Playlist cache build times can increase significantly.",
"settings.option.visual.transparent": "Transparent frame",
"settings.option.visual.transparent.description": "Transparent frame (needs Theme Support , requires relaunch)",
"settings.header.advanced": "Advanced",
"spatial.notTurnedOn": "Audio Spatialization is disabled. To use, please enable it first.",
"spatial.spatialProperties": "Spatial Properties",
"spatial.width": "Width",
@ -410,5 +415,15 @@
"settings.header.unfinished": "Unfinished",
"remote.web.title": "Cider Remote",
"remote.web.description": "Scan the QR code to pair your phone up with this Cider instance",
"share.platform.twitter.tweet": "Listen to {{song}} on Apple Music.\n\n{{url}}\n\n#AppleMusic #Cider",
"share.platform.twitter": "Twitter",
"share.platform.facebook": "Facebook",
"share.platform.reddit": "Reddit",
"share.platform.telegram": "Telegram",
"share.platform.whatsapp": "WhatsApp",
"share.platform.messenger": "Messenger",
"share.platform.email": "Email",
"share.platform.songLink": "Copy with song.link",
"share.platform.clipboard": "Copy Link",
"about.thanks": "Major thanks to the Cider Collective Team and all of our contributors."
}

View file

@ -2,9 +2,9 @@
"i18n.languageName": "Magyar",
"i18n.languageNameEnglish": "Hungarian",
"i18n.category": "main",
"i18n.authors": "@Greenoliv @Amaru @BenjaminStonawski",
"i18n.authors": "@Amaru",
"app.name": "Cider",
"date.format": "${m} ${d}, ${y}",
"date.format": "${y} ${m} ${d}",
"dialog.cancel": "Mégsem",
"dialog.ok": "OK",
"notification.updatingLibrarySongs": "Zenekönyvtár frissítése...",
@ -12,7 +12,7 @@
"notification.updatingLibraryArtists": "Előadók frissítése...",
"term.appleInc": "Apple Inc.",
"term.appleMusic": "Apple Music",
"term.applePodcasts": "Apple Podcastok",
"term.applePodcasts": "Apple Podcasts",
"term.itunes": "iTunes",
"term.github": "GitHub",
"term.discord": "Discord",
@ -23,6 +23,8 @@
"term.about": "Névjegy",
"term.privateSession": "Privát hallgatás",
"term.queue": "Várólista",
"term.lyrics": "Dalszöveg",
"term.miniplayer": "Kis lejátszó",
"term.history": "Előzmények",
"term.search": "Keresés",
"term.library": "Könyvtár",
@ -76,10 +78,10 @@
"term.enabled": "Be",
"term.disabled": "Ki",
"term.connect": "Csatlakoztatás",
"term.connecting": "Csatlakozás",
"term.disconnect": "Lecsatlakozatás",
"term.connecting": "Jóváhagyás ?",
"term.disconnect": "Több",
"term.authed": "Hitelesítve",
"term.confirm": "Jóváhagyja?",
"term.confirm": "Jóváhagyás ?",
"term.more": "Több",
"term.less": "Kevesebb",
"term.showMore": "Mutass többet",
@ -89,12 +91,26 @@
"term.time.added": "Hozzáadva",
"term.time.released": "Kiadva",
"term.time.updated": "Frissítve",
"term.time.days": "nap",
"term.time.day": {
"one": "nap",
"other": "nap"
},
"term.time.hours": "óra",
"term.time.hour": "óra",
"term.time.hour": {
"one": "óra",
"other": "óra"
},
"term.time.minutes": "perc",
"term.time.minute": "perc",
"term.time.minute": {
"one": "perc",
"other": "perc"
},
"term.time.seconds": "másodperc",
"term.time.second": "másodperc",
"term.time.second": {
"one": "másodperc",
"other": "másodperc"
},
"term.fullscreenView": "Teljes képernyős mód",
"term.defaultView": "Alapértelmezett nézet",
"term.audioSettings": "Hangbeállítások",
@ -103,7 +119,7 @@
"term.recentStations": "Nemrég játszott",
"term.language": "Nyelv",
"term.funLanguages": "Fantázianyelvek",
"term.noLyrics": "Betöltés... / Dalszöveg nem található. / Instrumentális.",
"term.noLyrics": "Betöltés... / Dalszöveg nem található / Instrumentális",
"term.copyright": "Szerzői jog",
"term.rightsReserved": "Minden jog fenntartva.",
"term.sponsor": "Támogasd a projektet",
@ -112,13 +128,17 @@
"term.socialTeam": "Közösségi csapat",
"term.socials": "Szociális",
"term.contributors": "Hozzájárulók",
"term.equalizer": "Hangszínszabályozó",
"term.equalizer": "Hangszínszabályzó",
"term.reset": "Visszaállítás",
"term.tracks": "zeneszám",
"term.track": {
"one" : "zeneszám",
"other" : "zeneszám"
},
"term.videos": "Videók",
"term.menu": "Menü",
"term.check": "Ellenőrzés",
"term.aboutArtist": "About {{artistName}}",
"term.aboutArtist": "{{artistName}}-ról/ről",
"term.topResult": "Legjobb találatok",
"term.sharedPlaylists": "Megosztott lejátszási listák",
"term.people": "Profilok",
@ -135,24 +155,26 @@
"term.curators": "Kurátorok",
"term.appleCurators": "Apple Kurátorok",
"term.radioShows": "Rádióadások",
"term.recordLabels": "Record Labels",
"term.recordLabels": "Lemezkiadók",
"term.videoExtras": "Videóextrák",
"term.top": "Top",
"term.version": "Verzió",
"term.noVideos": "Nincs találat.",
"term.noVideos": "Nincs találat",
"term.plugin": "Plug-in",
"term.pluginMenu": "Plug-in Menü",
"term.pluginMenu.none": "Nem találhatóak interaktív pluginok",
"term.replay": "Replay",
"term.uniqueAlbums": "Unique Albums",
"term.uniqueArtists": "Unique Artists",
"term.uniqueSongs": "Unique Songs",
"term.topArtists": "Top Artists",
"term.listenedTo": "Listened to:",
"term.times": "alkalom",
"term.topAlbums": "Top Albums",
"term.plays": "Plays",
"term.topGenres": "Top Genres",
"term.uniqueAlbums": "album",
"term.uniqueArtists": "előadó",
"term.uniqueSongs": "zeneszám",
"term.topArtists": "Leghallgatottabb előadói",
"term.listenedTo": "Meghallgatta:",
"term.times": "alkalommal",
"term.topAlbums": "Leghallgatottabb albumok",
"term.plays": "lejátszás",
"term.topGenres": "Leghallgatottabb műfajok",
"term.confirmLogout": "Biztosan ki szeretnél jelentkezni?",
"term.creditDesignedBy": "Készítette ${authorUsername}",
"home.title": "Kezdőlap",
"home.recentlyPlayed": "Nemrég játszott",
"home.recentlyAdded": "Nemrég hozzáadott",
@ -176,7 +198,7 @@
"action.addToLibrary": "Hozzáadás a Könyvtárhoz",
"action.addToLibrary.success": "Hozzáadva a Könyvtárhoz",
"action.addToLibrary.error": "Hiba a hozzáadáskor.",
"action.removeFromLibrary": "Törlés a Könytárból",
"action.removeFromLibrary": "Törlés a Könyvtárból",
"action.removeFromLibrary.success": "Törölve a Könyvtárból",
"action.addToQueue": "Hozzáadás a várólistához",
"action.addToQueue.success": "Hozzáadva a várólistához",
@ -199,6 +221,8 @@
"action.startRadio": "Állomás létrehozása",
"action.goToArtist": "Előadó megjelenítése",
"action.goToAlbum": "Album megjelenítése",
"action.showInPlaylist": "Lejátszási lista megjelenítése",
"action.showInAppleMusic": "Megjelenítés az Apple Musicban",
"action.moveToTop": "Mozgatás legfelülre",
"action.share": "Megosztás",
"action.rename": "Átnevezés",
@ -207,38 +231,43 @@
"action.dislike": "Kevesebb ilyen javasolása",
"action.undoDislike": "A Kevesebb ilyen javasolása visszavonása",
"action.showWebRemoteQR": "Távirányító",
"action.playTracksNext": "${app.selectedMediaItems.length} zenék lejátszása következőnek",
"action.playTracksLater": "${app.selectedMediaItems.length} zenék lejátszása később",
"action.removeTracks": "${self.selectedItems.length} zenék eltávolítása a várólistáról",
"action.playTracksNext": "${app.selectedMediaItems.length} zene lejátszása következőnek",
"action.playTracksLater": "${app.selectedMediaItems.length} zene lejátszása később",
"action.removeTracks": "${self.selectedItems.length} zene eltávolítása a várólistáról",
"action.import": "Importálás",
"action.export": "Exportálás",
"action.showAlbum": "Teljes album megjelenítése",
"action.tray.minimize": "Kicsinyítés a tálcára",
"action.tray.quit": "Kilépés",
"action.tray.minimize": "Kicsinyítés a Tálcára",
"action.tray.quit": "Bezárás",
"action.tray.show": "Megjelenítés",
"action.update": "Frissítés",
"action.install": "Telepítés",
"action.copy": "Másolás",
"action.newpreset": "Új Preset...",
"action.deletepreset": "Preset törlése",
"action.newpreset": "Új előbeállítás...",
"action.deletepreset": "Előbeállítás törlése",
"action.open": "Megnyitás",
"action.relaunch.confirm": "Biztosan szeretnéd újraindítani a Cidert?",
"settings.header.general": "Általános",
"settings.header.general.description": "A Cider általános beállításainak módosítása.",
"settings.option.general.language": "Nyelv",
"settings.option.general.resumebehavior": "Resume behavior",
"settings.option.general.resumebehavior.description": "Resume behavior affects how Cider will resume your session when you return to the app.",
"settings.option.general.resumebehavior.locally": "Locally",
"settings.option.general.resumebehavior.locally.description": "Cider will resume your last session on this machine.",
"settings.option.general.resumebehavior.history": "History",
"settings.option.general.resumebehavior.history.description": "Cider will queue the last song from your overall Apple Music history, across devices.",
"settings.option.general.resumebehavior": "Folytatási viselkedés",
"settings.option.general.resumebehavior.description": "A folytatási viselkedés a Ciderbe való visszatérésnél történő zene lejátszását változtatja.",
"settings.option.general.resumebehavior.locally": "Lokális",
"settings.option.general.resumebehavior.locally.description": "A Cider az ezen az eszközön utoljára játszott zenét fogja folytatni.",
"settings.option.general.resumebehavior.history": "Előzmények",
"settings.option.general.resumebehavior.history.description": "A Cider az utolsó zeneszámot fogja lekérni az Apple Music előzményeidből, eszközökön keresztül.",
"settings.option.general.language.main": "Nyelvek",
"settings.option.general.language.fun": "Fantázianyelvek",
"settings.option.general.language.unsorted": "Azonosítatlan",
"settings.option.general.language.unsorted": "Kategorizálatlan",
"settings.option.general.updateCider": "Cider frissítése",
"settings.option.general.updateCider.branch": "Verzió kiválasztása",
"settings.option.general.updateCider.branch.description": "Válaszd ki a Cider melyik verziójára szeretnél frissíteni",
"settings.option.general.updateCider.branch.main": "Normál",
"settings.option.general.updateCider.branch.develop": "Fejlesztői",
"settings.notyf.updateCider.update-not-available": "Nem található frissítés",
"settings.notyf.updateCider.update-downloaded": "A frissítés le lett töltve, a telepítéshez indítsa újra az alkalmazást",
"settings.notyf.updateCider.update-error": "Hiba történt a frissítés közben",
"settings.notyf.updateCider.update-timeout": "Időtúllépés történt a frissítés alatt",
"settings.header.audio": "Hang",
"settings.header.audio.description": "A Cider hangbeállításainak módosítása.",
"settings.option.audio.volumeStep": "Hangerő lépték",
@ -248,24 +277,24 @@
"settings.header.audio.quality.hireslossless.description": "max. 24-bit/192 kHz sebességen",
"settings.header.audio.quality.lossless": "Veszteségmentes",
"settings.header.audio.quality.lossless.description": "max. up to 24-bit/48 kHz sebességen",
"settings.header.audio.quality.high": "High",
"settings.header.audio.quality.high": "Magas",
"settings.header.audio.quality.high.description": "256 kbps",
"settings.header.audio.quality.standard": "Standard",
"settings.header.audio.quality.standard": "Normál",
"settings.header.audio.quality.standard.description": "64 kbps",
"settings.option.audio.seamlessTransition": "Szünetmentes lejátszás",
"settings.option.audio.enableAdvancedFunctionality": "Haladó funkcionalitás engedélyezése",
"settings.option.audio.enableAdvancedFunctionality.description": "Az AudioContext funkció engedélyezése lehetővé teszi a fejlettebb hangfunkciókat, például a Normalizásást, az Equalizereket és a Visualizer funkciókat, azonban egyes számítógépeken ez akadozást okozhat a hangsávokban.",
"settings.option.audio.audioLab": "Cider Audio Lab",
"settings.option.audio.audioLab.description": "An assortment of in-house developed audio effects for Cider.",
"settings.warn.audioLab.withoutAF": "AudioContext (Advanced Functionality) is required to enable Cider Audio Laboratory.",
"settings.option.audio.enableAdvancedFunctionality.analogWarmth": "Analog Warmth",
"settings.option.audio.enableAdvancedFunctionality.analogWarmth.description": "Simulates the analog warmth modelled after the Korg Nutube 6P1",
"settings.option.audio.enableAdvancedFunctionality.analogWarmthIntensity": "Analog Warmth intensity",
"settings.option.audio.enableAdvancedFunctionality.analogWarmthIntensity.description": "Changes the intensity of the Analog Warmth Module processing.",
"settings.option.audio.enableAdvancedFunctionality.analogWarmthIntensity.smooth": "Smooth",
"settings.option.audio.enableAdvancedFunctionality.analogWarmthIntensity.warm": "Warm",
"settings.option.audio.enableAdvancedFunctionality.description": "Az AudioContext funkció engedélyezése lehetővé teszi a fejlettebb hangfunkciókat, például a Normalizásást, az Equalizereket és a Visualizer funkciókat, azonban egyes eszközökön ez akadozást okozhat a hangsávokban.",
"settings.option.audio.audioLab": "Cider Hangstúdió",
"settings.option.audio.audioLab.description": "A Ciderhez fejlesztett hangeffektek gyűjteménye.",
"settings.warn.audioLab.withoutAF": "Az AudioContext (Haladó funkcionalitás) szükséges a Cider Hangstúdió engedélyezéséhez.",
"settings.option.audio.enableAdvancedFunctionality.analogWarmth": "Analóg Érzet",
"settings.option.audio.enableAdvancedFunctionality.analogWarmth.description": "A Korg Nutube 6P1 analóg érzetét szimulálja.",
"settings.option.audio.enableAdvancedFunctionality.analogWarmthIntensity": "Analóg Érzet erősség",
"settings.option.audio.enableAdvancedFunctionality.analogWarmthIntensity.description": "Az Analóg Érzet modul hangfeldolgozási erősségét változtatja.",
"settings.option.audio.enableAdvancedFunctionality.analogWarmthIntensity.smooth": "Szokásos",
"settings.option.audio.enableAdvancedFunctionality.analogWarmthIntensity.warm": "Nagyobb",
"settings.option.audio.enableAdvancedFunctionality.ciderPPE": "Cider Adrenaline Processor™",
"settings.option.audio.enableAdvancedFunctionality.ciderPPE.description": "Pszichoakusztikus Módosítások amik minden hangot felerősítenek és ütősebbé tesznek",
"settings.option.audio.enableAdvancedFunctionality.ciderPPE.description": "Pszichoakusztikus Módosítások amik a veszteségmentes hallgatáshoz közeli élményt imitálnak.",
"settings.warn.audio.enableAdvancedFunctionality.ciderPPE.compatibility": "A CAP nem kompatibilis a Térbeli Hanggal. Kapcsold ki a Térbeli Hangot a folytatáshoz.",
"settings.option.audio.enableAdvancedFunctionality.ciderPPEStrength": "CAP Erősség",
"settings.option.audio.enableAdvancedFunctionality.ciderPPEStrength.description": "Megváltoztatja a hangra végzett feldolgozás erősségét. (Az Agresszív mód nemkívánatos eredményeket hozhat!)",
@ -274,13 +303,13 @@
"settings.option.audio.enableAdvancedFunctionality.audioNormalization": "Normalizálás",
"settings.option.audio.enableAdvancedFunctionality.audioNormalization.description": "Normalizálja az egyes zeneszámok hangosabb részeit, hogy egységesebb hallgatási élményt hozzon létre.",
"settings.option.audio.enableAdvancedFunctionality.audioSpatialization": "Térbeli hang",
"settings.option.audio.enableAdvancedFunctionality.audioSpatialization.description": "Térbeli hang és a hang háromdimenziósabbá tétele (Ez nem összekeverendő a Dolby Atmos-szal!)",
"settings.option.audio.enableAdvancedFunctionality.tunedAudioSpatialization": "Cider Tuned Spatialization",
"settings.option.audio.enableAdvancedFunctionality.tunedAudioSpatialization.description": "Pre-tuned Spatializing Effect, disables the customizable settings of Audio Spatialization. Spatialization must be enabled as a prerequisite.",
"settings.option.audio.enableAdvancedFunctionality.tunedAudioSpatialization.profile": "Cider Spatialization Profile",
"settings.option.audio.enableAdvancedFunctionality.tunedAudioSpatialization.profile.description": "Changes the Tuning Profile of the Spatialization. (Requires App Restart)",
"settings.option.audio.enableAdvancedFunctionality.tunedAudioSpatialization.profile.standard": "Standard",
"settings.option.audio.enableAdvancedFunctionality.tunedAudioSpatialization.profile.audiophile": "Audiophile",
"settings.option.audio.enableAdvancedFunctionality.audioSpatialization.description": "A hangzás háromdimenziósabbá tétele (Ez nem összekeverendő a Dolby Atmos-szal!)",
"settings.option.audio.enableAdvancedFunctionality.tunedAudioSpatialization": "Cider Előhangosított Térbeli Hang",
"settings.option.audio.enableAdvancedFunctionality.tunedAudioSpatialization.description": "Előre beállított Térbeli hangzás, ami letiltja a testreszabható Térbeli hang beállításokat. A Térbeli hangot be kell kapcsolni az engedélyezéshez.",
"settings.option.audio.enableAdvancedFunctionality.tunedAudioSpatialization.profile": "Cider Térbeli Hangprofil",
"settings.option.audio.enableAdvancedFunctionality.tunedAudioSpatialization.profile.description": "Megváltoztatja a Térbeli hang előbeállítás profilját. (Újraindítás szükséges)",
"settings.option.audio.enableAdvancedFunctionality.tunedAudioSpatialization.profile.standard": "Normál",
"settings.option.audio.enableAdvancedFunctionality.tunedAudioSpatialization.profile.audiophile": "Professzionális",
"settings.warn.audio.enableAdvancedFunctionality.audioSpatialization.compatibility": "A Térbeli Hang nem kompatibilis a CAP-pal. Kapcsold ki a CAP-ot a folytatáshoz.",
"settings.header.visual": "Vizuális",
"settings.header.visual.description": "A Cider vizuális beállításainak módosítása.",
@ -290,7 +319,7 @@
"settings.header.visual.windowBackgroundStyle.image": "Kép",
"settings.option.visual.animatedArtwork": "Animált borító",
"settings.header.visual.animatedArtwork.always": "Mindig",
"settings.header.visual.animatedArtwork.limited": "Oldalakra és speciális bejegyzésekre korlátozva.",
"settings.header.visual.animatedArtwork.limited": "Oldalakra és speciális bejegyzésekre korlátozva",
"settings.header.visual.animatedArtwork.disable": "Kikapcsolás mindenhol",
"settings.option.visual.animatedArtworkQuality": "Animált borító minősége",
"settings.header.visual.animatedArtworkQuality.low": "Alacsony",
@ -307,13 +336,26 @@
"settings.option.visual.theme.github.download": "Telepítés GitHub URL-ről",
"settings.option.visual.theme.github.explore": "Témaáruház",
"settings.header.visual.theme.github.page": "Témák a GitHub-ról",
"settings.option.visual.theme.github.install.confirm": "Biztos, hogy szeretnéd telepíteni a(z) {{ repo }} témát?",
"settings.option.visual.theme.github.install.confirm": "Biztosan szeretnéd telepíteni a(z) {{ repo }} témát?",
"settings.prompt.visual.theme.github.URL": "Add meg a telepítendő téma URL-jét",
"settings.notyf.visual.theme.install.success": "Téma sikeresen telepítve",
"settings.notyf.visual.theme.install.error": "Sikertelen volt a téma telepítése",
"settings.header.visual.plugin": "Plugin",
"settings.option.visual.plugin.github.download": "Telepítés GitHub URL-ről",
"settings.option.visual.plugin.github.explore": "Témaáruház",
"settings.header.visual.plugin.github.page": "Témák a GitHub-ról",
"settings.option.visual.plugin.github.install.confirm": "Biztosan szeretnéd telepíteni a(z) {{ repo }} témát?",
"settings.prompt.visual.plugin.github.URL": "Add meg a telepítendő téma URL-jét",
"settings.prompt.visual.plugin.github.success": "Plugin sikeresen telepítve, kattints az OK-ra a Cider újraindításához",
"settings.notyf.visual.plugin.install.success": "Plugin sikeresen telepítve",
"settings.notyf.visual.plugin.install.error": "Sikertelen volt a plugin telepítése",
"settings.option.visual.theme.default": "Cider",
"settings.option.visual.theme.dark": "Sötét",
"settings.option.visual.showPersonalInfo": "Személyes adatok mutatása",
"settings.header.window": "Ablak",
"settings.header.window.description": "A Cider ablakbeállításainak módosítása.",
"settings.option.window.openOnStartup": "Cider megnyitása bejelentkezésnél",
"settings.option.window.openOnStartup.hidden": "Megnyitás kis méretben",
"settings.header.lyrics": "Dalszöveg",
"settings.header.lyrics.description": "A Cider dalszöveg beállításainak módosítása.",
"settings.option.lyrics.enableMusixmatch": "MusixMatch dalszövegek engedélyezése",
@ -323,31 +365,35 @@
"settings.header.connectivity": "Csatlakozások",
"settings.header.connectivity.description": "A Cider csatlakozás beállításainak módosítása.",
"settings.option.connectivity.discordRPC": "Discord Rich Presence",
"settings.option.connectivity.playbackNotifications": "Lejátszás értesítések",
"settings.option.connectivity.playbackNotifications": "Lejátszási értesítések",
"settings.header.connectivity.discordRPC.cider": "Megjelenítés 'Cider'-ként",
"settings.header.connectivity.discordRPC.appleMusic": "Megjelenítés 'Apple Music'-ként",
"settings.option.connectivity.discordRPC.clearOnPause": "Discord Rich Presence törlése megállításnál",
"settings.option.connectivity.lastfmScrobble": "LastFM Scrobbling",
"settings.option.connectivity.lastfmScrobble.delay": "LastFM Scrobble Késleltetés (%)",
"settings.option.connectivity.lastfmScrobble.nowPlaying": "LastFM Now Playing engedélyezése",
"settings.option.connectivity.lastfmScrobble.removeFeatured": "Remove featuring artists from song title (LastFM)",
"settings.option.connectivity.lastfmScrobble.filterLoop": "Loopolt zeneszám szűrése (LastFM)",
"settings.header.debug": "Hibakeresés",
"settings.option.connectivity.lastfmScrobble": "Last.fm Scrobbling",
"settings.option.connectivity.lastfmScrobble.delay": "Last.fm Scrobble késleltetés (%)",
"settings.option.connectivity.lastfmScrobble.nowPlaying": "Last.fm Now Playing engedélyezése",
"settings.option.connectivity.lastfmScrobble.removeFeatured": "Közreműködő zenészek eltávolítása a címből (Last.fm)",
"settings.option.connectivity.lastfmScrobble.filterLoop": "Ismételt zeneszám szűrése (Last.fm)",
"settings.header.debug": "Hibaelhárítás",
"settings.option.debug.copy_log": "Napló másolása a vágólapra",
"settings.option.debug.openAppData": "Cider mappa megnyitása",
"settings.header.experimental": "Kísérleti",
"settings.header.experimental.description": "A Cider kísérleti beállításainak módosítása.",
"settings.option.experimental.unknownPlugin": "Unknown Sources",
"settings.option.experimental.unknownPlugin.description": "Allow installion of plugins from repos other than the Cider Plugin Repository",
"settings.option.experimental.unknownPlugin": "Ismeretlen források",
"settings.option.experimental.unknownPlugin.description": "Engedélyezi azon pluginok telepítését is, amik nem tartoznak a Cider Plugin Gyűjteménybe, ezáltal lehetséges biztonsági kockázatot jelentenek",
"settings.option.experimental.compactUI": "Kompakt felület",
"settings.option.window.close_button_hide": "A bezárás gomb rejtse el az alkalmazást",
"settings.option.experimental.inline_playlists": "Inline Playlists and Albums",
"spatial.notTurnedOn": "A térbeli hangzás ki van kapcsolva, használatához kapcsolja be.",
"settings.option.experimental.inline_playlists": "Ablakon belüli lejátszási listák és albumok",
"settings.option.advanced.playlistTrackMapping": "Lejátszási lista feltérképezés",
"settings.option.advanced.playlistTrackMapping.description": "Engedélyezi a lejátszási listák mély beolvasását, ami meg tudja határozni, hogy egy zeneszám melyik lejátszási listákba található. A lejátszási lista gyorsítótár felépítésének időtartalma nagy mértékben megnőhet.",
"settings.option.visual.transparent": "Átlátszó keret",
"settings.option.visual.transparent.description": "Átlátszó ablakkeret (a Témák támogatása és újraindítás szükséges)",
"spatial.notTurnedOn": "A térbeli hang ki van kapcsolva, használatához kapcsolja be.",
"spatial.spatialProperties": "Térbeli hang",
"spatial.width": "Szélesség",
"spatial.height": "Magasság",
"spatial.depth": "Hosszúság",
"spatial.gain": "Gain",
"spatial.gain": "Növelés",
"spatial.roomMaterials": "Szoba felépítése",
"spatial.roomDimensions": "Szoba méretei",
"spatial.roomPositions": "Szoba pozíciói",
@ -362,7 +408,17 @@
"spatial.listener": "Hallgató",
"spatial.audioSource": "Hangforrás",
"settings.header.unfinished": "Befejezetlen",
"remote.web.title": "Cider Remote",
"remote.web.description": "Olvasd be ezt a QR-kódot a telefonoddal, hogy tudd vezérelni a lejátszót.",
"remote.web.title": "Távirányító",
"remote.web.description": "Olvasd be ezt a QR-kódot a telefonoddal, hogy vezérelni tudd a lejátszót.",
"share.platform.twitter.tweet": "Hallgasd meg a(z) {{song}} zenét az Apple Musicon.\n\n{{url}}\n\n#AppleMusic #Cider",
"share.platform.twitter": "Twitter",
"share.platform.facebook": "Facebook",
"share.platform.reddit": "Reddit",
"share.platform.telegram": "Telegram",
"share.platform.whatsapp": "WhatsApp",
"share.platform.messenger": "Messenger",
"share.platform.email": "Email",
"share.platform.songLink": "song.link URL másolása",
"share.platform.clipboard": "Link másolása",
"about.thanks": "Köszönet a Cider Collective csapatának és minden hozzájárulónak."
}

View file

@ -23,6 +23,8 @@
"term.about": "Tentang",
"term.privateSession": "Sesi Pribadi",
"term.queue": "Antrian",
"term.lyrics": "Lirik",
"term.miniplayer": "Pemutar Kecil",
"term.history": "Riwayat",
"term.search": "Cari",
"term.library": "Pustaka",
@ -61,6 +63,7 @@
"term.sortBy.genre": "Genre",
"term.sortBy.releaseDate": "Tanggal Rilis",
"term.sortBy.duration": "Durasi",
"term.sortBy.dateAdded": "Tanggal Ditambahkan",
"term.sortOrder": "A-Z",
"term.sortOrder.ascending": "Terkecil",
"term.sortOrder.descending": "Terbesar",
@ -84,19 +87,34 @@
"term.showMore": "Tampilkan lebih banyak",
"term.showLess": "Tampilkan lebih sedikit",
"term.topSongs": "Lagu Teratas",
"term.latestReleases": "Rilis Terbaru",
"term.latestReleases": "Rilisan Terbaru",
"term.time.added": "Ditambahkan",
"term.time.released": "Dirilis",
"term.time.updated": "Diperbarui",
"term.time.days": "hari",
"term.time.day": {
"one": "hari",
"other": "hari"
},
"term.time.hours": "jam",
"term.time.hour": "jam",
"term.time.hour": {
"one": "jam",
"other": "jam"
},
"term.time.minutes": "menit",
"term.time.minute": "menit",
"term.time.minute": {
"one": "menit",
"other": "menit"
},
"term.time.seconds": "detik",
"term.time.second": "detik",
"term.time.second": {
"one": "detik",
"other": "detik"
},
"term.fullscreenView": "Mode Layar Penuh",
"term.defaultView": "Mode Default",
"term.audioSettings": "Pengaturan Audio",
"term.audioControls": "Kontrol Volume",
"term.clearAll": "Bersihkan Semua",
"term.recentStations": "Stasiun Terbaru",
"term.language": "Bahasa",
@ -113,6 +131,10 @@
"term.equalizer": "Equalizer",
"term.reset": "Atur Ulang",
"term.tracks": "lagu",
"term.track": {
"one" : "lagu",
"other" : "lagu"
},
"term.videos": "Video",
"term.menu": "Menu",
"term.check": "Cek",
@ -124,6 +146,10 @@
"term.addedpreset": "Preset Ditambahkan",
"term.deletepreset.warn": "Yakin ingin menghapus preset ini?",
"term.deletedpreset": "Preset dihapus",
"term.defaultPresets": "Preset Default",
"term.userPresets": "Presets Pengguna",
"term.requestError": "Ada masalah dengan permintaan.",
"term.song.link.generate": "Mendapatkan link bagi song.link...",
"term.musicVideos": "Video Musik",
"term.stations": "Stasiun",
"term.curators": "Kurator",
@ -132,6 +158,23 @@
"term.recordLabels": "Label Rekaman",
"term.videoExtras": "Bonus Video",
"term.top": "Atas",
"term.version": "Versi",
"term.noVideos": "Video tidak ditemukan.",
"term.plugin": "Plug-in",
"term.pluginMenu": "Menu Plug-in",
"term.pluginMenu.none": "Tidak ada plugin interaktif",
"term.replay": "Ulangi",
"term.uniqueAlbums": "Album Spesial",
"term.uniqueArtists": "Artis Spesial",
"term.uniqueSongs": "Lagu Spesial",
"term.topArtists": "Artis Teratas",
"term.listenedTo": "Mendengarkan:",
"term.times": "kali",
"term.topAlbums": "Album Teratas",
"term.plays": "Dimainkan",
"term.topGenres": "Genre Teratas",
"term.confirmLogout": "Apakah Anda yakin ingin keluar??",
"term.creditDesignedBy": "Dirancang oleh ${authorUsername}",
"home.title": "Beranda",
"home.recentlyPlayed": "Baru Dimainkan",
"home.recentlyAdded": "Baru Ditambahkan",
@ -178,7 +221,9 @@
"action.startRadio": "Mulai Radio",
"action.goToArtist": "Lihat Halaman Artis",
"action.goToAlbum": "Lihat Halaman Album",
"action.moveToTop": "Pindah ke Atas",
"action.showInPlaylist": "Tampilkan di Playlist",
"action.showInAppleMusic": "Tampilkan di Apple Music",
"action.moveToTop": "Keluar dari Folder",
"action.share": "Bagikan",
"action.rename": "Ubah Nama",
"action.love": "Suka",
@ -196,12 +241,21 @@
"action.tray.quit": "Keluar",
"action.tray.show": "Tampilkan",
"action.update": "Perbarui",
"action.install": "Pasang",
"action.copy": "Salin",
"action.newpreset": "Preset Baru...",
"action.deletepreset": "Hapus Preset",
"action.open": "Buka",
"action.relaunch.confirm": "Apakah Anda ingin memulai ulang Cider?",
"settings.header.general": "Umum",
"settings.header.general.description": "Sesuaikan pengaturan umum untuk Cider.",
"settings.option.general.language": "Bahasa",
"settings.option.general.resumebehavior": "Aturan Resume",
"settings.option.general.resumebehavior.description": "Aturan resume akan mempengaruhi bagaimana Cider akan melanjutkan sesi Anda ketika memulai Cider.",
"settings.option.general.resumebehavior.locally": "Lokal",
"settings.option.general.resumebehavior.locally.description": "Cider akan melanjutkan sesi terakhir Anda di perangkat ini.",
"settings.option.general.resumebehavior.history": "Riwayat",
"settings.option.general.resumebehavior.history.description": "Cider akan menambahkan lagu terakhir dari keseluruhan riwayat Apple Music Anda ke dalam antrian di seluruh perangkat.",
"settings.option.general.language.main": "Bahasa",
"settings.option.general.language.fun": "Bahasa Candaan",
"settings.option.general.language.unsorted": "Tidak disortir",
@ -210,8 +264,14 @@
"settings.option.general.updateCider.branch.description": "Pilih branch untuk memperbarui Cider",
"settings.option.general.updateCider.branch.main": "Stable",
"settings.option.general.updateCider.branch.develop": "Development",
"settings.notyf.updateCider.update-not-available": "Tidak ada pembaruan tersedia",
"settings.notyf.updateCider.update-downloaded": "Pembaruan sudah didownload, mulai ulang untuk menginstall pembaruan",
"settings.notyf.updateCider.update-error": "Terjadi kesalahan saat memperbarui Cider",
"settings.notyf.updateCider.update-timeout": "Waktu pembaruan habis",
"settings.header.audio": "Audio",
"settings.header.audio.description": "Sesuaikan pengaturan audio untuk Cider.",
"settings.option.audio.volumeStep": "Jangkah Volume",
"settings.option.audio.maxVolume": "Volume Maksimal",
"settings.option.audio.quality": "Kualitas Audio",
"settings.header.audio.quality.hireslossless": "Hi-Res Lossless",
"settings.header.audio.quality.hireslossless.description": "sampai dari 24-bit/192 kHz",
@ -224,16 +284,34 @@
"settings.option.audio.seamlessTransition": "Transisi Audio Mulus",
"settings.option.audio.enableAdvancedFunctionality": "Aktifkan Fungsi Lanjutan",
"settings.option.audio.enableAdvancedFunctionality.description": "Mengaktifkan fungsionalitas AudioContext memungkinkan fitur audio lanjutan seperti Normalisasi Audio, Equalizer dan Visualizer. Namun pada beberapa perangkat dapat menyebabkan tersendatnya audio.",
"settings.option.audio.audioLab": "Lab Audio Cider",
"settings.option.audio.audioLab.description": "Macam-macam efek audio yang dikembangkan sendiri untuk Cider.",
"settings.warn.audioLab.withoutAF": "AudioContext (Fungsi Lanjutan) perlu diaktifkan untuk menggunakan Lab Audio Cider.",
"settings.option.audio.enableAdvancedFunctionality.analogWarmth": "Analog Warmth",
"settings.option.audio.enableAdvancedFunctionality.analogWarmth.description": "Mensimulasikan kehangatan analog yang dimodelkan setelah Korg Nutube 6P1",
"settings.option.audio.enableAdvancedFunctionality.analogWarmthIntensity": "Analog Warmth intensity",
"settings.option.audio.enableAdvancedFunctionality.analogWarmthIntensity.description": "Mengubah intensitas pemrosesan modul Analog Warmth.",
"settings.option.audio.enableAdvancedFunctionality.analogWarmthIntensity.smooth": "Halus",
"settings.option.audio.enableAdvancedFunctionality.analogWarmthIntensity.warm": "Hangat",
"settings.option.audio.enableAdvancedFunctionality.ciderPPE": "Cider Adrenaline Processor™",
"settings.option.audio.enableAdvancedFunctionality.ciderPPE.description": "Peningkatan Psikoakustik yang membuat semuanya terdengar lebih jelas dan lebih hidup.",
"settings.warn.audio.enableAdvancedFunctionality.ciderPPE.compatibility": "CAP tidak cocok dengan Spatialisasi. Matikan Spasialisasi untuk menggunakan.",
"settings.option.audio.enableAdvancedFunctionality.ciderPPEStrength": "Kekuatan CAP",
"settings.option.audio.enableAdvancedFunctionality.ciderPPEStrength.description": "Mengubah kekuatan pemrosesan yang dilakukan pada audio. (Agresif dapat menghasilkan hasil yang tidak diinginkan)",
"settings.option.audio.enableAdvancedFunctionality.ciderPPEStrength.standard": "Standar",
"settings.option.audio.enableAdvancedFunctionality.ciderPPEStrength.aggressive": "Agresif",
"settings.option.audio.enableAdvancedFunctionality.audioNormalization": "Normalisasi Audio",
"settings.option.audio.enableAdvancedFunctionality.audioNormalization.description": "Menormalkan puncak volume untuk masing-masing lagu demi menciptakan pengalaman mendengarkan yang lebih seragam.",
"settings.option.audio.enableAdvancedFunctionality.audioNormalization.disabled": "Diatar oleh Lab Audio",
"settings.option.audio.enableAdvancedFunctionality.audioSpatialization": "Spasialisasi Audio",
"settings.option.audio.enableAdvancedFunctionality.audioSpatialization.description": "Atur ruang audio dan buat audio lebih 3 dimensi (NB: Bukan Dolby Atmos)",
"settings.option.audio.enableAdvancedFunctionality.tunedAudioSpatialization": "Spasialisasi oleh Cider",
"settings.option.audio.enableAdvancedFunctionality.tunedAudioSpatialization.description": "Efek Spasialisasi yang sudah diatur. Untuk menggunakannya, matikan pengaturan custom Spasialisasi Audio dan pastikan Spasialisasi Audio sudah aktif.",
"settings.option.audio.enableAdvancedFunctionality.tunedAudioSpatialization.profile": "Profil Spasialisasi Cider",
"settings.option.audio.enableAdvancedFunctionality.tunedAudioSpatialization.profile.description": "Mengubah Profil Tuning Spasialisasi. (Memerlukan Restart Aplikasi)",
"settings.option.audio.enableAdvancedFunctionality.tunedAudioSpatialization.profile.standard": "Standar",
"settings.option.audio.enableAdvancedFunctionality.tunedAudioSpatialization.profile.audiophile": "Audiophile",
"settings.warn.audio.enableAdvancedFunctionality.audioSpatialization.compatibility": "Spatialization tidak cocok dengan CAP. Matikan CAP untuk menggunakan.",
"settings.header.visual": "Visual",
"settings.header.visual.description": "Sesuaikan pengaturan visual untuk Cider.",
"settings.option.visual.windowBackgroundStyle": "Gaya Latar Belakang Jendela",
@ -256,10 +334,30 @@
"settings.header.visual.hardwareAcceleration.default": "Default",
"settings.header.visual.hardwareAcceleration.webGPU": "WebGPU",
"settings.header.visual.theme": "Tema",
"settings.option.visual.theme.github.download": "Pasang dari URL GitHub",
"settings.option.visual.theme.github.explore": "Jelajahi Tema di GitHub",
"settings.header.visual.theme.github.page": "Tema dari GitHub",
"settings.option.visual.theme.github.install.confirm": "Apakah anda yakin untuk memasang {{ repo }}?",
"settings.prompt.visual.theme.github.URL": "Masukan URL tema yang ingin Anda pasang",
"settings.notyf.visual.theme.install.success": "Tema berhasil dipasang",
"settings.notyf.visual.theme.install.error": "Pemasangan tema gagal",
"settings.header.visual.plugin": "Plugin",
"settings.option.visual.plugin.github.download": "Pasang dari URL GitHub",
"settings.option.visual.plugin.github.explore": "Jelajahi Plugin di GitHub",
"settings.header.visual.plugin.github.page": "Plugins from GitHub",
"settings.option.visual.plugin.github.install.confirm": "Apakah anda yakin untuk memasang {{ repo }}?",
"settings.prompt.visual.plugin.github.URL": "Masukan URL plugin yang ingin Anda pasang",
"settings.prompt.visual.plugin.github.success": "Plugin berhasil dipasang, Tekan OK untuk memulai ulang Cider",
"settings.notyf.visual.plugin.install.success": "Plugin berhasil dipasang",
"settings.notyf.visual.plugin.install.error": "Plugin gagal dipasang",
"settings.option.visual.theme.default": "Cider",
"settings.option.visual.theme.dark": "Gelap",
"settings.option.visual.showPersonalInfo": "Tampilkan Info Pribadi",
"settings.header.lyrics": "Lyrics",
"settings.header.window": "Jendela",
"settings.header.window.description": "Atur pengaturan jendela pada Cider.",
"settings.option.window.openOnStartup": "Buka Cider Ketika Perangkat Dinyalakan",
"settings.option.window.openOnStartup.hidden": "Buka dalam mode tersembunyi",
"settings.header.lyrics": "Lirik",
"settings.header.lyrics.description": "Sesuaikan pengaturan lirik untuk Cider.",
"settings.option.lyrics.enableMusixmatch": "Aktifkan Lirik Musixmatch",
"settings.option.lyrics.enableMusixmatchKaraoke": "Aktifkan Mode Karaoke (khusus Musixmatch)",
@ -271,18 +369,26 @@
"settings.option.connectivity.playbackNotifications": "Pemberitahuan Pemutaran",
"settings.header.connectivity.discordRPC.cider": "Tampilkan sebagai 'Cider'",
"settings.header.connectivity.discordRPC.appleMusic": "Tampilkan sebagai 'Apple Music'",
"settings.option.connectivity.discordRPC.clearOnPause": "Sembunyikan Discord Rich Presence saat dijeda",
"settings.option.connectivity.discordRPC.clearOnPause": "Sembunyikan Discord Rich Presence Saat Dijeda",
"settings.option.connectivity.lastfmScrobble": "Last.fm Scrobbling",
"settings.option.connectivity.lastfmScrobble.delay": "Delay Last.fm Scrobble (%)",
"settings.option.connectivity.lastfmScrobble.nowPlaying": "Aktifkan Last.fm Now Playing",
"settings.option.connectivity.lastfmScrobble.removeFeatured": "Hapus featuring artist dari judul lagu (Last.fm)",
"settings.option.connectivity.lastfmScrobble.filterLoop": "Filter lagu yang diulang (Last.fm)",
"settings.header.debug": "Debug",
"settings.option.debug.copy_log": "Salin logs ke clipboard",
"settings.option.debug.openAppData": "Buka Folder Cider",
"settings.header.experimental": "Eksperimental",
"settings.header.experimental.description": "Sesuaikan pengaturan eksperimental untuk Cider.",
"settings.option.experimental.unknownPlugin": "Sumber Tidak Diketahui",
"settings.option.experimental.unknownPlugin.description": "Izinkan pemasangan plugin dari repo selain Cider Plugin Repository",
"settings.option.experimental.compactUI": "UI Kompak",
"settings.option.window.close_button_hide": "Tombol Tutup Menyembunyikan Aplikasi",
"settings.option.experimental.copy_log": "Salin log ke clipboard",
"settings.option.experimental.inline_playlists": "Playlist dan Album Sebaris",
"settings.option.advanced.playlistTrackMapping": "Pemetaan Lagu Playlist",
"settings.option.advanced.playlistTrackMapping.description": "Mengaktifkan pemindaian daftar putar yang mendalam untuk menentukan trek mana yang ada di daftar putar. Waktu pembuatan cache daftar putar dapat meningkat secara signifikan.",
"settings.option.visual.transparent": "Frame transparan",
"settings.option.visual.transparent.description": "Frame transparan (membutuhkan tema yang mendukung, membutuhkan dibuka ulang)",
"spatial.notTurnedOn": "Spasialisasi Audio dinonaktifkan. Untuk menggunakan, aktifkan terlebih dahulu.",
"spatial.spatialProperties": "Spatial Properties",
"spatial.width": "Lebar",
@ -306,4 +412,4 @@
"remote.web.title": "Remote Cider",
"remote.web.description": "Pindai kode QR untuk memasangkan ponsel Anda dengan Cider.",
"about.thanks": "Terima kasih yang sebesar-besarnya kepada Cider Collective Team dan semua kontributor kami."
}
}

View file

@ -132,8 +132,8 @@
"term.reset": "Reset",
"term.tracks": "tracks",
"term.track": {
"one" : "track",
"other" : "tracks"
"one": "track",
"other": "tracks"
},
"term.videos": "Videos",
"term.menu": "Menu",
@ -284,6 +284,7 @@
"settings.option.audio.seamlessTransition": "Seamless Audio Transition",
"settings.option.audio.enableAdvancedFunctionality": "Enable Advanced Functionality",
"settings.option.audio.enableAdvancedFunctionality.description": "Enabling AudioContext functionality will allow for extended audio features like Audio Normalization, Equalizers and Visualizers - however on some systems this may cause stuttering in audio tracks.",
"settings.warn.audio.enableAdvancedFunctionality.lowcores": "Cider thinks your PC cant handle these features. Are you sure you want to continue?",
"settings.option.audio.audioLab": "Cider Audio Lab",
"settings.option.audio.audioLab.description": "An assortment of in-house developed audio effects for Cider.",
"settings.warn.audioLab.withoutAF": "AudioContext (Advanced Functionality) is required to enable Cider Audio Laboratory.",
@ -302,6 +303,7 @@
"settings.option.audio.enableAdvancedFunctionality.ciderPPEStrength.aggressive": "Aggressive",
"settings.option.audio.enableAdvancedFunctionality.audioNormalization": "Audio Normalization",
"settings.option.audio.enableAdvancedFunctionality.audioNormalization.description": "Normalizes peak volume for individual tracks to create a more uniform listening experience.",
"settings.option.audio.enableAdvancedFunctionality.audioNormalization.disabled": "Managed by Audio Lab",
"settings.option.audio.enableAdvancedFunctionality.audioSpatialization": "Audio Spatialization",
"settings.option.audio.enableAdvancedFunctionality.audioSpatialization.description": "Spatialize audio and make audio more 3-dimensional (note: This is not Dolby Atmos)",
"settings.option.audio.enableAdvancedFunctionality.tunedAudioSpatialization": "Cider Tuned Spatialization",
@ -379,6 +381,8 @@
"settings.option.debug.openAppData": "Open Cider Folder",
"settings.header.experimental": "Experimental",
"settings.header.experimental.description": "Adjust the experimental settings for Cider.",
"settings.option.experimental.reinstallwidevine": "Reinstall WidevineCDM",
"settings.option.experimental.reinstallwidevine.confirm": "Are you sure you want to reinstall Widevine?",
"settings.option.experimental.unknownPlugin": "Unknown Sources",
"settings.option.experimental.unknownPlugin.description": "Allow installation of plugins from repos other than the Cider Plugin Repository",
"settings.option.experimental.compactUI": "Compact UI",
@ -388,6 +392,7 @@
"settings.option.advanced.playlistTrackMapping.description": "Enables deep scanning of playlists to determine which tracks are in which playlists. Playlist cache build times can increase significantly.",
"settings.option.visual.transparent": "Transparent frame",
"settings.option.visual.transparent.description": "Transparent frame (needs Theme Support , requires relaunch)",
"settings.header.advanced": "Advanced",
"spatial.notTurnedOn": "Audio Spatialization is disabled. To use, please enable it first.",
"spatial.spatialProperties": "Spatial Properties",
"spatial.width": "Width",

View file

@ -22,6 +22,8 @@
"term.about": "關於",
"term.privateSession": "私人時段",
"term.queue": "待播清單",
"term.lyrics": "歌詞",
"term.miniplayer": "迷你播放模式",
"term.history": "播放歷史",
"term.search": "搜尋",
"term.library": "資料庫",
@ -125,6 +127,7 @@
"term.requestError": "請求發生錯誤。",
"term.song.link.generate": "正在取得 song.link 的分享網址...",
"term.version": "版本",
"term.creditDesignedBy": "由 ${authorUsername} 設計",
"home.title": "首頁",
"home.recentlyPlayed": "最近播放",
"home.recentlyAdded": "最近加入",
@ -170,6 +173,7 @@
"action.startRadio": "建立電台",
"action.goToArtist": "前往藝人",
"action.goToAlbum": "前往專輯",
"action.showInAppleMusic": "在 Apple Music 中顯示",
"action.moveToTop": "移至頂端",
"action.share": "分享歌曲",
"action.rename": "重新命名",
@ -299,9 +303,9 @@
"settings.header.lyrics": "歌詞",
"settings.header.lyrics.description": "調整 Cider 的歌詞設定",
"settings.option.lyrics.enableMusixmatch": "開啟 Musixmatch 歌詞",
"settings.option.lyrics.enableMusixmatchKaraoke": "開啟K歌模式僅限Musixmatch",
"settings.option.lyrics.enableMusixmatchKaraoke": "開啟K歌模式僅限 Musixmatch",
"settings.option.lyrics.musixmatchPreferredLanguage": "Musixmatch 歌詞語言偏好",
"settings.option.lyrics.enableYoutubeLyrics": "播放 MV 時使用 YouTube 歌詞",
"settings.option.lyrics.enableYoutubeLyrics": "播放 MV 時使用 YouTube 歌詞",
"settings.header.connectivity": "外部連接",
"settings.header.connectivity.description": "調整 Cider 與外部的連接",
"settings.option.connectivity.discordRPC": "Discord 動態",

View file

@ -1005,10 +1005,27 @@ export class BrowserWindow {
return Math.max(-32768, Math.min(32768, v)); // clamp
}
function bitratechange(e: any){
var t = e.length;
let sampleRate = 96.0;
let outputSampleRate = 48.0;
var s = 0,
o = sampleRate / outputSampleRate,
u = Math.ceil(t * outputSampleRate / sampleRate),
a = new Int16Array(u);
for (let i = 0; i < u; i++) {
a[i] = e[Math.floor(s)];
s += o;
}
return a;
}
let newaudio = quantization(leftpcm, rightpcm);
//let newaudio = [leftpcm, rightpcm];
// console.log(newaudio.length);
let pcmData = Buffer.from(new Int8Array(interleave16(Int16Array.from(newaudio[0], x => convert(x)), Int16Array.from(newaudio[1], x => convert(x))).buffer));
let pcmData = Buffer.from(new Int8Array(interleave16(bitratechange(Int16Array.from(newaudio[0], x => convert(x))), bitratechange(Int16Array.from(newaudio[1], x => convert(x)))).buffer));
if (!this.headerSent) {
console.log('new header')

View file

@ -149,6 +149,12 @@ export default class Thumbar {
label: 'Volume Down',
accelerator: 'CommandOrControl+Down',
click: () => this._win.webContents.executeJavaScript(`app.volumeDown()`)
},
{type: 'separator'},
{
label: 'Cast To Devices',
accelerator: 'CommandOrControl+Shift+C',
click: () => this._win.webContents.executeJavaScript(`app.modals.castMenu = true`)
}
]
},

View file

@ -45,7 +45,7 @@ const CiderAudio = {
},
connectContext: function (mediaElem) {
if (!CiderAudio.context) {
CiderAudio.context = new (window.AudioContext || window.webkitAudioContext);
CiderAudio.context = new window.AudioContext({sampleRate: 96000}); // Don't ever remove the sample rate arg. Ask Maikiwi.
}
if (!CiderAudio.source) {
CiderAudio.source = CiderAudio.context.createMediaElementSource(mediaElem);
@ -311,7 +311,7 @@ const CiderAudio = {
for (let i = 0; i < WARMTH_FREQUENCIES.length; i++) {
CiderAudio.audioNodes.analogWarmth[i] = CiderAudio.context.createBiquadFilter();
CiderAudio.audioNodes.analogWarmth[i].type = 'peaking'; // 'peaking';
CiderAudio.audioNodes.analogWarmth[i].frequency.value = WARMTH_FREQUENCIES[i];
CiderAudio.audioNodes.analogWarmth[i].frequency.value = WARMTH_FREQUENCIES[i] ;
CiderAudio.audioNodes.analogWarmth[i].Q.value = WARMTH_Q[i];
CiderAudio.audioNodes.analogWarmth[i].gain.value = WARMTH_GAIN[i] * 1.25;
}
@ -321,7 +321,7 @@ const CiderAudio = {
for (let i = 0; i < WARMTH_FREQUENCIES.length; i++) {
CiderAudio.audioNodes.analogWarmth[i] = CiderAudio.context.createBiquadFilter();
CiderAudio.audioNodes.analogWarmth[i].type = 'peaking'; // 'peaking';
CiderAudio.audioNodes.analogWarmth[i].frequency.value = WARMTH_FREQUENCIES[i];
CiderAudio.audioNodes.analogWarmth[i].frequency.value = WARMTH_FREQUENCIES[i] ;
CiderAudio.audioNodes.analogWarmth[i].Q.value = WARMTH_Q[i];
CiderAudio.audioNodes.analogWarmth[i].gain.value = WARMTH_GAIN[i] * 1.75;
}
@ -331,7 +331,7 @@ const CiderAudio = {
for (let i = 0; i < WARMTH_FREQUENCIES.length; i++) {
CiderAudio.audioNodes.analogWarmth[i] = CiderAudio.context.createBiquadFilter();
CiderAudio.audioNodes.analogWarmth[i].type = 'peaking'; // 'peaking';
CiderAudio.audioNodes.analogWarmth[i].frequency.value = WARMTH_FREQUENCIES[i];
CiderAudio.audioNodes.analogWarmth[i].frequency.value = WARMTH_FREQUENCIES[i] ;
CiderAudio.audioNodes.analogWarmth[i].Q.value = WARMTH_Q[i];
CiderAudio.audioNodes.analogWarmth[i].gain.value = WARMTH_GAIN[i] * 1.25;
}
@ -407,7 +407,7 @@ const CiderAudio = {
for (let i = 0; i < LLPW_FREQUENCIES.length; i++) {
CiderAudio.audioNodes.llpw[i] = CiderAudio.context.createBiquadFilter();
CiderAudio.audioNodes.llpw[i].type = 'peaking'; // 'peaking';
CiderAudio.audioNodes.llpw[i].frequency.value = LLPW_FREQUENCIES[i];
CiderAudio.audioNodes.llpw[i].frequency.value = LLPW_FREQUENCIES[i] ;
CiderAudio.audioNodes.llpw[i].Q.value = LLPW_Q[i];
CiderAudio.audioNodes.llpw[i].gain.value = LLPW_GAIN[i];
}
@ -435,7 +435,7 @@ const CiderAudio = {
for (let i = 0; i < c_LLPW_FREQUENCIES.length; i++) {
CiderAudio.audioNodes.llpw[i] = CiderAudio.context.createBiquadFilter();
CiderAudio.audioNodes.llpw[i].type = 'peaking'; // 'peaking';
CiderAudio.audioNodes.llpw[i].frequency.value = c_LLPW_FREQUENCIES[i];
CiderAudio.audioNodes.llpw[i].frequency.value = c_LLPW_FREQUENCIES[i] ;
CiderAudio.audioNodes.llpw[i].Q.value = c_LLPW_Q[i];
CiderAudio.audioNodes.llpw[i].gain.value = c_LLPW_GAIN[i];
}
@ -496,7 +496,7 @@ const CiderAudio = {
for (let i = 0; i < VIBRANTBASSBANDS.length; i++) {
CiderAudio.audioNodes.vibrantbassNode[i] = CiderAudio.context.createBiquadFilter();
CiderAudio.audioNodes.vibrantbassNode[i].type = 'peaking'; // 'peaking';
CiderAudio.audioNodes.vibrantbassNode[i].frequency.value = VIBRANTBASSBANDS[i];
CiderAudio.audioNodes.vibrantbassNode[i].frequency.value = VIBRANTBASSBANDS[i] ;
CiderAudio.audioNodes.vibrantbassNode[i].Q.value = VIBRANTBASSQ[i];
CiderAudio.audioNodes.vibrantbassNode[i].gain.value = VIBRANTBASSGAIN[i] * (app.cfg.audio.equalizer.vibrantBass / 10);
}

View file

@ -2350,6 +2350,33 @@ fieldset:disabled .btn {
// Tabs
.nav {
display: -ms-flexbox;
display: flex;
-ms-flex-wrap: wrap;
flex-wrap: wrap;
padding-left: 0;
margin-bottom: 0;
list-style: none;
}
.nav-link {
display: block;
padding: 0.5rem 1rem;
text-decoration: none;
}
.nav-link:hover, .nav-link:focus {
text-decoration: none;
}
.nav-link.disabled {
color: #6c757d;
pointer-events: none;
cursor: default;
}
.nav-tabs {
border-bottom: 1px solid #dee2e6;
}
@ -2382,14 +2409,23 @@ fieldset:disabled .btn {
}
.nav-pills .nav-link {
background: none;
background-color: transparent;
border: 0;
border-radius: 0.25rem;
border-radius: 50px;
color: #eee;
-webkit-user-drag: none;
// transition: transform .35s var(--appleEase), background-color .35s var(--appleEase);
font-weight: 500;
&:hover {
// transition: transform .35s var(--appleEase), background-color 0s var(--appleEase);
background-color: var(--hover);
}
}
.nav-pills .nav-link.active,
.nav-pills .show > .nav-link {
color: #fff;
background-color: #0d6efd;
background-color: var(--selected);
outline:2px solid var(--keyColor);
}
.nav-fill > .nav-link,

View file

@ -173,6 +173,7 @@
.app-chrome--right {
width: 30%;
flex: 0 0 auto;
padding-right: 8px;
}
}
.collection-page {

View file

@ -827,13 +827,18 @@
.settings-page {
padding: 0px;
.nav {
width: 90%;
margin: 16px auto 0px;
}
.md-option-header {
padding : 1.25em 1.25em;
padding: 0px 26px;
border-bottom: unset;
border-top : unset;
font-weight : 600;
font-size : 1.0em;
background : rgb(255 255 255 / 3%);
border-top: unset;
font-weight: 600;
background: rgb(255 255 255 / 0%);
font-size: 2em;
}
.settings-option-body {

View file

@ -297,10 +297,10 @@ const app = new Vue({
}
this.lz = ipcRenderer.sendSync("get-i18n", lang)
this.mklang = await this.MKJSLang()
try{
try {
this.listennow.timestamp = 0;
this.browsepage.timestamp = 0;
}catch(e){}
} catch (e) { }
},
/**
* Grabs translation for localization.
@ -604,6 +604,11 @@ const app = new Vue({
try {
// Set profile name
this.chrome.userinfo = (await app.mk.api.v3.music(`/v1/me/social-profile`)).data.data[0]
// check if this.chrome.userinfo.attributes.artwork exists
if (this.chrome.userinfo.attributes.artwork && !this.chrome.hideUserInfo) {
document.documentElement.style
.setProperty('--cvar-userprofileimg', `url("${this.getMediaItemArtwork(this.chrome.userinfo.attributes.artwork.url)}")`);
}
} catch (err) {
}
@ -1421,15 +1426,15 @@ const app = new Vue({
const datetime = new Date(seconds * 1000)
if (format === "long") {
const d = Math.floor(seconds / (3600*24));
const h = Math.floor(seconds % (3600*24) / 3600);
const d = Math.floor(seconds / (3600 * 24));
const h = Math.floor(seconds % (3600 * 24) / 3600);
const m = Math.floor(seconds % 3600 / 60);
const s = Math.floor(seconds % 60);
const dDisplay = d > 0 ? `${d} ${app.getLz("term.time.day", {"count": d})}, ` : "";
const hDisplay = h > 0 ? `${h} ${app.getLz("term.time.hour", {"count": h})}, ` : "";
const mDisplay = m > 0 ? `${m} ${app.getLz("term.time.minute", {"count": m})}, ` : "";
const sDisplay = s > 0 ? `${s} ${app.getLz("term.time.second", {"count": s})}` : "";
const dDisplay = d > 0 ? `${d} ${app.getLz("term.time.day", { "count": d })}, ` : "";
const hDisplay = h > 0 ? `${h} ${app.getLz("term.time.hour", { "count": h })}, ` : "";
const mDisplay = m > 0 ? `${m} ${app.getLz("term.time.minute", { "count": m })}, ` : "";
const sDisplay = s > 0 ? `${s} ${app.getLz("term.time.second", { "count": s })}` : "";
return dDisplay + hDisplay + mDisplay + sDisplay;
}
@ -1486,7 +1491,7 @@ const app = new Vue({
let page = hash[0]
let id = hash[1]
let isLibrary = hash[2] ?? false
if(page == "plugin") {
if (page == "plugin") {
this.pluginPages.page = "plugin." + id
this.page = "plugin-renderer"
return
@ -1555,7 +1560,8 @@ const app = new Vue({
if (kind.includes("album")) {
params["include[albums]"] = "artists"
params["fields[artists]"] = "name,url"
params["fields[albums]"] = "artistName,artistUrl,artwork,contentRating,editorialArtwork,editorialVideo,name,playParams,releaseDate,url,copyright"
params["omit[resource]"] = "autos"
params["fields[albums]"] = "artistName,artistUrl,artwork,contentRating,editorialArtwork,editorialNotes,editorialVideo,name,playParams,releaseDate,url,copyright"
}
if (this.cfg.advanced.experiments.includes('inline-playlists')) {
@ -2323,8 +2329,8 @@ const app = new Vue({
getTotalTime() {
try {
if (app.showingPlaylist.relationships.tracks.data.length === 0) return ""
const timeInSeconds = Math.round([].concat(...app.showingPlaylist.relationships.tracks.data).reduce((a, {attributes: {durationInMillis}}) => a + durationInMillis, 0) / 1000);
return `${app.showingPlaylist.relationships.tracks.data.length} ${app.getLz("term.track", {"count": app.showingPlaylist.relationships.tracks.data.length})}, ${app.convertTime(timeInSeconds, 'long')}`
const timeInSeconds = Math.round([].concat(...app.showingPlaylist.relationships.tracks.data).reduce((a, { attributes: { durationInMillis } }) => a + durationInMillis, 0) / 1000);
return `${app.showingPlaylist.relationships.tracks.data.length} ${app.getLz("term.track", { "count": app.showingPlaylist.relationships.tracks.data.length })}, ${app.convertTime(timeInSeconds, 'long')}`
} catch (err) {
return ""
}
@ -2598,33 +2604,33 @@ const app = new Vue({
req.open('GET', url, true);
req.setRequestHeader("authority", "apic-desktop.musixmatch.com");
req.onload = function () {
try{
let jsonResponse = JSON.parse(this.responseText);
let status2 = jsonResponse["message"]["header"]["status_code"];
if (status2 == 200) {
let token = jsonResponse["message"]["body"]["user_token"] ?? '';
if (token != "" && token != "UpgradeOnlyUpgradeOnlyUpgradeOnlyUpgradeOnly") {
console.log('200 token', mode);
// token good
app.mxmtoken = token;
try {
let jsonResponse = JSON.parse(this.responseText);
let status2 = jsonResponse["message"]["header"]["status_code"];
if (status2 == 200) {
let token = jsonResponse["message"]["body"]["user_token"] ?? '';
if (token != "" && token != "UpgradeOnlyUpgradeOnlyUpgradeOnlyUpgradeOnly") {
console.log('200 token', mode);
// token good
app.mxmtoken = token;
if (mode == 1) {
getMXMSubs(track, artist, app.mxmtoken, lang, time, id);
if (mode == 1) {
getMXMSubs(track, artist, app.mxmtoken, lang, time, id);
} else {
getMXMTrans(songid, lang, app.mxmtoken);
}
} else {
getMXMTrans(songid, lang, app.mxmtoken);
console.log('fake 200 token');
getToken(mode, track, artist, songid, lang, time)
}
} else {
console.log('fake 200 token');
// console.log('token 4xx');
getToken(mode, track, artist, songid, lang, time)
}
} else {
// console.log('token 4xx');
getToken(mode, track, artist, songid, lang, time)
} catch (e) {
console.log('error');
app.loadAMLyrics();
}
}catch(e){
console.log('error');
app.loadAMLyrics();
}
};
req.onerror = function () {
console.log('error');
@ -2645,85 +2651,86 @@ const app = new Vue({
req.open('GET', url, true);
req.setRequestHeader("authority", "apic-desktop.musixmatch.com");
req.onload = function () {
try{
let jsonResponse = JSON.parse(this.responseText);
console.log(jsonResponse);
let status1 = jsonResponse["message"]["header"]["status_code"];
try {
let jsonResponse = JSON.parse(this.responseText);
console.log(jsonResponse);
let status1 = jsonResponse["message"]["header"]["status_code"];
if (status1 == 200) {
let id = '';
try {
if (jsonResponse["message"]["body"]["macro_calls"]["matcher.track.get"]["message"]["header"]["status_code"] == 200 && jsonResponse["message"]["body"]["macro_calls"]["track.subtitles.get"]["message"]["header"]["status_code"] == 200) {
id = jsonResponse["message"]["body"]["macro_calls"]["matcher.track.get"]["message"]["body"]["track"]["track_id"] ?? '';
lrcfile = jsonResponse["message"]["body"]["macro_calls"]["track.subtitles.get"]["message"]["body"]["subtitle_list"][0]["subtitle"]["subtitle_body"];
if (status1 == 200) {
let id = '';
try {
if (jsonResponse["message"]["body"]["macro_calls"]["matcher.track.get"]["message"]["header"]["status_code"] == 200 && jsonResponse["message"]["body"]["macro_calls"]["track.subtitles.get"]["message"]["header"]["status_code"] == 200) {
id = jsonResponse["message"]["body"]["macro_calls"]["matcher.track.get"]["message"]["body"]["track"]["track_id"] ?? '';
lrcfile = jsonResponse["message"]["body"]["macro_calls"]["track.subtitles.get"]["message"]["body"]["subtitle_list"][0]["subtitle"]["subtitle_body"];
try {
let lrcrich = jsonResponse["message"]["body"]["macro_calls"]["track.richsync.get"]["message"]["body"]["richsync"]["richsync_body"];
richsync = JSON.parse(lrcrich);
app.richlyrics = richsync;
} catch (_) {
}
}
if (lrcfile == "") {
app.loadAMLyrics()
} else {
if (richsync == [] || richsync.length == 0) {
console.log("ok");
// process lrcfile to json here
app.lyricsMediaItem = lrcfile
let u = app.lyricsMediaItem.split(/[\r\n]/);
let preLrc = []
for (var i = u.length - 1; i >= 0; i--) {
let xline = (/(\[[0-9.:\[\]]*\])+(.*)/).exec(u[i])
let end = (preLrc.length > 0) ? ((preLrc[preLrc.length - 1].startTime) ?? 99999) : 99999
preLrc.push({
startTime: app.toMS(xline[1].substring(1, xline[1].length - 2)) ?? 0,
endTime: end,
line: xline[2],
translation: ''
})
try {
let lrcrich = jsonResponse["message"]["body"]["macro_calls"]["track.richsync.get"]["message"]["body"]["richsync"]["richsync_body"];
richsync = JSON.parse(lrcrich);
app.richlyrics = richsync;
} catch (_) {
}
if (preLrc.length > 0)
preLrc.push({
startTime: 0,
endTime: preLrc[preLrc.length - 1].startTime,
line: "lrcInstrumental",
translation: ''
});
app.lyrics = preLrc.reverse();
} else {
let preLrc = richsync.map(function (item) {
return {
startTime: item.ts,
endTime: item.te,
line: item.x,
translation: ''
}
})
if (preLrc.length > 0)
preLrc.unshift({
startTime: 0,
endTime: preLrc[0].startTime,
line: "lrcInstrumental",
translation: ''
});
app.lyrics = preLrc;
}
if (lrcfile != null && lrcfile != '' && lang != "disabled") {
// load translation
getMXMTrans(id, lang, token);
} else {
if (lrcfile == "") {
app.loadAMLyrics()
} else {
if (richsync == [] || richsync.length == 0) {
console.log("ok");
// process lrcfile to json here
app.lyricsMediaItem = lrcfile
let u = app.lyricsMediaItem.split(/[\r\n]/);
let preLrc = []
for (var i = u.length - 1; i >= 0; i--) {
let xline = (/(\[[0-9.:\[\]]*\])+(.*)/).exec(u[i])
let end = (preLrc.length > 0) ? ((preLrc[preLrc.length - 1].startTime) ?? 99999) : 99999
preLrc.push({
startTime: app.toMS(xline[1].substring(1, xline[1].length - 2)) ?? 0,
endTime: end,
line: xline[2],
translation: ''
})
}
if (preLrc.length > 0)
preLrc.push({
startTime: 0,
endTime: preLrc[preLrc.length - 1].startTime,
line: "lrcInstrumental",
translation: ''
});
app.lyrics = preLrc.reverse();
} else {
let preLrc = richsync.map(function (item) {
return {
startTime: item.ts,
endTime: item.te,
line: item.x,
translation: ''
}
})
if (preLrc.length > 0)
preLrc.unshift({
startTime: 0,
endTime: preLrc[0].startTime,
line: "lrcInstrumental",
translation: ''
});
app.lyrics = preLrc;
}
if (lrcfile != null && lrcfile != '' && lang != "disabled") {
// load translation
getMXMTrans(id, lang, token);
} else {
app.loadAMLyrics()
}
}
} catch (e) {
console.log(e);
app.loadAMLyrics()
}
} catch (e) {
console.log(e);
app.loadAMLyrics()
} else { //4xx rejected
getToken(1, track, artist, '', lang, time);
}
} else { //4xx rejected
getToken(1, track, artist, '', lang, time);
}}catch(e){
} catch (e) {
console.log(e);
app.loadAMLyrics()
}
@ -2744,33 +2751,34 @@ const app = new Vue({
req2.open('GET', url2, true);
req2.setRequestHeader("authority", "apic-desktop.musixmatch.com");
req2.onload = function () {
try{
let jsonResponse2 = JSON.parse(this.responseText);
console.log(jsonResponse2);
let status2 = jsonResponse2["message"]["header"]["status_code"];
if (status2 == 200) {
try {
let preTrans = []
let u = app.lyrics;
let translation_list = jsonResponse2["message"]["body"]["translations_list"];
if (translation_list.length > 0) {
for (var i = 0; i < u.length - 1; i++) {
preTrans[i] = ""
for (var trans_line of translation_list) {
if (u[i].line == " " + trans_line["translation"]["matched_line"] || u[i].line == trans_line["translation"]["matched_line"]) {
u[i].translation = trans_line["translation"]["description"];
break;
try {
let jsonResponse2 = JSON.parse(this.responseText);
console.log(jsonResponse2);
let status2 = jsonResponse2["message"]["header"]["status_code"];
if (status2 == 200) {
try {
let preTrans = []
let u = app.lyrics;
let translation_list = jsonResponse2["message"]["body"]["translations_list"];
if (translation_list.length > 0) {
for (var i = 0; i < u.length - 1; i++) {
preTrans[i] = ""
for (var trans_line of translation_list) {
if (u[i].line == " " + trans_line["translation"]["matched_line"] || u[i].line == trans_line["translation"]["matched_line"]) {
u[i].translation = trans_line["translation"]["description"];
break;
}
}
}
app.lyrics = u;
}
app.lyrics = u;
} catch (e) {
/// not found trans -> ignore
}
} catch (e) {
/// not found trans -> ignore
} else { //4xx rejected
getToken(2, '', '', id, lang, '');
}
} else { //4xx rejected
getToken(2, '', '', id, lang, '');
}}catch(e){}
} catch (e) { }
}
req2.send();
}
@ -3282,6 +3290,10 @@ const app = new Vue({
if (typeof url == "undefined" || url == "") {
return "https://beta.music.apple.com/assets/product/MissingArtworkMusic.svg"
}
height = parseInt(height * window.devicePixelRatio)
if(width) {
width = parseInt(width * window.devicePixelRatio)
}
let newurl = `${url.replace('{w}', width ?? height).replace('{h}', height).replace('{f}', "webp").replace('{c}', ((width === 900) ? "sr" : "cc"))}`;
if (newurl.includes("900x516")) {
@ -3731,7 +3743,7 @@ const app = new Vue({
}
}
if(app.mk.nowPlayingItem._container["attributes"] && app.mk.nowPlayingItem._container.name != "station") {
if (app.mk.nowPlayingItem._container["attributes"] && app.mk.nowPlayingItem._container.name != "station") {
menus.normal.items.find(x => x.id == "showInMusic").hidden = false
}

View file

@ -142,8 +142,8 @@ body.notransparency::before {
}
#app {
--color1: rgba(30, 30, 30, 30%);
--color2: rgba(15, 15, 15, 30%);
--color1: rgba(15, 15, 15, 30%);
--color2: rgba(30, 30, 30, 50%);
--bgColor: transparent;
--bgWidth: 0px;
--bgHeight: 0px;
@ -799,25 +799,28 @@ input[type=range].web-slider::-webkit-slider-runnable-track {
opacity: 0.6;
}
}
}
.app-sidebar-item:hover {
border: 1px solid rgb(200 200 200 / 5%);
background: rgb(200 200 200 / 15%);
border: 1px solid rgb(200 200 200 / 0%);
background: rgb(180 180 180 / 15%);
// cursor: pointer;
}
.app-sidebar-item:active {
border: 1px solid rgb(200 200 200 / 5%);
background: rgb(200 200 200 / 15%);
transform: scale(0.98);
border: 1px solid rgb(200 200 200 / 0%);
background: rgb(150 150 150 / 15%);
// transform: scale(0.98);
transition: transform 0s;
}
.app-sidebar-item.active {
border: 1px solid rgb(200 200 200 / 5%);
border: 1px solid rgb(200 200 200 / 0%);
background: rgb(200 200 200 / 15%);
transform: scale(1);
transition: transform 0s;
cursor: default;
}
.app-sidebar-item.active::after {
@ -830,6 +833,17 @@ input[type=range].web-slider::-webkit-slider-runnable-track {
border-radius: 10px;
left: 0px;
background: var(--keyColor);
animation: expandIndicator .2s cubic-bezier(0.25, 1, 0.5, 1);
@keyframes expandIndicator {
0% {
transform: scaleY(0);
}
100% {
transform: scaleY(1);
}
}
}
.app-chrome {
@ -867,7 +881,7 @@ input[type=range].web-slider::-webkit-slider-runnable-track {
}
.app-chrome .app-chrome--center {
width: 40%;
//width: 40%;
}
.app-chrome .app-chrome--right {

View file

@ -29,7 +29,7 @@
template: '#artist-chip',
async mounted() {
let artistId = this.item.id
if(typeof this.item.relationships.catalog == "object") {
if(typeof this.item.relationships == "object") {
artistId = this.item.relationships.catalog.data[0].id
}
app.mk.api.v3.music(`/v1/catalog/${app.mk.storefrontId}/artists/${artistId}`).then(response => {

View file

@ -1,5 +1,5 @@
<script type="text/x-template" id="castmenu">
<div class="spatialproperties-panel castmenu modal-fullscreen" >
<div class="spatialproperties-panel castmenu modal-fullscreen" @click.self="close()" @contextmenu.self="close()">
<div class="modal-window">
<div class="modal-header">
<div class="modal-title">Cast To Devices</div>

View file

@ -1,5 +1,5 @@
<script type="text/x-template" id="eq-view">
<div class="modal-fullscreen equalizer-panel">
<div class="modal-fullscreen equalizer-panel" @click.self="close()" @contextmenu.self="close()">
<div class="modal-window" >
<div class="modal-header">
<div class="modal-title">{{$root.getLz('term.equalizer')}}</div>

View file

@ -23,7 +23,7 @@
<div class="svg-icon" :style="{'--color': 'var(--keyColor)', '--url': 'url(./assets/feather/plus.svg)'}"></div>
</button>
<button v-else-if='!(showArtwork == true && (showIndex == false ||(showIndex == true && showIndexPlaylist != false)))' @click="playTrack()" style="width: 44px;margin-left: -11px;">
<%- include("../svg/play.svg") %>
<div class="svg-icon" :style="{'--color': 'var(--keyColor)', '--url': 'url(./assets/feather/play.svg)'}"></div>
</button>
</div>
<div v-if="!(app.mk.isPlaying && (((app.mk.nowPlayingItem._songId ?? (app.mk.nowPlayingItem.songId ?? app.mk.nowPlayingItem.id )) == itemId) || (app.mk.nowPlayingItem.id == item.id ))) && showIndex" :style="{display: ((showIndex && !showInLibrary) ? 'block' : 'none'), 'margin-left':'11px'}">

View file

@ -1,5 +1,5 @@
<script type="text/x-template" id="spatial-properties">
<div class="modal-fullscreen spatialproperties-panel">
<div class="modal-fullscreen spatialproperties-panel" @click.self="close()" @contextmenu.self="close()">
<div class="modal-window" v-if="ready">
<div class="modal-header">
<div class="modal-title">{{$root.getLz('spatial.spatialProperties')}}</div>

View file

@ -16,9 +16,9 @@
<button onclick="window.open('https://ko-fi.com/cryptofyre')" class="md-btn sponsorBtn"><img src="./assets/ko_fi.svg"/>Ko-fi</button>
<button onclick="window.open('https://opencollective.com/ciderapp')" class="md-btn sponsorBtn"><img src="./assets/open_collective.svg"/>Open Collective</button>
<h3>{{$root.getLz('term.socials')}}</h3>
<button onclick="window.open('https://github.com/ciderapp/Cider')" class="md-btn sponsorBtn"><img style="width: 20.5px;" src="./assets/github.svg"/>{{$root.getLz('term.github')}}</button>
<button onclick="window.open('https://discord.gg/applemusic')" class="md-btn sponsorBtn"><img src="./assets/discord.svg"/>{{$root.getLz('term.discord')}}</button>
<button onclick="window.open('https://twitter.com/UseCider')" class="md-btn sponsorBtn"><img style="width: 20.5px;" src="./assets/twitter.svg"/>Twitter</button>
<button onclick="window.open('https://github.com/ciderapp/Cider')" class="md-btn sponsorBtn"><img src="./assets/github.svg"/>{{$root.getLz('term.github')}}</button>
<button onclick="window.open('https://discord.gg/applemusic')" class="md-btn sponsorBtn"><img style="height: 26px;" src="./assets/discord.svg"/>{{$root.getLz('term.discord')}}</button>
<button onclick="window.open('https://twitter.com/UseCider')" class="md-btn sponsorBtn"><img src="./assets/twitter.svg"/>Twitter</button>
</div>
<div class="col">
@ -113,7 +113,7 @@
name: 'NoseySG',
link: 'https://twitter.com/noah_grose',
role: app.getLz('term.socialTeam'),
avatar: 'https://pbs.twimg.com/profile_images/1422541289837535239/qg-aaoP9_400x400.jpg'
avatar: 'https://pbs.twimg.com/profile_images/1496944907260420099/D5gl6H4J_400x400.jpg'
}
]
}

View file

@ -49,13 +49,12 @@
<artist-chip v-for="artist in data.relationships.artists.data"
:item="artist"></artist-chip>
</template>
<div class="playlist-desc"
v-if="data.attributes.description && (data.attributes.description.standard || data.attributes.description.short)">
<div v-if="data.attributes.description.short" class="content"
v-html="data.attributes.description.short"></div>
<div v-else-if="data.attributes.description.standard" class="content"
v-html="data.attributes.description.standard"></div>
<button v-if="data.attributes.description.short" class="more-btn"
<div class="playlist-desc" v-if="(data.attributes.description && (data.attributes.description.standard || data.attributes.description.short)) || (data.attributes.editorialNotes && (data.attributes.editorialNotes.standard || data.attributes.editorialNotes.short))">
<div v-if="(data.attributes.description?.short ?? data.attributes.editorialNotes?.short) != null" class="content"
v-html="data.attributes.description?.short ?? data.attributes.editorialNotes?.short"></div>
<div v-else-if="(data.attributes.description?.standard ?? data.attributes.editorialNotes?.standard) != null" class="content"
v-html="data.attributes.description?.standard ?? data.attributes.editorialNotes?.standard"></div>
<button v-if="(data.attributes.description?.short ?? data.attributes.editorialNotes?.short ) != null" class="more-btn"
@click="editorialNotesExpanded = !editorialNotesExpanded">
{{app.getLz('term.showMore')}}
</button>

View file

@ -44,9 +44,11 @@
</div>
</div>
<div class="well">
<mediaitem-square v-if="library.albums.viewAs == 'covers'" :item="item"
v-for="item in library.albums.displayListing">
</mediaitem-square>
<div class="albums-square-container">
<mediaitem-square v-if="library.albums.viewAs == 'covers'" :item="item"
v-for="item in library.albums.displayListing">
</mediaitem-square>
</div>
<mediaitem-list-item v-if="library.albums.viewAs == 'list'" :show-duration="false" :show-meta-data="true"
:show-library-status="false" :item="item"
v-for="item in library.albums.displayListing">

View file

@ -57,13 +57,12 @@
<artist-chip v-for="artist in data.relationships.artists.data"
:item="artist"></artist-chip>
</template>
<div class="playlist-desc"
v-if="data.attributes.description && (data.attributes.description.standard || data.attributes.description.short)">
<div v-if="data.attributes.description.short" class="content"
v-html="data.attributes.description.short"></div>
<div v-else-if="data.attributes.description.standard" class="content"
v-html="data.attributes.description.standard"></div>
<button v-if="data.attributes.description.short" class="more-btn"
<div class="playlist-desc" v-if="(data.attributes.description && (data.attributes.description.standard || data.attributes.description.short)) || (data.attributes.editorialNotes && (data.attributes.editorialNotes.standard || data.attributes.editorialNotes.short))">
<div v-if="(data.attributes.description?.short ?? data.attributes.editorialNotes?.short) != null" class="content"
v-html="data.attributes.description?.short ?? data.attributes.editorialNotes?.short"></div>
<div v-else-if="(data.attributes.description?.standard ?? data.attributes.editorialNotes?.standard) != null" class="content"
v-html="data.attributes.description?.standard ?? data.attributes.editorialNotes?.standard"></div>
<button v-if="(data.attributes.description?.short ?? data.attributes.editorialNotes?.short ) != null" class="more-btn"
@click="editorialNotesExpanded = !editorialNotesExpanded">
{{app.getLz('term.showMore')}}
</button>

File diff suppressed because it is too large Load diff

View file

@ -89,6 +89,10 @@
if (typeof url == "undefined" || url == "") {
return "https://beta.music.apple.com/assets/product/MissingArtworkMusic.svg"
}
height = parseInt(height * window.devicePixelRatio)
if(width) {
width = parseInt(width * window.devicePixelRatio)
}
let newurl = `${url.replace('{w}', width ?? height).replace('{h}', height).replace('{f}', "webp").replace('{c}', ((width === 900) ? "sr" : "cc"))}`;
if (newurl.includes("900x516")) {