Merge branch 'main' into enhancement/lastfm
This commit is contained in:
commit
7e6f3bd17e
29 changed files with 1348 additions and 1103 deletions
93
resources/icons/icon.svg
Normal file
93
resources/icons/icon.svg
Normal file
|
@ -0,0 +1,93 @@
|
|||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<!-- Created with Inkscape (http://www.inkscape.org/) -->
|
||||
|
||||
<svg
|
||||
version="1.1"
|
||||
id="svg316"
|
||||
width="1000"
|
||||
height="1000"
|
||||
viewBox="0 0 1000 1000"
|
||||
sodipodi:docname="atreus.svg"
|
||||
inkscape:version="1.2 (dc2aedaf03, 2022-05-15)"
|
||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:svg="http://www.w3.org/2000/svg">
|
||||
<defs
|
||||
id="defs320">
|
||||
<inkscape:path-effect
|
||||
effect="bspline"
|
||||
id="path-effect21501"
|
||||
is_visible="true"
|
||||
lpeversion="1"
|
||||
weight="33.333333"
|
||||
steps="2"
|
||||
helper_size="0"
|
||||
apply_no_weight="true"
|
||||
apply_with_weight="true"
|
||||
only_selected="false" />
|
||||
<inkscape:path-effect
|
||||
effect="spiro"
|
||||
id="path-effect21497"
|
||||
is_visible="true"
|
||||
lpeversion="1" />
|
||||
<inkscape:path-effect
|
||||
effect="spiro"
|
||||
id="path-effect21277"
|
||||
is_visible="true"
|
||||
lpeversion="1" />
|
||||
<inkscape:path-effect
|
||||
effect="spiro"
|
||||
id="path-effect21273"
|
||||
is_visible="true"
|
||||
lpeversion="1" />
|
||||
</defs>
|
||||
<sodipodi:namedview
|
||||
id="namedview318"
|
||||
pagecolor="#ffffff"
|
||||
bordercolor="#000000"
|
||||
borderopacity="0.25"
|
||||
inkscape:showpageshadow="2"
|
||||
inkscape:pageopacity="0.0"
|
||||
inkscape:pagecheckerboard="0"
|
||||
inkscape:deskcolor="#d1d1d1"
|
||||
showgrid="true"
|
||||
inkscape:zoom="1"
|
||||
inkscape:cx="471.5"
|
||||
inkscape:cy="396.5"
|
||||
inkscape:window-width="1920"
|
||||
inkscape:window-height="1044"
|
||||
inkscape:window-x="0"
|
||||
inkscape:window-y="0"
|
||||
inkscape:window-maximized="1"
|
||||
inkscape:current-layer="g322" />
|
||||
<g
|
||||
inkscape:groupmode="layer"
|
||||
inkscape:label="Image"
|
||||
id="g322">
|
||||
<path
|
||||
style="display:inline;opacity:1;fill:#ff2654;fill-opacity:1;fill-rule:nonzero;stroke-width:0.7;stroke-dasharray:none"
|
||||
d="M 43.442873,500 C 44.729355,381.57807 94.612705,264.40544 179.08104,181.39635 263.54937,98.387264 381.57364,50.553165 500,51.331533 617.43261,52.10337 733.85918,100.6317 817.07592,183.49296 900.29266,266.35423 949.31889,382.57178 950.59458,500 951.88811,619.07066 904.01174,737.93437 820.54876,822.86626 737.08578,907.79814 619.07511,957.74081 500,958.52344 379.93115,959.3126 260.30587,910.07147 175.5853,824.98577 90.86473,739.90007 42.138548,620.06436 43.442873,500 Z"
|
||||
id="path21271"
|
||||
inkscape:path-effect="#path-effect21273"
|
||||
inkscape:original-d="M 43.442873,500 C -108.74384,347.15785 347.81529,200.88869 500,51.331533 652.18471,-98.225623 800.39739,350.44484 950.59458,500 1100.7918,649.55516 650.19919,805.68329 500,958.52344 349.80081,1111.3636 195.62958,652.84215 43.442873,500 Z" />
|
||||
<path
|
||||
style="display:inline;opacity:1;fill:#161616;fill-opacity:1;fill-rule:nonzero;stroke-width:7;stroke-dasharray:none"
|
||||
d="M 810.53125,500 C 809.3521,419.22061 775.44998,339.38827 718.14176,282.4456 660.83353,225.50293 580.78531,192.11226 500,191.45312 418.36315,190.78703 336.94829,223.58389 278.56844,280.65237 220.18858,337.72085 185.55094,418.36913 184.35937,500 183.14556,583.1542 216.70905,666.27439 275.32351,725.26964 333.93798,784.2649 416.83971,818.36602 500,817.6875 582.30875,817.01593 663.82438,782.31258 721.36031,723.45004 778.89624,664.5875 811.73263,582.30273 810.53125,500 Z"
|
||||
id="path21495"
|
||||
inkscape:path-effect="#path-effect21497"
|
||||
inkscape:original-d="M 810.53125,500 C 914.04066,394.10317 603.51142,294.30308 500,191.45312 396.48858,88.603166 289.57392,397.15204 184.35937,500 79.144833,602.84796 394.78746,711.79267 500,817.6875 605.21254,923.58233 707.02183,605.89683 810.53125,500 Z" />
|
||||
<path
|
||||
style="display:inline;opacity:1;fill:#ff2654;fill-opacity:1;fill-rule:nonzero;stroke-width:7;stroke-dasharray:none"
|
||||
d="M 759.34429,500 C 758.19835,432.60151 729.83099,366.05221 681.99531,318.55888 634.15963,271.06554 567.40514,243.17636 500,242.53125 431.75952,241.87814 363.66577,269.1855 314.77936,316.80177 265.89296,364.41804 236.80347,431.76626 235.64333,500 234.45795,569.71803 262.50003,639.47618 311.6155,688.97042 360.73098,738.46466 430.27509,767.04231 500,766.375 568.88957,765.71568 637.07217,736.5466 685.12903,687.18319 733.18589,637.81977 760.51546,568.88277 759.34429,500 Z"
|
||||
id="path21275"
|
||||
inkscape:path-effect="#path-effect21277"
|
||||
inkscape:original-d="M 759.34429,500 C 845.79139,411.20733 586.4491,328.35517 500,242.53125 413.5509,156.70733 323.76322,414.17808 235.64333,500 147.52345,585.82192 411.88211,677.58433 500,766.375 588.11789,855.16566 672.8972,588.79267 759.34429,500 Z" />
|
||||
<path
|
||||
style="display:inline;opacity:1;fill:#161616;fill-opacity:1;fill-rule:nonzero;stroke-width:7;stroke-dasharray:none"
|
||||
d="m 425.88442,448.01182 c -0.0883,28.34345 0.0296,84.32273 0.31267,112.73951 0.2831,28.41677 0.73019,29.26962 1.17791,30.12367 0,0 1.625,2.25 1.625,2.25 0,0 2.0625,1 2.0625,1 0,0 6.1875,0.625 6.1875,0.625 48.08333,-27.91667 96.16698,-55.83352 120.646,-70.22927 24.47902,-14.39575 25.354,-15.27073 25.9164,-16.08294 0.56241,-0.81221 0.8124,-1.56219 0.91669,-2.43698 0.10429,-0.87479 0.0626,-1.87477 -0.16633,-2.89553 -0.22895,-1.02076 -0.64561,-2.0624 -1.16617,-2.87503 -0.52057,-0.81263 -1.14556,-1.39595 -1.66634,-1.83354 -0.52079,-0.43759 -0.93744,-0.72924 -24.80769,-14.62209 -23.87026,-13.89285 -71.19225,-41.38567 -95.50189,-55.36818 -24.30965,-13.98252 -25.60599,-14.45391 -26.90262,-14.51314 -1.29664,-0.0592 -2.59298,0.29431 -3.74228,0.82467 -1.1493,0.53036 -2.15101,1.23745 -2.82884,1.85636 -0.67782,0.61891 -1.03137,1.14923 -1.35549,1.76809 -0.32412,0.61886 -0.61874,1.32595 -0.70702,29.6694 z"
|
||||
id="path21499"
|
||||
inkscape:path-effect="#path-effect21501"
|
||||
inkscape:original-d="m 425.67828,420.37498 c 0.11885,55.98029 0.2367,111.95957 0.35355,167.93786 0.44873,0.85507 1.34317,2.56216 1.34317,2.56216 0,0 1.625,2.25 1.625,2.25 0,0 2.0625,1 2.0625,1 0,0 6.1875,0.625 6.1875,0.625 0,0 96.16767,-55.83233 144.25,-83.75 0.87602,-0.87402 1.751,-1.749 2.625,-2.625 0.251,-0.74902 0.501,-1.499 0.75,-2.25 -0.0407,-0.99902 -0.0823,-1.999 -0.125,-3 -0.41568,-1.04069 -0.83233,-2.08233 -1.25,-3.125 -0.62401,-0.58235 -1.249,-1.16567 -1.875,-1.75 -0.41568,-0.29067 -0.83233,-0.58233 -1.25,-0.875 -47.32288,-27.49292 -94.64487,-54.98573 -141.9688,-82.4801 -1.29539,-0.47041 -2.59172,-0.94181 -3.88908,-1.41421 -1.29539,0.35456 -2.59173,0.70811 -3.88909,1.06066 -1.00076,0.70812 -2.00247,1.41521 -3.00521,2.12132 -0.35256,0.53134 -0.7061,1.06166 -1.06066,1.59099 -0.29363,0.70812 -0.58825,1.41521 -0.88388,2.12132 z" />
|
||||
</g>
|
||||
</svg>
|
After Width: | Height: | Size: 6.5 KiB |
|
@ -423,10 +423,10 @@ Update 24/05/2022 20:30 UTC
|
|||
|
||||
Update 24/05/2022 21:15 UTC
|
||||
|
||||
* `settings.option.general.updateCider`: Deleted for all language files
|
||||
* `settings.option.general.updateCider.branch`: Deleted for all language files
|
||||
* `settings.option.general.updateCider`: Deleted for all language files
|
||||
* `settings.option.general.updateCider.branch`: Deleted for all language files
|
||||
* `settings.option.general.updateCider.branch.description`: Deleted for all language files
|
||||
* `settings.option.general.updateCider.branch.main`: Deleted for all language files
|
||||
* `settings.option.general.updateCider.branch.main`: Deleted for all language files
|
||||
* `settings.option.general.updateCider.branch.develop`: Deleted for all language files
|
||||
* `settings.notyf.updateCider.update-error`: Deleted for all language files
|
||||
|
||||
|
@ -444,6 +444,51 @@ Update 03/06/2022 11:40 UTC
|
|||
* `settings.option.connectivity.discordRPC.reload`: Added to `en_US`
|
||||
* `settings.option.connectivity.discordRPC.reconnectedToUser`: Added to `en_US`
|
||||
|
||||
Update 04/06/2022 03:00 UTC
|
||||
|
||||
* `term.cast`: Added to `en_US`
|
||||
* `term.playpause`: Added to `en_US`
|
||||
* `term.reload`: Added to `en_US`
|
||||
* `term.toggleprivate`: Added to `en_US`
|
||||
* `term.webremote`: Added to `en_US`
|
||||
* `term.cast2`: Added to `en_US`
|
||||
* `term.quit`: Added to `en_US`
|
||||
* `menubar.options.zoom`: Added to `en_US`
|
||||
* `term.zoomin`: Added to `en_US`
|
||||
* `term.zoomout`: Added to `en_US`
|
||||
* `term.zoomreset`: Added to `en_US`
|
||||
* `term.fullscreen`: Added to `en_US`
|
||||
* `settings.option.general.keybindings.library`: Added to `en_US`
|
||||
* `settings.option.general.keybindings.session`: Added to `en_US`
|
||||
* `settings.option.general.keybindings.control`: Added to `en_US`
|
||||
* `settings.option.general.keybindings.interface`: Added to `en_US`
|
||||
* `settings.option.general.keybindings.advanced`: Added to `en_US`
|
||||
|
||||
* `action.tray.quit`: Deleted for all language files
|
||||
* `action.tray.playpause`: Deleted for all language files
|
||||
* `action.tray.next`: Deleted for all language files
|
||||
* `action.tray.previous`: Deleted for all language files
|
||||
* `menubar.options.about`: Deleted for all language files
|
||||
* `menubar.options.settings`: Deleted for all language files
|
||||
* `menubar.options.quit`: Deleted for all language files
|
||||
* `menubar.options.toggleprivate`: Deleted for all language files
|
||||
* `menubar.options.webremote`: Deleted for all language files
|
||||
* `menubar.options.audio`: Deleted for all language files
|
||||
* `menubar.options.next`: Deleted for all language files
|
||||
* `menubar.options.previous`: Deleted for all language files
|
||||
* `menubar.options.browse`: Deleted for all language files
|
||||
* `menubar.options.artists`: Deleted for all language files
|
||||
* `menubar.options.search`: Deleted for all language files
|
||||
* `menubar.options.albums`: Deleted for all language files
|
||||
* `menubar.options.cast`: Deleted for all language files
|
||||
* `menubar.options.accountsettings`: Deleted for all language files
|
||||
* `menubar.options.discord`: Deleted for all language files
|
||||
* `menubar.options.github`: Deleted for all language files,
|
||||
* `menubar.options.listennow`: Deleted for all language files
|
||||
* `menubar.options.recentlyAdded`: Deleted for all language files
|
||||
* `menubar.options.songs`: Deleted for all language files
|
||||
* `settings.option.general.keybindings.open`: Deleted for all language files
|
||||
* `menubar.options.playpause`: Deleted for all language files
|
||||
Update 10/06/2022 20:00 UTC
|
||||
|
||||
* `settings.option.visual.purplePodcastPlaybackBar`: Added to `en_US`
|
||||
|
|
|
@ -22,7 +22,6 @@
|
|||
"term.logout": "Logout",
|
||||
"term.login": "Log In",
|
||||
"term.quickNav": "Quick Nav",
|
||||
"term.cast": "Cast",
|
||||
"term.about": "About",
|
||||
"term.privateSession": "Private Session",
|
||||
"term.disablePrivateSession": "Disable Private Session",
|
||||
|
@ -52,6 +51,7 @@
|
|||
"term.navigateBack": "Navigate back",
|
||||
"term.navigateForward": "Navigate forward",
|
||||
"term.play": "Play",
|
||||
"term.playpause": "Play/Pause",
|
||||
"term.pause": "Pause",
|
||||
"term.stop": "Stop",
|
||||
"term.previous": "Previous",
|
||||
|
@ -195,6 +195,16 @@
|
|||
"term.confirmLogout": "Are you sure you want to logout?",
|
||||
"term.creditDesignedBy": "Designed by ${authorUsername}",
|
||||
"term.discNumber": "Disc ${discNumber}",
|
||||
"term.reload" : "Reload Cider ?",
|
||||
"term.toggleprivate" : "Toggle Private Session",
|
||||
"term.webremote" : "Web Remote",
|
||||
"term.cast" : "Cast",
|
||||
"term.cast2" : "Cast to Devices",
|
||||
"term.quit" : "Quit",
|
||||
"term.zoomin" : "Zoom In",
|
||||
"term.zoomout" : "Zoom Out",
|
||||
"term.zoomreset" : "Reset Zoom",
|
||||
"term.fullscreen" : "Fullscreen",
|
||||
"home.syncFavorites": "Sync Favorites",
|
||||
"home.syncFavorites.gettingArtists": "Getting Favorited Artists...",
|
||||
"home.title": "Home",
|
||||
|
@ -271,11 +281,7 @@
|
|||
"action.export": "Export",
|
||||
"action.showAlbum": "Show Complete Album",
|
||||
"action.tray.minimize": "Minimize to Tray",
|
||||
"action.tray.quit": "Quit",
|
||||
"action.tray.show": "Show Cider",
|
||||
"action.tray.playpause": "Play/Pause",
|
||||
"action.tray.next": "Next",
|
||||
"action.tray.previous": "Previous",
|
||||
"action.tray.listento": "Listen To:",
|
||||
"action.update": "Update",
|
||||
"action.install": "Install",
|
||||
|
@ -295,45 +301,27 @@
|
|||
"action.createNew": "Create New...",
|
||||
"action.openArtworkInBrowser": "Open artwork in browser",
|
||||
"action.scrollToTop": "Scroll to top",
|
||||
"menubar.options.about": "About",
|
||||
"menubar.options.settings": "Settings",
|
||||
"menubar.options.quit": "Quit Cider",
|
||||
"menubar.options.view": "View ",
|
||||
"action.refresh": "Refresh",
|
||||
"menubar.options.view": "View",
|
||||
"menubar.options.reload": "Reload",
|
||||
"menubar.options.forcereload": "Force Reload",
|
||||
"menubar.options.toggledevtools": "Toggle Developer Tools",
|
||||
"menubar.options.window": "Window",
|
||||
"menubar.options.minimize": "Minimize",
|
||||
"menubar.options.toggleprivate": "Toggle Private Session",
|
||||
"menubar.options.webremote": "Web Remote",
|
||||
"menubar.options.audio": "Audio Settings",
|
||||
"menubar.options.plugins": "Plu-gins Menu",
|
||||
"menubar.options.controls": "Controls",
|
||||
"menubar.options.next": "Next",
|
||||
"menubar.options.playpause": "Play/Pause",
|
||||
"menubar.options.previous": "Previous",
|
||||
"menubar.options.volumeup": "Volume Up",
|
||||
"menubar.options.volumedown": "Volume Down",
|
||||
"menubar.options.browse": "Browse",
|
||||
"menubar.options.artists": "Artists",
|
||||
"menubar.options.search": "Search",
|
||||
"menubar.options.albums": "Albums",
|
||||
"menubar.options.cast": "Cast To Devices",
|
||||
"menubar.options.account": "Account",
|
||||
"menubar.options.accountsettings": "Account Settings",
|
||||
"menubar.options.signout": "Sign Out",
|
||||
"menubar.options.support": "Support",
|
||||
"menubar.options.discord": "Discord",
|
||||
"menubar.options.github": "GitHub Wiki",
|
||||
"menubar.options.report": "Report a...",
|
||||
"menubar.options.bug": "Bug",
|
||||
"menubar.options.feature": "Feature Request",
|
||||
"menubar.options.trans": "Translation Report/Request",
|
||||
"menubar.options.license": "View License",
|
||||
"menubar.options.conf": "Open Configuration File in Editor",
|
||||
"menubar.options.listennow": "Listen Now",
|
||||
"menubar.options.recentlyAdded": "Recently Added",
|
||||
"menubar.options.songs": "Songs",
|
||||
"menubar.options.zoom": "Zoom",
|
||||
"settings.header.general": "General",
|
||||
"settings.header.general.description": "Adjust the general settings for Cider.",
|
||||
"settings.option.general.language": "Language",
|
||||
|
@ -353,11 +341,15 @@
|
|||
"settings.option.general.customizeSidebar": "Customize Sidebar Items",
|
||||
"settings.option.general.customizeSidebar.customize": "Customize",
|
||||
"settings.option.general.keybindings": "Keybindings",
|
||||
"settings.option.general.keybindings.library": "Library",
|
||||
"settings.option.general.keybindings.session": "Session",
|
||||
"settings.option.general.keybindings.control": "Controls",
|
||||
"settings.option.general.keybindings.interface": "Interface",
|
||||
"settings.option.general.keybindings.advanced": "Advanced",
|
||||
"settings.option.general.keybindings.pressCombination": "Press a combination of two keys to update keybind.",
|
||||
"settings.option.general.keybindings.pressEscape": "Press Escape key to go back.",
|
||||
"settings.notyf.general.keybindings.update.success": "Keybind updated successfully",
|
||||
"settings.prompt.general.keybindings.update.success": "Keybind updated successfully. Press OK to relaunch Cider",
|
||||
"settings.option.general.keybindings.open": "Open",
|
||||
"settings.option.general.themeUpdateNotification": "Automatically check for theme updates",
|
||||
"settings.option.general.showLovedTracksInline": "Show loved tracks inline",
|
||||
"settings.description.search": "Search",
|
||||
|
|
|
@ -22,7 +22,6 @@
|
|||
"term.logout": "Cerrar Sesión",
|
||||
"term.login": "Iniciar Sesión",
|
||||
"term.quickNav": "Navegación rápida",
|
||||
"term.cast": "Transmitir",
|
||||
"term.about": "Acerca de",
|
||||
"term.privateSession": "Sesión Privada",
|
||||
"term.disablePrivateSession": "Deshabilitar Sesión Privada",
|
||||
|
@ -42,6 +41,7 @@
|
|||
"term.artists": "Artistas",
|
||||
"term.podcasts": "Podcasts",
|
||||
"term.playlists": "Listas de Reproducción",
|
||||
"term.charts": "Charts",
|
||||
"term.playlist": "Lista de Reproducción",
|
||||
"term.newPlaylist": "Nueva Lista de Reproducción",
|
||||
"term.newPlaylistFolder": "Nueva Carpeta de Listas de Reproducción",
|
||||
|
@ -51,7 +51,9 @@
|
|||
"term.navigateBack": "Navegar Hacia Atrás",
|
||||
"term.navigateForward": "Navegar Hacia Adelante",
|
||||
"term.play": "Reproducir",
|
||||
"term.playpause": "Reproducir/Pausar",
|
||||
"term.pause": "Pausar",
|
||||
"term.stop": "Detener",
|
||||
"term.previous": "Anterior",
|
||||
"term.next": "Siguiente",
|
||||
"term.shuffle": "Aleatorio",
|
||||
|
@ -124,12 +126,15 @@
|
|||
"one": "Segundo",
|
||||
"other": "Segundos"
|
||||
},
|
||||
"term.fullscreenView": "Vista de Pantalla Completa",
|
||||
"term.fullscreenView": "Pantalla Completa",
|
||||
"term.defaultView": "Vista Predeterminada",
|
||||
"term.audioSettings": "Configuración de Audio",
|
||||
"term.audioControls": "Configuración volumen",
|
||||
"term.clearAll": "Borrar todo",
|
||||
"term.recentStations": "Estaciones Recientes",
|
||||
"term.personalStations": "Estaciones Personales",
|
||||
"term.amLive": "Apple Music Live",
|
||||
"term.live": "LIVE",
|
||||
"term.language": "Idioma",
|
||||
"term.funLanguages": "Idiomas Fun (Parodias)",
|
||||
"term.noLyrics": "Cargando... / Letras no encontradas./ Instrumental.",
|
||||
|
@ -150,6 +155,7 @@
|
|||
},
|
||||
"term.videos": "Videos",
|
||||
"term.menu": "Menú",
|
||||
"term.themeManaged": "Administrado por un tema",
|
||||
"term.check": "Comprobar",
|
||||
"term.aboutArtist": "Acerca de {{artistName}}",
|
||||
"term.topResult": "Mejor Resultado",
|
||||
|
@ -189,6 +195,18 @@
|
|||
"term.confirmLogout": "¿Estás seguro de que quieres cerrar sesión?",
|
||||
"term.creditDesignedBy": "Diseñado por ${authorUsername}",
|
||||
"term.discNumber": "Disco ${discNumber}",
|
||||
"term.reload" : "¿ Recargar Cider ?",
|
||||
"term.toggleprivate" : "Cambiar sesión privada",
|
||||
"term.webremote" : "Web Remoto",
|
||||
"term.cast" : "Transmitir",
|
||||
"term.cast2" : "Transmitir a los dispositivos",
|
||||
"term.quit" : "Salir",
|
||||
"term.zoomin" : "Acercar",
|
||||
"term.zoomout" : "Alejar",
|
||||
"term.zoomreset" : "Restablecer",
|
||||
"term.fullscreen" : "Pantalla Completa",
|
||||
"home.syncFavorites": "Sincronizar Favoritos",
|
||||
"home.syncFavorites.gettingArtists": "Consiguiendo Artistas Favoritos...",
|
||||
"home.title": "Principal",
|
||||
"home.recentlyPlayed": "Escuchado Recientemente",
|
||||
"home.recentlyAdded": "Agregado Recientemente",
|
||||
|
@ -209,9 +227,17 @@
|
|||
"podcast.episodes": "Episodios",
|
||||
"podcast.playEpisode": "Reproducir Episodio",
|
||||
"podcast.website": "Sitio web de Podcasts",
|
||||
"action.favorite": "Favorito",
|
||||
"action.removeFavorite": "Eliminar Favorito",
|
||||
"action.hideLibrary": "Ocultar biblioteca",
|
||||
"action.showLibrary": "Mostrar biblioteca",
|
||||
"action.cut": "Cortar",
|
||||
"action.paste": "Pegar",
|
||||
"action.selectAll": "Seleccionar Todo",
|
||||
"action.delete": "Borrar",
|
||||
"action.edit": "Editar",
|
||||
"action.done": "Hecho",
|
||||
"action.editTracklist": "Edit Tracklist",
|
||||
"action.editTracklist": "Editar Lista de Canciones",
|
||||
"action.addToLibrary": "Agregar a la Biblioteca",
|
||||
"action.addToLibrary.success": "Agregado a la Biblioteca",
|
||||
"action.addToLibrary.error": "Error al agregar a la Biblioteca",
|
||||
|
@ -255,8 +281,8 @@
|
|||
"action.export": "Exportar",
|
||||
"action.showAlbum": "Mostrar Álbum Completo",
|
||||
"action.tray.minimize": "Minimizar a la bandeja",
|
||||
"action.tray.quit": "Salir",
|
||||
"action.tray.show": "Mostrar Cider",
|
||||
"action.tray.listento": "Escuchando a:",
|
||||
"action.update": "Actualizar",
|
||||
"action.install": "Instalar",
|
||||
"action.copy": "Copiar",
|
||||
|
@ -275,45 +301,26 @@
|
|||
"action.createNew": "Crear Nuevo...",
|
||||
"action.openArtworkInBrowser": "Abrir Ilustración en el navegador",
|
||||
"action.scrollToTop": "Ir al inicio",
|
||||
"menubar.options.about": "Acerca de",
|
||||
"menubar.options.settings": "Ajustes",
|
||||
"menubar.options.quit": "Salir",
|
||||
"menubar.options.view": "Ver",
|
||||
"menubar.options.reload": "Recargar",
|
||||
"menubar.options.forcereload": "Forzar Recarga",
|
||||
"menubar.options.toggledevtools": "Herramientas de Desarrollo",
|
||||
"menubar.options.window": "Ventana",
|
||||
"menubar.options.minimize": "Minimizar",
|
||||
"menubar.options.toggleprivate": "Cambiar Sesión Privada",
|
||||
"menubar.options.webremote": "Web Remoto",
|
||||
"menubar.options.audio": "Configuraciones de Audio",
|
||||
"menubar.options.plugins": "Menu de Plu-gins",
|
||||
"menubar.options.plugins": "Menú de Plug-ins",
|
||||
"menubar.options.controls": "Controles",
|
||||
"menubar.options.next": "Siguiente",
|
||||
"menubar.options.playpause": "Reproducir/Pausar",
|
||||
"menubar.options.previous": "Anterior",
|
||||
"menubar.options.volumeup": "Subir Volumen",
|
||||
"menubar.options.volumedown": "Bajar Volumen",
|
||||
"menubar.options.browse": "Explorar",
|
||||
"menubar.options.artists": "Artistas",
|
||||
"menubar.options.search": "Buscar",
|
||||
"menubar.options.albums": "Álbumes",
|
||||
"menubar.options.cast": "Transmitir a Dispositivos",
|
||||
"menubar.options.account": "Cuenta",
|
||||
"menubar.options.accountsettings": "Ajustes de Cuenta",
|
||||
"menubar.options.signout": "Cerrar Sesión",
|
||||
"menubar.options.support": "Soporte",
|
||||
"menubar.options.discord": "Discord",
|
||||
"menubar.options.github": "GitHub Wiki",
|
||||
"menubar.options.report": "Reportar a...",
|
||||
"menubar.options.bug": "Bug",
|
||||
"menubar.options.feature": "Solicitud de características",
|
||||
"menubar.options.trans": "Solicitud de Informe/Traducción",
|
||||
"menubar.options.license": "Ver licencia",
|
||||
"menubar.options.conf": "Abrir archivo de configuración en el editor",
|
||||
"menubar.options.listennow": "Escuchar Ahora",
|
||||
"menubar.options.recentlyAdded": "Agregadas Recientemente",
|
||||
"menubar.options.songs": "Canciones",
|
||||
"menubar.options.zoom": "Zoom",
|
||||
"settings.header.general": "General",
|
||||
"settings.header.general.description": "Ajuste la configuración general de Cider.",
|
||||
"settings.option.general.language": "Idioma",
|
||||
|
@ -333,11 +340,17 @@
|
|||
"settings.option.general.customizeSidebar": "Personalizar elementos de la barra lateral",
|
||||
"settings.option.general.customizeSidebar.customize": "Personalizar",
|
||||
"settings.option.general.keybindings": "Combinaciones de Teclas",
|
||||
"settings.option.general.keybindings.library": "Biblioteca",
|
||||
"settings.option.general.keybindings.session": "Sesión",
|
||||
"settings.option.general.keybindings.control": "Controles",
|
||||
"settings.option.general.keybindings.interface": "Interfaz",
|
||||
"settings.option.general.keybindings.advanced": "Avanzado",
|
||||
"settings.option.general.keybindings.pressCombination": "Presione una combinación de dos teclas para actualizar la combinación de teclas.",
|
||||
"settings.option.general.keybindings.pressEscape": "Pulse la tecla Escape para volver.",
|
||||
"settings.notyf.general.keybindings.update.success": "Combinación de teclas actualizada correctamente",
|
||||
"settings.prompt.general.keybindings.update.success": "La combinación de teclas se actualizó correctamente. Pulsa OK para reiniciar Cider",
|
||||
"settings.option.general.keybindings.open": "Abrir",
|
||||
"settings.option.general.themeUpdateNotification": "Buscar actualizaciones de temas automáticamente",
|
||||
"settings.option.general.showLovedTracksInline": "Mostrar pistas favoritas en la línea",
|
||||
"settings.description.search": "Buscar",
|
||||
"settings.description.albums": "Álbumes de la biblioteca",
|
||||
"settings.description.artists": "Artistas de la biblioteca",
|
||||
|
@ -356,8 +369,9 @@
|
|||
"settings.notyf.updateCider.update-downloaded": "La actualización se ha descargado, Reinicie para aplicarla",
|
||||
"settings.notyf.updateCider.update-timeout": "Tiempo de espera agotado para actualizar Cider",
|
||||
"settings.header.audio": "Audio",
|
||||
"settings.header.audio.description": "Ajuste la Configuración de Audio para Cider.",
|
||||
"settings.option.audio.volumeStep": "Paso de Volumen",
|
||||
"settings.header.audio.description": "Ajuste la configuración de audio para Cider.",
|
||||
"settings.option.audio.volumeStep": "Pasos de Volumen",
|
||||
"settings.option.audio.advanced": "Control de Volumen Avanzado",
|
||||
"settings.option.audio.maxVolume": "Volumen Máximo",
|
||||
"settings.option.audio.changePlaybackRate": "Cambiar la Velocidad de Reproducción",
|
||||
"settings.option.audio.playbackRate": "Velocidad de Reproducción",
|
||||
|
@ -390,38 +404,58 @@
|
|||
"settings.option.audio.enableAdvancedFunctionality.atmosphereRealizer.description": "Realiza una Atmósfera musical diferente modelada a partir de las configuraciones de audio de última generación.",
|
||||
"settings.option.audio.enableAdvancedFunctionality.atmosphereRealizerMode": "Cider Atmosphere Realizer™️ Mode",
|
||||
"settings.option.audio.enableAdvancedFunctionality.atmosphereRealizerMode.description": "Cambia el modo de funcionamiento del módulo Atmosphere Realizer.",
|
||||
"settings.option.audio.enableAdvancedFunctionality.atmosphereRealizerMode.NATURAL_STANDARD": "Natural (Estándar)",
|
||||
"settings.option.audio.enableAdvancedFunctionality.atmosphereRealizerMode.NATURAL_PLUS": "Natural (Plus)",
|
||||
"settings.option.audio.enableAdvancedFunctionality.atmosphereRealizerMode.NATURAL_STANDARD": "Té De Espuma de Queso Hōjicha",
|
||||
"settings.option.audio.enableAdvancedFunctionality.atmosphereRealizerMode.NATURAL_PLUS": "Té con Leche de Tapioca Genmaicha",
|
||||
"settings.option.audio.enableAdvancedFunctionality.atmosphereRealizerMode.E68_1": "Té De Espuma De Queso Con Sal de Roca",
|
||||
"settings.option.audio.enableAdvancedFunctionality.atmosphereRealizerMode.E68_2": "Té con Leche Uji Matcha",
|
||||
"settings.option.audio.enableAdvancedFunctionality.atmosphereRealizerMode.E168_1": "Jazmín Macchiato",
|
||||
"settings.option.audio.enableAdvancedFunctionality.atmosphereRealizerMode.Z3600": "Té de leche de Hokkaido",
|
||||
"settings.option.audio.enableAdvancedFunctionality.atmosphereRealizerMode.Z8500A": "Pastel Suave de Luz de Luna",
|
||||
"settings.option.audio.enableAdvancedFunctionality.atmosphereRealizerMode.Z8500B": "Clafoutis de Cerezas",
|
||||
"settings.option.audio.enableAdvancedFunctionality.atmosphereRealizerMode.Z8500C": "Uji Matcha Mochi",
|
||||
"settings.option.audio.enableAdvancedFunctionality.atmosphereRealizerMode.BSCBM": "Leche Creme Brûlée de Azúcar Morena",
|
||||
"settings.option.audio.enableAdvancedFunctionality.atmosphereRealizerMode.CUDDLE": "Abrazo de Calidez",
|
||||
"settings.option.audio.enableAdvancedFunctionality.ciderPPE": "Cider Adrenaline Processor™️",
|
||||
"settings.option.audio.enableAdvancedFunctionality.ciderPPE.description": "Mejora la calidad de audio percibida del audio AAC de 256 kbps mediante el uso de un algoritmo en tiempo real que aprovecha los modelos psicoacústicos de la audición humana y las características de codificación AAC.",
|
||||
"settings.option.audio.enableAdvancedFunctionality.ciderPPE.description": "Mejora la calidad de audio percibida del codificador de audio en AAC mediante el uso de un algoritmo en 'Tiempo Real' que aprovecha los modelos psicoacústicos de la audición humana y las características de codificación de AAC.",
|
||||
"settings.warn.audio.enableAdvancedFunctionality.ciderPPE.compatibility": "CAP no es compatible con la Espacialización. Desactive la Espacialización para continuar.",
|
||||
"settings.option.audio.enableAdvancedFunctionality.ciderPPEStrength": "Intensidad de CAP",
|
||||
"settings.option.audio.enableAdvancedFunctionality.ciderPPEStrength": "Fuerza de CAP",
|
||||
"settings.option.audio.enableAdvancedFunctionality.ciderPPEStrength.description": "Cambia la intensidad del procesamiento realizado en el audio. (Agresivo puede producir resultados no deseados)",
|
||||
"settings.option.audio.enableAdvancedFunctionality.ciderPPEStrength.standard": "Estándar",
|
||||
"settings.option.audio.enableAdvancedFunctionality.ciderPPEStrength.adaptive": "Adaptativo",
|
||||
"settings.option.audio.enableAdvancedFunctionality.ciderPPEStrength.legacy": "Legacy",
|
||||
"settings.option.audio.enableAdvancedFunctionality.ciderPPEStrength.aggressive": "Agresivo",
|
||||
"settings.option.audio.enableAdvancedFunctionality.audioNormalization": "Normalización de audio",
|
||||
"settings.option.audio.enableAdvancedFunctionality.audioNormalization.description": "Normaliza el volumen máximo de pistas individuales para crear una experiencia auditiva más uniforme. (No funciona en las pistas cargadas por el usuario)",
|
||||
"settings.option.audio.enableAdvancedFunctionality.audioNormalization.description": "Normaliza el volumen máximo de las Canciones individuales para crear una experiencia auditiva más uniforme. (No funciona en las Canciones cargadas por el usuario)",
|
||||
"settings.option.audio.enableAdvancedFunctionality.audioNormalization.disabled": "Gestionado por AudioLab",
|
||||
"settings.option.audio.enableAdvancedFunctionality.tunedAudioSpatialization": "Espacialización Sintonizada de Cider",
|
||||
"settings.option.audio.enableAdvancedFunctionality.tunedAudioSpatialization.description": "Efecto de preajuste de espacialización, deshabilita la configuración personalizable de la espacialización de audio. La espacialización debe estar habilitada como requisito previo.",
|
||||
"settings.option.audio.enableAdvancedFunctionality.tunedAudioSpatialization": "Espacialización ajustada de Cider",
|
||||
"settings.option.audio.enableAdvancedFunctionality.tunedAudioSpatialization.description": "Efecto de Preajuste de espacialización, desactiva la configuración personalizable de espacialización de audio.",
|
||||
"settings.option.audio.enableAdvancedFunctionality.tunedAudioSpatialization.profile": "Perfil de espacialización de Cider",
|
||||
"settings.option.audio.enableAdvancedFunctionality.tunedAudioSpatialization.profile.description": "Cambia el Perfil de Ajuste de Espacialización.",
|
||||
"settings.option.audio.enableAdvancedFunctionality.tunedAudioSpatialization.profile.standard": "Estándar",
|
||||
"settings.option.audio.enableAdvancedFunctionality.tunedAudioSpatialization.profile.description": "Cambia el Perfil de Ajuste de la Espacialización.",
|
||||
"settings.option.audio.enableAdvancedFunctionality.tunedAudioSpatialization.profile.standard": "Estandar",
|
||||
"settings.option.audio.enableAdvancedFunctionality.tunedAudioSpatialization.profile.soundstage": "Estudio de Sonido",
|
||||
"settings.option.audio.enableAdvancedFunctionality.tunedAudioSpatialization.profile.separation": "Separación",
|
||||
"settings.option.audio.enableAdvancedFunctionality.tunedAudioSpatialization.profile.minimal": "Mínimo",
|
||||
"settings.warn.audio.enableAdvancedFunctionality.audioSpatialization.compatibility": "La Espacialización no es compatible con CAP. Deshabilite CAP para continuar.",
|
||||
"settings.option.audio.dbspl.display": "Visualización dB SPL",
|
||||
"settings.option.audio.dbspl.description": "(Solo usuarios avanzados) Muestra 'dB SPL' en lugar de 'dBFS' en el control deslizante de volumen.",
|
||||
"settings.option.audio.enableAdvancedFunctionality.tunedAudioSpatialization.profile.audiophile": "Audiófilo",
|
||||
"settings.option.audio.enableAdvancedFunctionality.tunedAudioSpatialization.profile.diffused": "Difuso",
|
||||
"settings.option.audio.enableAdvancedFunctionality.tunedAudioSpatialization.profile.bplk": "Encore",
|
||||
"settings.option.audio.enableAdvancedFunctionality.tunedAudioSpatialization.profile.hw2k": "Expanded Encore",
|
||||
"settings.warn.audio.enableAdvancedFunctionality.audioSpatialization.compatibility": "La espacialización no es compatible con CAP. Deshabilite CAP para continuar.",
|
||||
"settings.option.audio.dbspl.display": "Visualización de dB SPL",
|
||||
"settings.option.audio.dbspl.description": "(Solo para usuarios avanzados) Muestra dB SPL en lugar de dBFS en el control deslizante de Volumen.",
|
||||
"settings.option.audio.dbfs.calibration": "Calibración de 0 dBFS",
|
||||
"settings.option.audio.dbfs.description": "Ingrese el pico 'dB SPL con Ponderación-Z' cuando Cider esté en 0 dBFS.",
|
||||
"settings.option.audio.dbfs.description": "Ingrese el Pico de dB SPL con 'Ponderación Z' cuando Cider esté en 0 dBFS.",
|
||||
"settings.header.visual": "Visual",
|
||||
"settings.header.visual.description": "Ajuste la configuración visual de Cider.",
|
||||
"settings.option.visual.windowStyle": "Estilo de Ventana",
|
||||
"settings.option.visual.customAccentColor": "Color de Acento Personalizado",
|
||||
"settings.option.visual.accentColor": "Color de Acento",
|
||||
"settings.option.visual.purplePodcastPlaybackBar": "Barra de Reproducción Púrpura para Podcasts",
|
||||
"settings.option.visual.windowColor": "Color de Tinte de Ventana",
|
||||
"settings.option.visual.windowBackgroundStyle": "Estilo de Fondo de Ventana",
|
||||
"settings.header.visual.windowBackgroundStyle.none": "Ninguno",
|
||||
"settings.header.visual.windowBackgroundStyle.artwork": "ilustración",
|
||||
"settings.header.visual.windowBackgroundStyle.image": "Imagen",
|
||||
"settings.header.visual.windowBackgroundStyle.color": "Tinte de Color",
|
||||
"settings.option.visual.animatedArtwork": "Ilustración Animada",
|
||||
"settings.header.visual.animatedArtwork.always": "Siempre",
|
||||
"settings.header.visual.animatedArtwork.limited": "Limitado a páginas y entradas especiales",
|
||||
|
@ -491,6 +525,8 @@
|
|||
"settings.option.connectivity.discordRPC.hideTimestamp": "Ocultar Marca de Tiempo en Discord Rich Presence",
|
||||
"settings.option.connectivity.discordRPC.detailsFormat": "Formato de los detalles",
|
||||
"settings.option.connectivity.discordRPC.stateFormat": "Formato de Estado",
|
||||
"settings.option.connectivity.discordRPC.reload": "Recargar Discord RPC",
|
||||
"settings.option.connectivity.discordRPC.reconnectedToUser": "Discord RPC reconectando al usuario: {{user}} ({{userid}})",
|
||||
"settings.option.connectivity.lastfmScrobble": "Last.fm Scrobbling",
|
||||
"settings.option.connectivity.lastfmScrobble.delay": "Last.fm Retraso de Scrobble (%)",
|
||||
"settings.option.connectivity.lastfmScrobble.nowPlaying": "Activar Last.fm Now Playing",
|
||||
|
|
|
@ -251,7 +251,7 @@
|
|||
"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.moveToTop": "Kivétel a mappákból",
|
||||
"action.share": "Megosztás",
|
||||
"action.rename": "Átnevezés",
|
||||
"action.love": "Szeretem",
|
||||
|
|
1168
src/i18n/pt_PT.json
1168
src/i18n/pt_PT.json
File diff suppressed because it is too large
Load diff
|
@ -22,7 +22,6 @@
|
|||
"term.logout": "Logout",
|
||||
"term.login": "Log In",
|
||||
"term.quickNav": "Quick Nav",
|
||||
"term.cast": "Cast",
|
||||
"term.about": "About",
|
||||
"term.privateSession": "Private Session",
|
||||
"term.disablePrivateSession": "Disable Private Session",
|
||||
|
@ -42,6 +41,7 @@
|
|||
"term.artists": "Artists",
|
||||
"term.podcasts": "Podcasts",
|
||||
"term.playlists": "Playlists",
|
||||
"term.charts": "Charts",
|
||||
"term.playlist": "Playlist",
|
||||
"term.newPlaylist": "New Playlist",
|
||||
"term.newPlaylistFolder": "New Playlist Folder",
|
||||
|
@ -51,6 +51,7 @@
|
|||
"term.navigateBack": "Navigate back",
|
||||
"term.navigateForward": "Navigate forward",
|
||||
"term.play": "Play",
|
||||
"term.playpause": "Play/Pause",
|
||||
"term.pause": "Pause",
|
||||
"term.stop": "Stop",
|
||||
"term.previous": "Previous",
|
||||
|
@ -193,6 +194,16 @@
|
|||
"term.confirmLogout": "Are you sure you want to logout?",
|
||||
"term.creditDesignedBy": "Designed by ${authorUsername}",
|
||||
"term.discNumber": "Disc ${discNumber}",
|
||||
"term.reload" : "Reload Cider ?",
|
||||
"term.toggleprivate" : "Toggle Private Session",
|
||||
"term.webremote" : "Web Remote",
|
||||
"term.cast" : "Cast",
|
||||
"term.cast2" : "Cast to Devices",
|
||||
"term.quit" : "Quit",
|
||||
"term.zoomin" : "Zoom In",
|
||||
"term.zoomout" : "Zoom Out",
|
||||
"term.zoomreset" : "Reset Zoom",
|
||||
"term.fullscreen" : "Fullscreen",
|
||||
"home.title": "Home",
|
||||
"home.recentlyPlayed": "Recently Played",
|
||||
"home.recentlyAdded": "Recently Added",
|
||||
|
@ -265,11 +276,7 @@
|
|||
"action.export": "Export",
|
||||
"action.showAlbum": "Show Complete Album",
|
||||
"action.tray.minimize": "Minimize to Tray",
|
||||
"action.tray.quit": "Quit",
|
||||
"action.tray.show": "Show Cider",
|
||||
"action.tray.playpause": "Play/Pause",
|
||||
"action.tray.next": "Next",
|
||||
"action.tray.previous": "Previous",
|
||||
"action.tray.listento": "Listen To:",
|
||||
"action.update": "Update",
|
||||
"action.install": "Install",
|
||||
|
@ -289,45 +296,26 @@
|
|||
"action.createNew": "Create New...",
|
||||
"action.openArtworkInBrowser": "Open artwork in browser",
|
||||
"action.scrollToTop": "Scroll to top",
|
||||
"menubar.options.about": "About",
|
||||
"menubar.options.settings": "Settings",
|
||||
"menubar.options.quit": "Quit Cider",
|
||||
"menubar.options.view": "View ",
|
||||
"menubar.options.view": "View",
|
||||
"menubar.options.reload": "Reload",
|
||||
"menubar.options.forcereload": "Force Reload",
|
||||
"menubar.options.toggledevtools": "Toggle Developer Tools",
|
||||
"menubar.options.window": "Window",
|
||||
"menubar.options.minimize": "Minimize",
|
||||
"menubar.options.toggleprivate": "Toggle Private Session",
|
||||
"menubar.options.webremote": "Web Remote",
|
||||
"menubar.options.audio": "Audio Settings",
|
||||
"menubar.options.plugins": "Plu-gins Menu",
|
||||
"menubar.options.controls": "Controls",
|
||||
"menubar.options.next": "Next",
|
||||
"menubar.options.playpause": "Play/Pause",
|
||||
"menubar.options.previous": "Previous",
|
||||
"menubar.options.volumeup": "Volume Up",
|
||||
"menubar.options.volumedown": "Volume Down",
|
||||
"menubar.options.browse": "Browse",
|
||||
"menubar.options.artists": "Artists",
|
||||
"menubar.options.search": "Search",
|
||||
"menubar.options.albums": "Albums",
|
||||
"menubar.options.cast": "Cast To Devices",
|
||||
"menubar.options.account": "Account",
|
||||
"menubar.options.accountsettings": "Account Settings",
|
||||
"menubar.options.signout": "Sign Out",
|
||||
"menubar.options.support": "Support",
|
||||
"menubar.options.discord": "Discord",
|
||||
"menubar.options.github": "GitHub Wiki",
|
||||
"menubar.options.report": "Report a...",
|
||||
"menubar.options.bug": "Bug",
|
||||
"menubar.options.feature": "Feature Request",
|
||||
"menubar.options.trans": "Translation Report/Request",
|
||||
"menubar.options.license": "View License",
|
||||
"menubar.options.conf": "Open Configuration File in Editor",
|
||||
"menubar.options.listennow": "Listen Now",
|
||||
"menubar.options.recentlyAdded": "Recently Added",
|
||||
"menubar.options.songs": "Songs",
|
||||
"menubar.options.zoom": "Zoom",
|
||||
"settings.header.general": "General",
|
||||
"settings.header.general.description": "Adjust the general settings for Cider.",
|
||||
"settings.option.general.language": "Language",
|
||||
|
@ -347,11 +335,15 @@
|
|||
"settings.option.general.customizeSidebar": "Customize Sidebar Items",
|
||||
"settings.option.general.customizeSidebar.customize": "Customize",
|
||||
"settings.option.general.keybindings": "Keybindings",
|
||||
"settings.option.general.keybindings.library": "Library",
|
||||
"settings.option.general.keybindings.session": "Session",
|
||||
"settings.option.general.keybindings.control": "Controls",
|
||||
"settings.option.general.keybindings.interface": "Interface",
|
||||
"settings.option.general.keybindings.advanced": "Advanced",
|
||||
"settings.option.general.keybindings.pressCombination": "Press a combination of two keys to update keybind.",
|
||||
"settings.option.general.keybindings.pressEscape": "Press Escape key to go back.",
|
||||
"settings.notyf.general.keybindings.update.success": "Keybind updated successfully",
|
||||
"settings.prompt.general.keybindings.update.success": "Keybind updated successfully. Press OK to relaunch Cider",
|
||||
"settings.option.general.keybindings.open": "Open",
|
||||
"settings.option.general.themeUpdateNotification": "Automatically check for theme updates",
|
||||
"settings.option.general.showLovedTracksInline": "Show loved tracks inline",
|
||||
"settings.description.search": "Search",
|
||||
|
|
|
@ -164,7 +164,7 @@
|
|||
"term.plugin": "插件",
|
||||
"term.pluginMenu": "插件菜单",
|
||||
"term.pluginMenu.none": "沒有交互式插件",
|
||||
"term.replay":"重新播放",
|
||||
"term.replay":"音乐回忆",
|
||||
"term.uniqueAlbums":"Unique Albums",
|
||||
"term.uniqueArtists":"Unique Artists",
|
||||
"term.uniqueSongs":"Unique Songs",
|
||||
|
@ -177,6 +177,8 @@
|
|||
"term.confirmLogout":"你确定要退出登录吗?",
|
||||
"term.creditDesignedBy":"由 ${authorUsername} 设计",
|
||||
"term.discNumber":"碟 ${discNumber}",
|
||||
"home.syncFavorites": "同步喜爱艺人",
|
||||
"home.syncFavorites.gettingArtists": "获取喜爱艺人...",
|
||||
"home.title": "主页",
|
||||
"home.recentlyPlayed": "最近播放",
|
||||
"home.recentlyAdded": "最近添加",
|
||||
|
@ -197,6 +199,8 @@
|
|||
"podcast.episodes": "单集",
|
||||
"podcast.playEpisode": "播放单集",
|
||||
"podcast.website": "Podcast 网站",
|
||||
"action.favorite":"喜爱",
|
||||
"action.removeFavorite":"取消喜爱",
|
||||
"action.hideLibrary":"隐藏资料库",
|
||||
"action.showLibrary":"显示资料可查",
|
||||
"action.cut":"剪切",
|
||||
|
@ -362,7 +366,7 @@
|
|||
"settings.option.audio.advanced":"高级功能",
|
||||
"settings.option.audio.changePlaybackRate":"修改播放速度",
|
||||
"settings.option.audio.playbackRate":"播放速度",
|
||||
"settings.option.audio.playbackRate.change":"播放速度已修改",
|
||||
"settings.option.audio.playbackRate.change":"修改",
|
||||
"settings.option.audio.quality": "音质",
|
||||
"settings.header.audio.quality.hireslossless": "高解析度无损",
|
||||
"settings.header.audio.quality.hireslossless.description": "(最高 24 位/192 kHz)",
|
||||
|
@ -430,10 +434,15 @@
|
|||
"settings.header.visual": "外观",
|
||||
"settings.header.visual.description": "调整 Cider 的外观",
|
||||
"settings.option.visual.windowStyle":"窗口风格",
|
||||
"settings.option.visual.customAccentColor": "自定义强调色",
|
||||
"settings.option.visual.accentColor": "强调色",
|
||||
"settings.option.visual.purplePodcastPlaybackBar": "播放播客时使用紫色进度条",
|
||||
"settings.option.visual.windowColor": "窗口色调",
|
||||
"settings.option.visual.windowBackgroundStyle": "窗口背景样式",
|
||||
"settings.header.visual.windowBackgroundStyle.none": "无",
|
||||
"settings.header.visual.windowBackgroundStyle.artwork": "专辑插图",
|
||||
"settings.header.visual.windowBackgroundStyle.image": "图像",
|
||||
"settings.header.visual.windowBackgroundStyle.color":"色调",
|
||||
"settings.option.visual.animatedArtwork": "动态专辑插图",
|
||||
"settings.header.visual.animatedArtwork.always": "总是显示",
|
||||
"settings.header.visual.animatedArtwork.limited": "只在艺人页面和专辑插图显示",
|
||||
|
|
|
@ -332,7 +332,7 @@ export class AppEvents {
|
|||
|
||||
{
|
||||
visible: !visible,
|
||||
label: this.i18n['action.tray.playpause'],
|
||||
label: this.i18n['term.playpause'],
|
||||
click: () => {
|
||||
utils.getWindow().webContents.executeJavaScript('MusicKitInterop.playPause()')
|
||||
}
|
||||
|
@ -340,7 +340,7 @@ export class AppEvents {
|
|||
|
||||
{
|
||||
visible: !visible,
|
||||
label: this.i18n['action.tray.next'],
|
||||
label: this.i18n['term.next'],
|
||||
click: () => {
|
||||
utils.getWindow().webContents.executeJavaScript(`MusicKitInterop.next()`)
|
||||
}
|
||||
|
@ -348,7 +348,7 @@ export class AppEvents {
|
|||
|
||||
{
|
||||
visible: !visible,
|
||||
label: this.i18n['action.tray.previous'],
|
||||
label: this.i18n['term.previous'],
|
||||
click: () => {
|
||||
utils.getWindow().webContents.executeJavaScript(`MusicKitInterop.previous()`)
|
||||
}
|
||||
|
@ -369,7 +369,7 @@ export class AppEvents {
|
|||
}
|
||||
},
|
||||
{
|
||||
label: this.i18n['action.tray.quit'],
|
||||
label: this.i18n['term.quit'],
|
||||
click: () => {
|
||||
app.quit()
|
||||
}
|
||||
|
|
|
@ -1167,6 +1167,10 @@ export class BrowserWindow {
|
|||
app.quit();
|
||||
})
|
||||
|
||||
ipcMain.handle("quit-app", (_event, _) => {
|
||||
app.quit();
|
||||
})
|
||||
|
||||
app.on('before-quit', () => {
|
||||
|
||||
})
|
||||
|
|
|
@ -97,6 +97,18 @@ export class Store {
|
|||
"CommandOrControl", // Who the hell uses a different key for this? Fucking Option?
|
||||
","
|
||||
],
|
||||
"zoomn": [
|
||||
"Control",
|
||||
"numadd",
|
||||
],
|
||||
"zoomt": [
|
||||
"Control",
|
||||
"numsub",
|
||||
],
|
||||
"zoomrst": [
|
||||
"Control",
|
||||
"num0",
|
||||
],
|
||||
"openDeveloperTools": [
|
||||
"CommandOrControl",
|
||||
"Shift",
|
||||
|
@ -218,7 +230,6 @@ export class Store {
|
|||
},
|
||||
"windowControlPosition": 0, // 0 default right
|
||||
"nativeTitleBar": false,
|
||||
"uiScale": 1.0,
|
||||
"windowColor": "#000000",
|
||||
"customAccentColor": false,
|
||||
"accentColor": "#fc3c44",
|
||||
|
@ -232,10 +243,11 @@ export class Store {
|
|||
"enable_yt": false,
|
||||
},
|
||||
"advanced": {
|
||||
"AudioContext": false,
|
||||
"AudioContext": true,
|
||||
"experiments": [],
|
||||
"playlistTrackMapping": true,
|
||||
"ffmpegLocation": ""
|
||||
"ffmpegLocation": "",
|
||||
"disableLogging": false
|
||||
},
|
||||
"connectUser": {
|
||||
"auth": null,
|
||||
|
|
|
@ -17,6 +17,8 @@ export default class Thumbar {
|
|||
* Menubar Assets
|
||||
* @private
|
||||
*/
|
||||
|
||||
private isNotMac: boolean = process.platform !== 'darwin';
|
||||
private isMac: boolean = process.platform === 'darwin';
|
||||
private _menuTemplate: any = [
|
||||
{
|
||||
|
@ -28,12 +30,12 @@ export default class Thumbar {
|
|||
},
|
||||
{type: 'separator'},
|
||||
{
|
||||
label: utils.getLocale(utils.getStoreValue('general.language'), 'menubar.options.toggleprivate'),
|
||||
label: utils.getLocale(utils.getStoreValue('general.language'), 'term.toggleprivate'),
|
||||
accelerator: utils.getStoreValue("general.keybindings.togglePrivateSession").join('+'),
|
||||
click: () => utils.getWindow().webContents.executeJavaScript(`app.cfg.general.privateEnabled = !app.cfg.general.privateEnabled`)
|
||||
},
|
||||
{
|
||||
label: utils.getLocale(utils.getStoreValue('general.language'), 'menubar.options.settings'),
|
||||
label: utils.getLocale(utils.getStoreValue('general.language'), 'term.settings'),
|
||||
accelerator: utils.getStoreValue("general.keybindings.settings").join('+'),
|
||||
click: () => utils.getWindow().webContents.executeJavaScript(`app.appRoute('settings')`)
|
||||
},
|
||||
|
@ -47,11 +49,21 @@ export default class Thumbar {
|
|||
{type: 'separator'},
|
||||
{role: 'quit'}
|
||||
] : []),
|
||||
...(this.isNotMac ? [
|
||||
{type: 'separator'},
|
||||
{
|
||||
label: utils.getLocale(utils.getStoreValue('general.language'), 'term.quit'),
|
||||
accelerator: 'Control+Q',
|
||||
click: () => app.quit()
|
||||
|
||||
}
|
||||
] : [])
|
||||
]
|
||||
},
|
||||
{
|
||||
label: utils.getLocale(utils.getStoreValue('general.language'), 'menubar.options.view'),
|
||||
submenu: [
|
||||
...(this.isMac ? [
|
||||
{role: 'reload'},
|
||||
{role: 'forceReload'},
|
||||
{role: 'toggleDevTools'},
|
||||
|
@ -62,40 +74,41 @@ export default class Thumbar {
|
|||
{type: 'separator'},
|
||||
{role: 'togglefullscreen'},
|
||||
{type: 'separator'},
|
||||
] : []),
|
||||
{
|
||||
label: utils.getLocale(utils.getStoreValue('general.language'), 'menubar.options.search'),
|
||||
label: utils.getLocale(utils.getStoreValue('general.language'), 'term.search'),
|
||||
accelerator: utils.getStoreValue("general.keybindings.search").join('+'),
|
||||
click: () => utils.getWindow().webContents.executeJavaScript('app.focusSearch()')
|
||||
},
|
||||
{type:'separator'},
|
||||
{
|
||||
label: utils.getLocale(utils.getStoreValue('general.language'), 'menubar.options.listennow'),
|
||||
label: utils.getLocale(utils.getStoreValue('general.language'), 'term.listenNow'),
|
||||
accelerator: utils.getStoreValue('general.keybindings.listnow').join('+'),
|
||||
click: () => utils.getWindow().webContents.executeJavaScript(`app.appRoute('listen_now')`)
|
||||
},
|
||||
{
|
||||
label: utils.getLocale(utils.getStoreValue('general.language'), 'menubar.options.browse'),
|
||||
label: utils.getLocale(utils.getStoreValue('general.language'), 'term.browse'),
|
||||
accelerator: utils.getStoreValue("general.keybindings.browse").join('+'),
|
||||
click: () => utils.getWindow().webContents.executeJavaScript(`app.appRoute('browse')`)
|
||||
},
|
||||
{type: 'separator'},
|
||||
{
|
||||
label: utils.getLocale(utils.getStoreValue('general.language'), 'menubar.options.recentlyAdded')
|
||||
label: utils.getLocale(utils.getStoreValue('general.language'), 'term.recentlyAdded')
|
||||
,accelerator: utils.getStoreValue("general.keybindings.recentAdd").join('+'),
|
||||
click: () => utils.getWindow().webContents.executeJavaScript(`app.appRoute('library-recentlyadded')`)
|
||||
},
|
||||
{
|
||||
label: utils.getLocale(utils.getStoreValue('general.language'), 'menubar.options.songs'),
|
||||
label: utils.getLocale(utils.getStoreValue('general.language'), 'term.songs'),
|
||||
accelerator: utils.getStoreValue("general.keybindings.songs").join('+'),
|
||||
click: () => utils.getWindow().webContents.executeJavaScript(`app.appRoute('library-songs')`)
|
||||
},
|
||||
{
|
||||
label: utils.getLocale(utils.getStoreValue('general.language'), 'menubar.options.albums'),
|
||||
label: utils.getLocale(utils.getStoreValue('general.language'), 'term.albums'),
|
||||
accelerator: utils.getStoreValue("general.keybindings.albums").join('+'),
|
||||
click: () => utils.getWindow().webContents.executeJavaScript(`app.appRoute('library-albums')`)
|
||||
},
|
||||
{
|
||||
label: utils.getLocale(utils.getStoreValue('general.language'), 'menubar.options.artists'),
|
||||
label: utils.getLocale(utils.getStoreValue('general.language'), 'term.artists'),
|
||||
accelerator: utils.getStoreValue("general.keybindings.artists").join('+'),
|
||||
click: () => utils.getWindow().webContents.executeJavaScript(`app.appRoute('library-artists')`)
|
||||
},
|
||||
|
@ -105,29 +118,16 @@ export default class Thumbar {
|
|||
label: utils.getLocale(utils.getStoreValue('general.language'), 'menubar.options.window'),
|
||||
submenu: [
|
||||
{role: 'minimize', label: utils.getLocale(utils.getStoreValue('general.language'), 'menubar.options.minimize')},
|
||||
{type: 'separator'},
|
||||
...(this.isMac ? [
|
||||
{
|
||||
label: 'Show',
|
||||
click: () => utils.getWindow().show()
|
||||
},
|
||||
{role: 'toggleDevTools'},
|
||||
{role: 'zoom'},
|
||||
{type: 'separator'},
|
||||
{
|
||||
label:'Zoom',
|
||||
submenu: [
|
||||
{role: 'zoom'},
|
||||
{role: 'resetZoom'},
|
||||
{role: 'zoomIn'},
|
||||
{role: 'zoomOut'},
|
||||
]
|
||||
},
|
||||
{type: 'separator'},
|
||||
{role: 'togglefullscreen'},
|
||||
|
||||
|
||||
{type: 'separator'},
|
||||
{role: 'front'},
|
||||
{role: 'close'},
|
||||
{role: 'front'},
|
||||
{role: 'close'},
|
||||
{
|
||||
label: 'Edit',
|
||||
submenu: [
|
||||
|
@ -139,29 +139,74 @@ export default class Thumbar {
|
|||
{role: 'paste'},
|
||||
]
|
||||
},
|
||||
] : [
|
||||
{type: 'separator'},
|
||||
] : [ ]),
|
||||
...(this.isNotMac ? [
|
||||
|
||||
{
|
||||
label: utils.getLocale(utils.getStoreValue('general.language'), 'menubar.options.zoom'),
|
||||
submenu: [
|
||||
{
|
||||
label: utils.getLocale(utils.getStoreValue('general.language'), 'term.zoomin'),
|
||||
role: 'zoomIn',
|
||||
accelerator: utils.getStoreValue("general.keybindings.zoomn").join('+')
|
||||
|
||||
},
|
||||
{
|
||||
label: utils.getLocale(utils.getStoreValue('general.language'), 'term.zoomout'),
|
||||
role: 'zoomOut',
|
||||
accelerator: utils.getStoreValue("general.keybindings.zoomt").join('+')
|
||||
|
||||
},
|
||||
{
|
||||
label: utils.getLocale(utils.getStoreValue('general.language'), 'term.zoomreset'),
|
||||
role: 'resetZoom',
|
||||
accelerator: utils.getStoreValue("general.keybindings.zoomrst").join('+')
|
||||
}
|
||||
]
|
||||
},
|
||||
{type: 'separator'},
|
||||
{
|
||||
label: utils.getLocale(utils.getStoreValue('general.language'), 'term.fullscreen'),
|
||||
accelerator: 'Control+Enter',
|
||||
role: 'togglefullscreen'
|
||||
},
|
||||
{type: 'separator'},
|
||||
{
|
||||
label: utils.getLocale(utils.getStoreValue('general.language'), 'action.close'),
|
||||
accelerator: 'Control+W',
|
||||
role: 'close'
|
||||
},
|
||||
{type:'separator'},
|
||||
{role: 'reload', label: utils.getLocale(utils.getStoreValue('general.language'), 'menubar.options.reload')},
|
||||
{role: 'forceReload', label: utils.getLocale(utils.getStoreValue('general.language'), 'menubar.options.forcereload')},
|
||||
]),
|
||||
]
|
||||
{
|
||||
label: utils.getLocale(utils.getStoreValue('general.language'), 'menubar.options.reload'),
|
||||
accelerator: 'Control+R',
|
||||
role: 'reload'
|
||||
},
|
||||
{
|
||||
label: utils.getLocale(utils.getStoreValue('general.language'), 'menubar.options.forcereload'),
|
||||
accelerator: 'Control+Shift+R',
|
||||
role: 'forceReload'
|
||||
},
|
||||
] : []),
|
||||
],
|
||||
},
|
||||
|
||||
{
|
||||
label: utils.getLocale(utils.getStoreValue('general.language'), 'menubar.options.controls'),
|
||||
submenu: [
|
||||
{
|
||||
label: utils.getLocale(utils.getStoreValue('general.language'), 'menubar.options.playpause'),
|
||||
label: utils.getLocale(utils.getStoreValue('general.language'), 'term.playpause'),
|
||||
accelerator: 'Space',
|
||||
click: () => utils.getWindow().webContents.executeJavaScript(`app.SpacePause()`)
|
||||
},
|
||||
{
|
||||
label: utils.getLocale(utils.getStoreValue('general.language'), 'menubar.options.next'),
|
||||
label: utils.getLocale(utils.getStoreValue('general.language'), 'term.next'),
|
||||
accelerator: 'CommandOrControl+Right',
|
||||
click: () => utils.getWindow().webContents.executeJavaScript(`MusicKitInterop.next()`)
|
||||
},
|
||||
{
|
||||
label: utils.getLocale(utils.getStoreValue('general.language'), 'menubar.options.previous'),
|
||||
label: utils.getLocale(utils.getStoreValue('general.language'), 'term.previous'),
|
||||
accelerator: 'CommandOrControl+Left',
|
||||
click: () => utils.getWindow().webContents.executeJavaScript(`MusicKitInterop.previous()`)
|
||||
},
|
||||
|
@ -178,19 +223,19 @@ export default class Thumbar {
|
|||
},
|
||||
{type: 'separator'},
|
||||
{
|
||||
label: utils.getLocale(utils.getStoreValue('general.language'), 'menubar.options.cast'),
|
||||
label: utils.getLocale(utils.getStoreValue('general.language'), 'term.cast2'),
|
||||
accelerator: utils.getStoreValue("general.keybindings.castToDevices").join('+'),
|
||||
click: () => utils.getWindow().webContents.executeJavaScript(`app.modals.castMenu = true`)
|
||||
},
|
||||
{
|
||||
label: utils.getLocale(utils.getStoreValue('general.language'), 'menubar.options.webremote'),
|
||||
label: utils.getLocale(utils.getStoreValue('general.language'), 'term.webremote'),
|
||||
accelerator: utils.getStoreValue("general.keybindings.webRemote").join('+'),
|
||||
sublabel: 'Opens in external window',
|
||||
click: () => utils.getWindow().webContents.executeJavaScript(`app.appRoute('remote-pair')`)
|
||||
},
|
||||
{type: 'separator'},
|
||||
{
|
||||
label: utils.getLocale(utils.getStoreValue('general.language'), 'menubar.options.audio'),
|
||||
label: utils.getLocale(utils.getStoreValue('general.language'), 'term.audioSettings'),
|
||||
accelerator: utils.getStoreValue("general.keybindings.audioSettings").join('+'),
|
||||
click: () => utils.getWindow().webContents.executeJavaScript(`app.modals.audioSettings = true`)
|
||||
},
|
||||
|
@ -207,7 +252,7 @@ export default class Thumbar {
|
|||
label: utils.getLocale(utils.getStoreValue('general.language'), 'menubar.options.account'),
|
||||
submenu: [
|
||||
{
|
||||
label: utils.getLocale(utils.getStoreValue('general.language'), 'menubar.options.accountsettings'),
|
||||
label: utils.getLocale(utils.getStoreValue('general.language'), 'term.accountSettings'),
|
||||
click: () => utils.getWindow().webContents.executeJavaScript(`app.appRoute('apple-account-settings')`)
|
||||
},
|
||||
{
|
||||
|
@ -221,11 +266,11 @@ export default class Thumbar {
|
|||
role: 'help',
|
||||
submenu: [
|
||||
{
|
||||
label: utils.getLocale('Discord', 'menubar.options.discord'),
|
||||
label: utils.getLocale(utils.getStoreValue('general.language'), 'term.discord'),
|
||||
click: () => shell.openExternal("https://discord.gg/AppleMusic").catch(console.error)
|
||||
},
|
||||
{
|
||||
label: utils.getLocale('GitHub Wiki', 'menubar.options.github'),
|
||||
label: utils.getLocale(utils.getStoreValue('general.language'), 'term.github'),
|
||||
click: () => shell.openExternal("https://github.com/ciderapp/Cider/wiki/Troubleshooting").catch(console.error)
|
||||
},
|
||||
{type: 'separator'},
|
||||
|
|
|
@ -80,6 +80,7 @@ const CiderAudio = {
|
|||
}
|
||||
|
||||
} catch (e) {
|
||||
console.debug("[Cider][MaikiwiSoundCheck] normalizer func err: " + e)
|
||||
}
|
||||
},
|
||||
normalizerOff: function () {
|
||||
|
@ -619,89 +620,54 @@ const CiderAudio = {
|
|||
switch (app.cfg.audio.maikiwiAudio.ciderPPE_value) {
|
||||
case "MAIKIWI":
|
||||
|
||||
try {
|
||||
switch (localStorage.getItem("playingBitrate")) {
|
||||
case "64":
|
||||
CiderAudio.audioNodes.llpw[0] = CiderAudio.context.createConvolver();
|
||||
CiderAudio.audioNodes.llpw[0].normalize = false;
|
||||
fetch('./cideraudio/impulses/CAP_64.wav').then(async (impulseData) => {
|
||||
let bufferedImpulse = await impulseData.arrayBuffer();
|
||||
CiderAudio.audioNodes.llpw[0].buffer = await CiderAudio.context.decodeAudioData(bufferedImpulse);
|
||||
});
|
||||
console.debug("[Cider][Audio] CAP Adaptive - 64kbps");
|
||||
|
||||
break;
|
||||
case "256":
|
||||
CiderAudio.audioNodes.llpw[0] = CiderAudio.context.createConvolver(); CiderAudio.audioNodes.llpw[0].normalize = false;
|
||||
CiderAudio.audioNodes.llpw[1] = CiderAudio.context.createGain(); CiderAudio.audioNodes.llpw[1].gain.value = 2.37; // Post Gain Compensation
|
||||
CiderAudio.audioNodes.llpw[0].connect(CiderAudio.audioNodes.llpw[1]);
|
||||
fetch('./cideraudio/impulses/CAP_256_FINAL_48k.wav').then(async (impulseData) => {
|
||||
let bufferedImpulse = await impulseData.arrayBuffer();
|
||||
CiderAudio.audioNodes.llpw[0].buffer = await CiderAudio.context.decodeAudioData(bufferedImpulse);
|
||||
});
|
||||
console.debug("[Cider][Audio] CAP Adaptive - 256kbps_2_48k");
|
||||
|
||||
break;
|
||||
default:
|
||||
CiderAudio.audioNodes.llpw[0] = CiderAudio.context.createConvolver(); CiderAudio.audioNodes.llpw[0].normalize = false;
|
||||
CiderAudio.audioNodes.llpw[1] = CiderAudio.context.createGain(); CiderAudio.audioNodes.llpw[1].gain.value = 2.37; // Post Gain Compensation
|
||||
CiderAudio.audioNodes.llpw[0].connect(CiderAudio.audioNodes.llpw[1]);
|
||||
fetch('./cideraudio/impulses/CAP_256_FINAL_48k.wav').then(async (impulseData) => {
|
||||
let bufferedImpulse = await impulseData.arrayBuffer();
|
||||
CiderAudio.audioNodes.llpw[0].buffer = await CiderAudio.context.decodeAudioData(bufferedImpulse);
|
||||
});
|
||||
console.debug("[Cider][Audio] CAP Adaptive - CONFIG FALLBACK - 256kbps_2_48k");
|
||||
try {
|
||||
switch (localStorage.getItem("playingBitrate")) {
|
||||
case "64":
|
||||
CiderAudio.audioNodes.llpw[0] = CiderAudio.context.createConvolver();
|
||||
CiderAudio.audioNodes.llpw[0].normalize = false;
|
||||
fetch('./cideraudio/impulses/CAP_64.wav').then(async (impulseData) => {
|
||||
let bufferedImpulse = await impulseData.arrayBuffer();
|
||||
CiderAudio.audioNodes.llpw[0].buffer = await CiderAudio.context.decodeAudioData(bufferedImpulse);
|
||||
});
|
||||
console.debug("[Cider][Audio] CAP Adaptive - 64kbps");
|
||||
|
||||
break;
|
||||
case "256":
|
||||
CiderAudio.audioNodes.llpw[0] = CiderAudio.context.createConvolver(); CiderAudio.audioNodes.llpw[0].normalize = false;
|
||||
CiderAudio.audioNodes.llpw[1] = CiderAudio.context.createGain(); CiderAudio.audioNodes.llpw[1].gain.value = 2.37; // Post Gain Compensation
|
||||
CiderAudio.audioNodes.llpw[0].connect(CiderAudio.audioNodes.llpw[1]);
|
||||
fetch('./cideraudio/impulses/CAP_256_FINAL_48k.wav').then(async (impulseData) => {
|
||||
let bufferedImpulse = await impulseData.arrayBuffer();
|
||||
CiderAudio.audioNodes.llpw[0].buffer = await CiderAudio.context.decodeAudioData(bufferedImpulse);
|
||||
});
|
||||
console.debug("[Cider][Audio] CAP Adaptive - 256kbps_2_48k");
|
||||
|
||||
break;
|
||||
default:
|
||||
CiderAudio.audioNodes.llpw[0] = CiderAudio.context.createConvolver(); CiderAudio.audioNodes.llpw[0].normalize = false;
|
||||
CiderAudio.audioNodes.llpw[1] = CiderAudio.context.createGain(); CiderAudio.audioNodes.llpw[1].gain.value = 2.37; // Post Gain Compensation
|
||||
CiderAudio.audioNodes.llpw[0].connect(CiderAudio.audioNodes.llpw[1]);
|
||||
fetch('./cideraudio/impulses/CAP_256_FINAL_48k.wav').then(async (impulseData) => {
|
||||
let bufferedImpulse = await impulseData.arrayBuffer();
|
||||
CiderAudio.audioNodes.llpw[0].buffer = await CiderAudio.context.decodeAudioData(bufferedImpulse);
|
||||
});
|
||||
console.debug("[Cider][Audio] CAP Adaptive - CONFIG FALLBACK - 256kbps_2_48k");
|
||||
|
||||
break;
|
||||
}
|
||||
|
||||
} catch (e) {
|
||||
CiderAudio.audioNodes.llpw[0] = CiderAudio.context.createConvolver(); CiderAudio.audioNodes.llpw[0].normalize = false;
|
||||
CiderAudio.audioNodes.llpw[1] = CiderAudio.context.createGain(); CiderAudio.audioNodes.llpw[1].gain.value = 2.37;
|
||||
CiderAudio.audioNodes.llpw[0].connect(CiderAudio.audioNodes.llpw[1]);
|
||||
fetch('./cideraudio/impulses/CAP_256_FINAL_48k.wav').then(async (impulseData) => {
|
||||
let bufferedImpulse = await impulseData.arrayBuffer();
|
||||
CiderAudio.audioNodes.llpw[0].buffer = await CiderAudio.context.decodeAudioData(bufferedImpulse);
|
||||
});
|
||||
console.debug("[Cider][Audio] CAP Adaptive - (Error Fallback) 256kbps");
|
||||
}
|
||||
|
||||
switch (destination) {
|
||||
case "spatial":
|
||||
try { CiderAudio.audioNodes.llpw.at(-1).connect(CiderAudio.audioNodes.spatialNode); console.debug("[Cider][Audio] llpw_n1 -> Spatial");} catch (e) { }
|
||||
break;
|
||||
case "n5":
|
||||
try {
|
||||
CiderAudio.audioNodes.llpw.at(-1).connect(CiderAudio.audioNodes.atmosphereRealizer2);
|
||||
console.debug("[Cider][Audio] llpw_n1 -> atmosphereRealizer2");
|
||||
} catch (e) { }
|
||||
break;
|
||||
case 'n4':
|
||||
try {
|
||||
CiderAudio.audioNodes.llpw.at(-1).connect(CiderAudio.audioNodes.atmosphereRealizer1);
|
||||
console.debug("[Cider][Audio] llpw_n1 -> atmosphereRealizer1");
|
||||
} catch (e) { }
|
||||
break;
|
||||
|
||||
case 'n3':
|
||||
try { CiderAudio.audioNodes.llpw.at(-1).connect(CiderAudio.audioNodes.vibrantbassNode[0]);
|
||||
console.debug("[Cider][Audio] llpw_n1 -> vibrantbassNode");} catch (e) { }
|
||||
break;
|
||||
case 'n2':
|
||||
try { CiderAudio.audioNodes.llpw.at(-1).connect(CiderAudio.audioNodes.audioBands[0]); console.debug("[Cider][Audio] llpw_n1 -> audioBands");} catch (e) { }
|
||||
break;
|
||||
case 'n1':
|
||||
try {
|
||||
CiderAudio.audioNodes.llpw.at(-1).connect(CiderAudio.audioNodes.llpw[0]);
|
||||
console.debug("[Cider][Audio] llpw_n1 -> llpw");
|
||||
} catch (e) { }
|
||||
break;
|
||||
case 'n0':
|
||||
try { CiderAudio.audioNodes.llpw.at(-1).connect(CiderAudio.context.destination); console.debug("[Cider][Audio] llpw_n1 -> destination");} catch (e) { }
|
||||
break;
|
||||
break;
|
||||
}
|
||||
|
||||
break;
|
||||
|
||||
} catch (e) {
|
||||
CiderAudio.audioNodes.llpw[0] = CiderAudio.context.createConvolver(); CiderAudio.audioNodes.llpw[0].normalize = false;
|
||||
CiderAudio.audioNodes.llpw[1] = CiderAudio.context.createGain(); CiderAudio.audioNodes.llpw[1].gain.value = 2.37;
|
||||
CiderAudio.audioNodes.llpw[0].connect(CiderAudio.audioNodes.llpw[1]);
|
||||
fetch('./cideraudio/impulses/CAP_256_FINAL_48k.wav').then(async (impulseData) => {
|
||||
let bufferedImpulse = await impulseData.arrayBuffer();
|
||||
CiderAudio.audioNodes.llpw[0].buffer = await CiderAudio.context.decodeAudioData(bufferedImpulse);
|
||||
});
|
||||
console.debug("[Cider][Audio] CAP Adaptive - (Error Fallback) 256kbps");
|
||||
}
|
||||
|
||||
break;
|
||||
case "MAIKIWI_LEGACY":
|
||||
CiderAudio.audioNodes.llpw[0] = CiderAudio.context.createConvolver();
|
||||
CiderAudio.audioNodes.llpw[0].normalize = false;
|
||||
|
@ -709,41 +675,6 @@ const CiderAudio = {
|
|||
let bufferedImpulse = await impulseData.arrayBuffer();
|
||||
CiderAudio.audioNodes.llpw[0].buffer = await CiderAudio.context.decodeAudioData(bufferedImpulse);
|
||||
});
|
||||
|
||||
switch (destination) {
|
||||
case "spatial":
|
||||
try { CiderAudio.audioNodes.llpw[0].connect(CiderAudio.audioNodes.spatialNode); console.debug("[Cider][Audio] llpw_n1 -> Spatial");} catch (e) { }
|
||||
break;
|
||||
case "n5":
|
||||
try {
|
||||
CiderAudio.audioNodes.llpw[0].connect(CiderAudio.audioNodes.atmosphereRealizer2);
|
||||
console.debug("[Cider][Audio] llpw_n1 -> atmosphereRealizer2");
|
||||
} catch (e) { }
|
||||
break;
|
||||
case 'n4':
|
||||
try {
|
||||
CiderAudio.audioNodes.llpw[0].connect(CiderAudio.audioNodes.atmosphereRealizer1);
|
||||
console.debug("[Cider][Audio] llpw_n1 -> atmosphereRealizer1");
|
||||
} catch (e) { }
|
||||
break;
|
||||
case 'n1':
|
||||
try {
|
||||
CiderAudio.audioNodes.llpw[0].connect(CiderAudio.audioNodes.llpw[0]);
|
||||
console.debug("[Cider][Audio] llpw_n1 -> llpw");
|
||||
} catch (e) { }
|
||||
break;
|
||||
case 'n3':
|
||||
try { CiderAudio.audioNodes.llpw[0].connect(CiderAudio.audioNodes.vibrantbassNode[0]);
|
||||
console.debug("[Cider][Audio] llpw_n1 -> vibrantbassNode");} catch (e) { }
|
||||
break;
|
||||
case 'n2':
|
||||
try { CiderAudio.audioNodes.llpw[0].connect(CiderAudio.audioNodes.audioBands[0]); console.debug("[Cider][Audio] llpw_n1 -> audioBands");} catch (e) { }
|
||||
break;
|
||||
case 'n0':
|
||||
try { CiderAudio.audioNodes.llpw[0].connect(CiderAudio.context.destination); console.debug("[Cider][Audio] llpw_n1 -> destination");} catch (e) { }
|
||||
break;
|
||||
}
|
||||
|
||||
console.debug("[Cider][Audio] CAP - Maikiwi Signature Mode");
|
||||
break;
|
||||
case "NATURAL":
|
||||
|
@ -754,41 +685,6 @@ const CiderAudio = {
|
|||
CiderAudio.audioNodes.llpw[0].buffer = await CiderAudio.context.decodeAudioData(bufferedImpulse);
|
||||
});
|
||||
|
||||
switch (destination) {
|
||||
case "spatial":
|
||||
try { CiderAudio.audioNodes.llpw.at(-1).connect(CiderAudio.audioNodes.spatialNode); console.debug("[Cider][Audio] llpw_n1 -> Spatial");} catch (e) { }
|
||||
break;
|
||||
case "n5":
|
||||
try {
|
||||
CiderAudio.audioNodes.llpw[0].connect(CiderAudio.audioNodes.atmosphereRealizer2);
|
||||
console.debug("[Cider][Audio] llpw_n1 -> atmosphereRealizer2");
|
||||
} catch (e) { }
|
||||
break;
|
||||
case 'n4':
|
||||
try {
|
||||
CiderAudio.audioNodes.llpw[0].connect(CiderAudio.audioNodes.atmosphereRealizer1);
|
||||
console.debug("[Cider][Audio] llpw_n1 -> atmosphereRealizer1");
|
||||
} catch (e) { }
|
||||
break;
|
||||
case 'n1':
|
||||
try {
|
||||
CiderAudio.audioNodes.llpw[0].connect(CiderAudio.audioNodes.llpw[0]);
|
||||
console.debug("[Cider][Audio] llpw_n1 -> llpw");
|
||||
} catch (e) { }
|
||||
break;
|
||||
case 'n3':
|
||||
try { CiderAudio.audioNodes.llpw[0].connect(CiderAudio.audioNodes.vibrantbassNode[0]);
|
||||
console.debug("[Cider][Audio] llpw_n1 -> vibrantbassNode");} catch (e) { }
|
||||
break;
|
||||
case 'n2':
|
||||
try { CiderAudio.audioNodes.llpw[0].connect(CiderAudio.audioNodes.audioBands[0]); console.debug("[Cider][Audio] llpw_n1 -> audioBands");} catch (e) { }
|
||||
break;
|
||||
case 'n0':
|
||||
try { CiderAudio.audioNodes.llpw[0].connect(CiderAudio.context.destination); console.debug("[Cider][Audio] llpw_n1 -> destination");} catch (e) { }
|
||||
break;
|
||||
|
||||
}
|
||||
|
||||
console.debug("[Cider][Audio] CAP - Natural Mode");
|
||||
break;
|
||||
|
||||
|
@ -803,41 +699,7 @@ const CiderAudio = {
|
|||
for (let i = 1; i < LLPW_FREQUENCIES.length; i ++) {
|
||||
CiderAudio.audioNodes.llpw[i-1].connect(CiderAudio.audioNodes.llpw[i]);
|
||||
}
|
||||
|
||||
switch (destination) {
|
||||
case "spatial":
|
||||
try { CiderAudio.audioNodes.llpw.at(-1).connect(CiderAudio.audioNodes.spatialNode); console.debug("[Cider][Audio] llpw_n1 -> Spatial");} catch (e) { }
|
||||
break;
|
||||
case "n5":
|
||||
try {
|
||||
CiderAudio.audioNodes.llpw.at(-1).connect(CiderAudio.audioNodes.atmosphereRealizer2);
|
||||
console.debug("[Cider][Audio] llpw_n1 -> atmosphereRealizer2");
|
||||
} catch (e) { }
|
||||
break;
|
||||
case 'n4':
|
||||
try {
|
||||
CiderAudio.audioNodes.llpw.at(-1).connect(CiderAudio.audioNodes.atmosphereRealizer1);
|
||||
console.debug("[Cider][Audio] llpw_n1 -> atmosphereRealizer1");
|
||||
} catch (e) { }
|
||||
break;
|
||||
case 'n1':
|
||||
try {
|
||||
CiderAudio.audioNodes.llpw.at(-1).connect(CiderAudio.audioNodes.llpw[0]);
|
||||
console.debug("[Cider][Audio] llpw_n1 -> llpw");
|
||||
} catch (e) { }
|
||||
break;
|
||||
case 'n3':
|
||||
try { CiderAudio.audioNodes.llpw.at(-1).connect(CiderAudio.audioNodes.vibrantbassNode[0]);
|
||||
console.debug("[Cider][Audio] llpw_n1 -> vibrantbassNode");} catch (e) { }
|
||||
break;
|
||||
case 'n2':
|
||||
try { CiderAudio.audioNodes.llpw.at(-1).connect(CiderAudio.audioNodes.audioBands[0]); console.debug("[Cider][Audio] llpw_n1 -> audioBands");} catch (e) { }
|
||||
break;
|
||||
case 'n0':
|
||||
try { CiderAudio.audioNodes.llpw.at(-1).connect(CiderAudio.context.destination); console.debug("[Cider][Audio] llpw_n1 -> destination");} catch (e) { }
|
||||
break;
|
||||
}
|
||||
console.debug("[Cider][Audio] CAP - Legacy Mode");
|
||||
console.debug("[Cider][Audio] CAP - Legacy Mode");
|
||||
|
||||
break;
|
||||
|
||||
|
@ -851,42 +713,43 @@ const CiderAudio = {
|
|||
});
|
||||
app.cfg.audio.maikiwiAudio.ciderPPE_value = "MAIKIWI";
|
||||
|
||||
switch (destination) {
|
||||
case "spatial":
|
||||
try { CiderAudio.audioNodes.llpw.at(-1).connect(CiderAudio.audioNodes.spatialNode); console.debug("[Cider][Audio] llpw_n1 -> Spatial");} catch (e) { }
|
||||
break;
|
||||
case "n5":
|
||||
try {
|
||||
CiderAudio.audioNodes.llpw[1].connect(CiderAudio.audioNodes.atmosphereRealizer2);
|
||||
console.debug("[Cider][Audio] llpw_n1 -> atmosphereRealizer2");
|
||||
} catch (e) { }
|
||||
break;
|
||||
case 'n4':
|
||||
try {
|
||||
CiderAudio.audioNodes.llpw[1].connect(CiderAudio.audioNodes.atmosphereRealizer1);
|
||||
console.debug("[Cider][Audio] llpw_n1 -> atmosphereRealizer1");
|
||||
} catch (e) { }
|
||||
break;
|
||||
case 'n1':
|
||||
try {
|
||||
CiderAudio.audioNodes.llpw[1].connect(CiderAudio.audioNodes.llpw[0]);
|
||||
console.debug("[Cider][Audio] llpw_n1 -> llpw");
|
||||
} catch (e) { }
|
||||
break;
|
||||
case 'n3':
|
||||
try { CiderAudio.audioNodes.llpw[1].connect(CiderAudio.audioNodes.vibrantbassNode[0]);
|
||||
console.debug("[Cider][Audio] llpw_n1 -> vibrantbassNode");} catch (e) { }
|
||||
break;
|
||||
case 'n2':
|
||||
try { CiderAudio.audioNodes.llpw[1].connect(CiderAudio.audioNodes.audioBands[0]); console.debug("[Cider][Audio] llpw_n1 -> audioBands");} catch (e) { }
|
||||
break;
|
||||
case 'n0':
|
||||
try { CiderAudio.audioNodes.llpw.at(-1).connect(CiderAudio.context.destination); console.debug("[Cider][Audio] llpw_n1 -> destination");} catch (e) { }
|
||||
break;
|
||||
}
|
||||
console.debug("[Cider][Audio] CAP - Maikiwi Adaptive Mode (Defaulted from broki config)");
|
||||
break;
|
||||
}
|
||||
|
||||
switch (destination) {
|
||||
case "spatial":
|
||||
try { CiderAudio.audioNodes.llpw.at(-1).connect(CiderAudio.audioNodes.spatialNode); console.debug("[Cider][Audio] llpw_n1 -> Spatial");} catch (e) { }
|
||||
break;
|
||||
case "n5":
|
||||
try {
|
||||
CiderAudio.audioNodes.llpw.at(-1).connect(CiderAudio.audioNodes.atmosphereRealizer2);
|
||||
console.debug("[Cider][Audio] llpw_n1 -> atmosphereRealizer2");
|
||||
} catch (e) { }
|
||||
break;
|
||||
case 'n4':
|
||||
try {
|
||||
CiderAudio.audioNodes.llpw.at(-1).connect(CiderAudio.audioNodes.atmosphereRealizer1);
|
||||
console.debug("[Cider][Audio] llpw_n1 -> atmosphereRealizer1");
|
||||
} catch (e) { }
|
||||
break;
|
||||
case 'n3':
|
||||
try { CiderAudio.audioNodes.llpw.at(-1).connect(CiderAudio.audioNodes.vibrantbassNode[0]);
|
||||
console.debug("[Cider][Audio] llpw_n1 -> vibrantbassNode");} catch (e) { }
|
||||
break;
|
||||
case 'n2':
|
||||
try { CiderAudio.audioNodes.llpw.at(-1).connect(CiderAudio.audioNodes.audioBands[0]); console.debug("[Cider][Audio] llpw_n1 -> audioBands");} catch (e) { }
|
||||
break;
|
||||
case 'n1':
|
||||
try {
|
||||
CiderAudio.audioNodes.llpw.at(-1).connect(CiderAudio.audioNodes.llpw[0]);
|
||||
console.debug("[Cider][Audio] llpw_n1 -> llpw");
|
||||
} catch (e) { }
|
||||
break;
|
||||
case 'n0':
|
||||
try { CiderAudio.audioNodes.llpw.at(-1).connect(CiderAudio.context.destination); console.debug("[Cider][Audio] llpw_n1 -> destination");} catch (e) { }
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
},
|
||||
|
|
|
@ -288,6 +288,7 @@
|
|||
|
||||
.podcast-header {
|
||||
text-align: center;
|
||||
padding: 0 1rem;
|
||||
}
|
||||
|
||||
.podcast-play-btn {
|
||||
|
@ -696,6 +697,16 @@
|
|||
width : 60vw;
|
||||
}
|
||||
|
||||
.descriptionEdit {
|
||||
font-size : 14px;
|
||||
flex-shrink : unset;
|
||||
background : transparent;
|
||||
border : 0px;
|
||||
color : inherit;
|
||||
font-family : inherit;
|
||||
width : 60vw;
|
||||
}
|
||||
|
||||
.playlist-artist {
|
||||
font-size : 20px;
|
||||
margin-bottom: 6px;
|
||||
|
@ -1897,4 +1908,4 @@
|
|||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -17,14 +17,26 @@ window.CiderCache = CiderCache
|
|||
window.CiderFrontAPI = CiderFrontAPI
|
||||
window.wsapi = wsapi
|
||||
|
||||
if (app.cfg.advanced.disableLogging === true) {
|
||||
window.console = {
|
||||
log: function() {},
|
||||
error: function() {},
|
||||
warn: function() {},
|
||||
assert: function() {},
|
||||
debug: function() {}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// Mount Vue to #app
|
||||
app.$mount("#app")
|
||||
|
||||
// Init CiderAudio
|
||||
if (app.cfg.advanced.AudioContext){
|
||||
CiderAudio.init()
|
||||
if (app.cfg.advanced.AudioContext === false){
|
||||
app.cfg.advanced.AudioContext === true;
|
||||
}
|
||||
|
||||
CiderAudio.init()
|
||||
// Import gamepad support
|
||||
app.simulateGamepad = simulateGamepad
|
||||
app.spawnMica = spawnMica
|
||||
|
|
|
@ -24,7 +24,7 @@ const Events = {
|
|||
// CTRL + R
|
||||
if (event.keyCode === 82 && event.ctrlKey) {
|
||||
event.preventDefault()
|
||||
bootbox.confirm("Reload Cider?", (res)=>{
|
||||
bootbox.confirm(app.getLz('term.reload'), (res)=>{
|
||||
if (res) {
|
||||
window.location.reload()
|
||||
}
|
||||
|
@ -91,8 +91,6 @@ const Events = {
|
|||
setTimeout(refreshFocus, 200);
|
||||
}
|
||||
|
||||
app.getHTMLStyle()
|
||||
|
||||
refreshFocus();
|
||||
}
|
||||
}
|
||||
|
|
|
@ -325,11 +325,7 @@ const app = new Vue({
|
|||
let advancedTooltip = this.cfg.audio.dBSPL ? (Number(this.cfg.audio.dBSPLcalibration) + (Math.log10(this.mk.volume) * 20)).toFixed(2) + ' dB SPL' : (Math.log10(this.mk.volume) * 20).toFixed(2) + ' dBFS'
|
||||
return this.cfg.audio.advanced ? advancedTooltip : (this.mk.volume * 100).toFixed(0) + '%'
|
||||
},
|
||||
mainMenuVisibility(val, isContextMenu) {
|
||||
if (this.chrome.sidebarCollapsed && !isContextMenu) {
|
||||
this.chrome.sidebarCollapsed = false
|
||||
return
|
||||
}
|
||||
mainMenuVisibility(val) {
|
||||
if (val) {
|
||||
(this.mk.isAuthorized) ? this.chrome.menuOpened = !this.chrome.menuOpened : false;
|
||||
if (!this.mk.isAuthorized) {
|
||||
|
@ -440,6 +436,9 @@ const app = new Vue({
|
|||
}
|
||||
})
|
||||
},
|
||||
quit() {
|
||||
ipcRenderer.invoke("quit-app")
|
||||
},
|
||||
async openAppleMusicURL(url) {
|
||||
let properties = MusicKit.formattedMediaURL(url)
|
||||
let item = {
|
||||
|
@ -527,11 +526,6 @@ const app = new Vue({
|
|||
navigateForward() {
|
||||
history.forward()
|
||||
},
|
||||
getHTMLStyle() {
|
||||
|
||||
ipcRenderer.send("setScreenScale", app.cfg.visual.uiScale);
|
||||
|
||||
},
|
||||
resetState() {
|
||||
this.menuPanel.visible = false;
|
||||
app.selectedMediaItems = [];
|
||||
|
@ -878,6 +872,7 @@ const app = new Vue({
|
|||
try {
|
||||
//CiderAudio.audioNodes.gainNode.gain.value = (Math.min(Math.pow(10, (replaygain.gain / 20)), (1 / replaygain.peak)))
|
||||
CiderAudio.audioNodes.gainNode.gain.value = gain
|
||||
CiderAudio.hierarchical_loading();
|
||||
} catch (e) {
|
||||
}
|
||||
}
|
||||
|
@ -947,49 +942,48 @@ const app = new Vue({
|
|||
self.$refs.queue.updateQueue();
|
||||
}
|
||||
this.currentSongInfo = a
|
||||
if (this.currentSongInfo === null || this.currentSongInfo === undefined) {return;} // EVIL EMPTY OBJECTS BE GONE
|
||||
|
||||
console.debug("songinfo: " + JSON.stringify(a))
|
||||
if (app.cfg.advanced.AudioContext) {
|
||||
try {
|
||||
if (app.mk.nowPlayingItem.flavor.includes("64")) {
|
||||
if (localStorage.getItem("playingBitrate") !== "64") {
|
||||
localStorage.setItem("playingBitrate", "64")
|
||||
CiderAudio.hierarchical_loading();
|
||||
}
|
||||
localStorage.setItem("playingBitrate", "64")
|
||||
} else if (app.mk.nowPlayingItem.flavor.includes("256")) {
|
||||
if (localStorage.getItem("playingBitrate") !== "256") {
|
||||
localStorage.setItem("playingBitrate", "256")
|
||||
CiderAudio.hierarchical_loading();
|
||||
}
|
||||
localStorage.setItem("playingBitrate", "256")
|
||||
} else {
|
||||
localStorage.setItem("playingBitrate", "256")
|
||||
CiderAudio.hierarchical_loading();
|
||||
}
|
||||
} catch (e) {
|
||||
localStorage.setItem("playingBitrate", "256")
|
||||
CiderAudio.hierarchical_loading();
|
||||
}
|
||||
}
|
||||
if (!app.cfg.audio.normalization) {CiderAudio.hierarchical_loading();}
|
||||
|
||||
}
|
||||
|
||||
|
||||
if (app.cfg.audio.normalization) {
|
||||
// get unencrypted audio previews to get SoundCheck's normalization tag
|
||||
try {
|
||||
let previewURL = null
|
||||
try {
|
||||
previewURL = app.mk.nowPlayingItem.previewURL
|
||||
previewURL = app.mk.nowPlayingItem.previewURL
|
||||
} catch (e) {
|
||||
}
|
||||
if (previewURL == null && ((app.mk.nowPlayingItem?._songId ?? (app.mk.nowPlayingItem["songId"] ?? app.mk.nowPlayingItem.relationships.catalog.data[0].id)) != -1)) {
|
||||
app.mk.api.v3.music(`/v1/catalog/${app.mk.storefrontId}/songs/${app.mk.nowPlayingItem?._songId ?? (app.mk.nowPlayingItem["songId"] ?? app.mk.nowPlayingItem.relationships.catalog.data[0].id)}`).then((response) => {
|
||||
previewURL = response.data.data[0].attributes.previews[0].url
|
||||
previewURL = response.data.data[0].attributes.previews[0].url
|
||||
if (previewURL)
|
||||
console.debug("[Cider][MaikiwiSoundCheck] previewURL response.data.data[0].attributes.previews[0].url: " + previewURL)
|
||||
ipcRenderer.send('getPreviewURL', previewURL)
|
||||
})
|
||||
} else {
|
||||
if (previewURL)
|
||||
console.debug("[Cider][MaikiwiSoundCheck] previewURL in app.mk.nowPlayingItem.previewURL: " + previewURL)
|
||||
ipcRenderer.send('getPreviewURL', previewURL)
|
||||
}
|
||||
|
||||
} catch (e) {
|
||||
if (e instanceof TypeError === false) {console.debug("[Cider][MaikiwiSoundCheck] normalizer function err: " + e)}
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -1461,6 +1455,12 @@ const app = new Vue({
|
|||
action: () => {
|
||||
this.newPlaylistFolder()
|
||||
}
|
||||
},
|
||||
{
|
||||
name: app.getLz("action.refresh"),
|
||||
action: ()=>{
|
||||
this.refreshPlaylists()
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
|
@ -1706,7 +1706,7 @@ const app = new Vue({
|
|||
this.page = ""
|
||||
const artistData = await this.mkapi("artists", false, id, {
|
||||
"views": "featured-release,full-albums,appears-on-albums,featured-albums,featured-on-albums,singles,compilation-albums,live-albums,latest-release,top-music-videos,similar-artists,top-songs,playlists,more-to-hear,more-to-see",
|
||||
"extend": "artistBio,bornOrFormed,editorialArtwork,editorialVideo,isGroup,origin,hero",
|
||||
"extend": "centeredFullscreenBackground,artistBio,bornOrFormed,editorialArtwork,editorialVideo,isGroup,origin,hero",
|
||||
"extend[playlists]": "trackCount",
|
||||
"include[songs]": "albums",
|
||||
"fields[albums]": "artistName,artistUrl,artwork,contentRating,editorialArtwork,editorialVideo,name,playParams,releaseDate,url,trackCount",
|
||||
|
@ -2462,6 +2462,7 @@ const app = new Vue({
|
|||
let library = []
|
||||
let cacheId = "library-songs"
|
||||
let downloaded = null;
|
||||
this.$store.commit("resetRecentlyAdded")
|
||||
if ((this.library.songs.downloadState == 2) && !force) {
|
||||
return
|
||||
}
|
||||
|
|
|
@ -19,6 +19,11 @@ const store = new Vuex.Store({
|
|||
}
|
||||
},
|
||||
mutations: {
|
||||
resetRecentlyAdded(state) {
|
||||
state.pageState.recentlyAdded.loaded = false;
|
||||
state.pageState.recentlyAdded.nextUrl = null;
|
||||
state.pageState.recentlyAdded.items = [];
|
||||
},
|
||||
setLCDArtwork(state, artwork) {
|
||||
state.artwork.playerLCD = artwork
|
||||
}
|
||||
|
|
|
@ -3419,20 +3419,7 @@ body.no-gpu {
|
|||
}
|
||||
}
|
||||
|
||||
.keybindings-border {
|
||||
padding-left: 15px;
|
||||
padding-right: 15px;
|
||||
border-style: solid;
|
||||
border-radius: 5px;
|
||||
border-color: #CBCBCB;
|
||||
}
|
||||
|
||||
.keybinding-text {
|
||||
width: 95px;
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
align-items: center;
|
||||
}
|
||||
|
||||
.qrimg {
|
||||
width: -webkit-fill-available;
|
||||
|
@ -3591,14 +3578,31 @@ body[platform='darwin'] {
|
|||
display: none;
|
||||
}
|
||||
|
||||
.keybinds-page .md-option-header {
|
||||
padding: 0px 0px;
|
||||
.keybinds-page{
|
||||
|
||||
.md-option-header {
|
||||
padding: 10px 0px;
|
||||
border-bottom: unset;
|
||||
border-top: unset;
|
||||
font-weight: 600;
|
||||
background: rgba(255, 255, 255, 0);
|
||||
font-size: 2em;
|
||||
}
|
||||
|
||||
.md-option-header-sub {
|
||||
padding: 15px 10px;
|
||||
border-bottom: unset;
|
||||
border-top: unset;
|
||||
font-weight: 600;
|
||||
background: rgba(255, 255, 255, 0);
|
||||
font-size: 2em;
|
||||
}
|
||||
font-weight: 600;
|
||||
font-size: 1.7em;
|
||||
}
|
||||
|
||||
.md-option-line{
|
||||
padding: 15px 20px;
|
||||
font-size: 0.90em;
|
||||
}
|
||||
}
|
||||
|
||||
.content-inner.keybinds-page {
|
||||
top: var(--navigationBarHeight);
|
||||
|
|
|
@ -121,6 +121,14 @@
|
|||
$root.getLz("term.logout")
|
||||
}}</span>
|
||||
</button>
|
||||
<button class="usermenu-item" @click="quit()">
|
||||
<span class="usermenu-item-icon" style="right: 2.5px">
|
||||
<%- include("../svg/x.svg") %>
|
||||
</span>
|
||||
<span class="usermenu-item-name">{{
|
||||
$root.getLz("term.quit")
|
||||
}}</span>
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
</transition>
|
||||
|
|
|
@ -9,8 +9,8 @@
|
|||
</div>
|
||||
</div>
|
||||
<div class="app-chrome-item full-height" v-else>
|
||||
<button class="app-mainmenu" @blur="mainMenuVisibility(false, true)" @click="mainMenuVisibility(true, false)"
|
||||
@contextmenu="mainMenuVisibility(true, true)" :class="{active: chrome.menuOpened}"
|
||||
<button class="app-mainmenu" @blur="mainMenuVisibility(false)" @click="mainMenuVisibility(true)"
|
||||
@contextmenu="mainMenuVisibility(true)" :class="{active: chrome.menuOpened}"
|
||||
:aria-label="$root.getLz('term.quickNav')"></button>
|
||||
</div>
|
||||
<template v-if="getThemeDirective('appNavigation') != 'seperate'">
|
||||
|
@ -269,8 +269,8 @@
|
|||
</div>
|
||||
</div>
|
||||
<div class="app-chrome-item full-height" v-else-if="platform != 'darwin' && !chrome.nativeControls">
|
||||
<button class="app-mainmenu" @blur="mainMenuVisibility(false, true)" @click="mainMenuVisibility(true, false)"
|
||||
@contextmenu="mainMenuVisibility(true, true)" :class="{active: chrome.menuOpened}"></button>
|
||||
<button class="app-mainmenu" @blur="mainMenuVisibility(false)" @click="mainMenuVisibility(true)"
|
||||
@contextmenu="mainMenuVisibility(true)" :class="{active: chrome.menuOpened}"></button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
|
@ -196,6 +196,7 @@
|
|||
v-if="mk.shuffleMode == 0"
|
||||
@click="mk.shuffleMode = 1"
|
||||
:title="$root.getLz('term.enableShuffle')"
|
||||
:class="$root.isDisabled() && 'disabled'"
|
||||
v-b-tooltip.hover.righttop
|
||||
></button>
|
||||
<button
|
||||
|
@ -203,6 +204,7 @@
|
|||
v-else
|
||||
@click="mk.shuffleMode = 0"
|
||||
:title="$root.getLz('term.disableShuffle')"
|
||||
:class="$root.isDisabled() && 'disabled'"
|
||||
v-b-tooltip.hover.righttop
|
||||
></button>
|
||||
</div>
|
||||
|
@ -210,31 +212,26 @@
|
|||
<button
|
||||
class="playback-button previous"
|
||||
@click="prevButton()"
|
||||
:class="$root.isPrevDisabled() && 'disabled'"
|
||||
:title="$root.getLz('term.previous')"
|
||||
v-b-tooltip.hover
|
||||
></button>
|
||||
</div>
|
||||
<div class="app-chrome-item">
|
||||
<button
|
||||
class="playback-button pause"
|
||||
@click="mk.pause()"
|
||||
v-if="mk.isPlaying"
|
||||
:title="$root.getLz('term.pause')"
|
||||
v-b-tooltip.hover
|
||||
></button>
|
||||
<button
|
||||
class="playback-button play"
|
||||
@click="mk.play()"
|
||||
v-else
|
||||
:title="$root.getLz('term.play')"
|
||||
v-b-tooltip.hover
|
||||
></button>
|
||||
<button class="playback-button stop" @click="$root.mk.stop()"
|
||||
v-if="$root.mk.isPlaying && $root.mk.nowPlayingItem.attributes.playParams.kind == 'radioStation'"
|
||||
:title="$root.getLz('term.stop')" v-b-tooltip.hover></button>
|
||||
<button class="playback-button pause" @click="$root.mk.pause()" v-else-if="$root.mk.isPlaying"
|
||||
:title="$root.getLz('term.pause')" v-b-tooltip.hover></button>
|
||||
<button class="playback-button play" @click="$root.mk.play()" v-else :title="$root.getLz('term.play')"
|
||||
v-b-tooltip.hover></button>
|
||||
</div>
|
||||
<div class="app-chrome-item">
|
||||
<button
|
||||
class="playback-button next"
|
||||
@click="skipToNextItem()"
|
||||
:title="$root.getLz('term.next')"
|
||||
:class="$root.isNextDisabled() && 'disabled'"
|
||||
v-b-tooltip.hover
|
||||
></button>
|
||||
</div>
|
||||
|
@ -243,6 +240,7 @@
|
|||
class="playback-button--small repeat"
|
||||
v-if="mk.repeatMode == 0"
|
||||
@click="mk.repeatMode = 1"
|
||||
:class="$root.isDisabled() && 'disabled'"
|
||||
:title="$root.getLz('term.enableRepeatOne')"
|
||||
v-b-tooltip.hover
|
||||
></button>
|
||||
|
@ -251,6 +249,7 @@
|
|||
@click="mk.repeatMode = 2"
|
||||
v-else-if="mk.repeatMode == 1"
|
||||
:title="$root.getLz('term.disableRepeatOne')"
|
||||
:class="$root.isDisabled() && 'disabled'"
|
||||
v-b-tooltip.hover
|
||||
></button>
|
||||
<button
|
||||
|
@ -258,6 +257,7 @@
|
|||
@click="mk.repeatMode = 0"
|
||||
v-else-if="mk.repeatMode == 2"
|
||||
:title="$root.getLz('term.disableRepeat')"
|
||||
:class="$root.isDisabled() && 'disabled'"
|
||||
v-b-tooltip.hover
|
||||
></button>
|
||||
</div>
|
||||
|
|
|
@ -54,39 +54,40 @@
|
|||
</div>
|
||||
</div>
|
||||
<div class="control-buttons">
|
||||
<div class="app-chrome-item">
|
||||
<button class="playback-button--small shuffle" v-if="app.mk.shuffleMode == 0"
|
||||
@click="app.mk.shuffleMode = 1" :title="$root.getLz('term.enableShuffle')"
|
||||
v-b-tooltip.hover></button>
|
||||
<button class="playback-button--small shuffle active" v-else
|
||||
@click="app.mk.shuffleMode = 0" :title="$root.getLz('term.disableShuffle')"
|
||||
v-b-tooltip.hover></button>
|
||||
</div>
|
||||
<div class="app-chrome-item">
|
||||
<button class="playback-button previous" @click="app.prevButton()"
|
||||
:title="$root.getLz('term.previous')" v-b-tooltip.hover></button>
|
||||
</div>
|
||||
<div class="app-chrome-item">
|
||||
<button class="playback-button pause" @click="app.mk.pause()" v-if="app.mk.isPlaying"
|
||||
:title="$root.getLz('term.pause')" v-b-tooltip.hover></button>
|
||||
<button class="playback-button play" @click="app.mk.play()" v-else
|
||||
:title="$root.getLz('term.play')" v-b-tooltip.hover></button>
|
||||
</div>
|
||||
<div class="app-chrome-item">
|
||||
<button class="playback-button next" @click="app.skipToNextItem()"
|
||||
:title="$root.getLz('term.next')" v-b-tooltip.hover></button>
|
||||
</div>
|
||||
<div class="app-chrome-item">
|
||||
<button class="playback-button--small repeat" v-if="app.mk.repeatMode == 0"
|
||||
@click="app.mk.repeatMode = 1" :title="$root.getLz('term.enableRepeatOne')"
|
||||
v-b-tooltip.hover></button>
|
||||
<button class="playback-button--small repeat repeatOne" @click="app.mk.repeatMode = 2"
|
||||
v-else-if="app.mk.repeatMode == 1" :title="$root.getLz('term.disableRepeatOne')"
|
||||
v-b-tooltip.hover></button>
|
||||
<button class="playback-button--small repeat active" @click="app.mk.repeatMode = 0"
|
||||
v-else-if="app.mk.repeatMode == 2" :title="$root.getLz('term.disableRepeat')"
|
||||
v-b-tooltip.hover></button>
|
||||
</div>
|
||||
<div class="app-chrome-item display--large">
|
||||
<button class="playback-button--small shuffle" v-if="$root.mk.shuffleMode == 0" :class="$root.isDisabled() && 'disabled'"
|
||||
@click="$root.mk.shuffleMode = 1" :title="$root.getLz('term.enableShuffle')" v-b-tooltip.hover></button>
|
||||
<button class="playback-button--small shuffle active" v-else :class="$root.isDisabled() && 'disabled'"
|
||||
@click="$root.mk.shuffleMode = 0" :title="$root.getLz('term.disableShuffle')" v-b-tooltip.hover></button>
|
||||
</div>
|
||||
<div class="app-chrome-item display--large">
|
||||
<button class="playback-button previous" @click="$root.prevButton()" :class="$root.isPrevDisabled() && 'disabled'"
|
||||
:title="$root.getLz('term.previous')" v-b-tooltip.hover></button>
|
||||
</div>
|
||||
<div class="app-chrome-item display--large">
|
||||
<button class="playback-button stop" @click="$root.mk.stop()"
|
||||
v-if="$root.mk.isPlaying && $root.mk.nowPlayingItem.attributes.playParams.kind == 'radioStation'"
|
||||
:title="$root.getLz('term.stop')" v-b-tooltip.hover></button>
|
||||
<button class="playback-button pause" @click="$root.mk.pause()" v-else-if="$root.mk.isPlaying"
|
||||
:title="$root.getLz('term.pause')" v-b-tooltip.hover></button>
|
||||
<button class="playback-button play" @click="$root.mk.play()" v-else :title="$root.getLz('term.play')"
|
||||
v-b-tooltip.hover></button>
|
||||
</div>
|
||||
<div class="app-chrome-item display--large">
|
||||
<button class="playback-button next" @click="$root.skipToNextItem()" :class="$root.isNextDisabled() && 'disabled'"
|
||||
:title="$root.getLz('term.next')" v-b-tooltip.hover></button>
|
||||
</div>
|
||||
<div class="app-chrome-item display--large">
|
||||
<button class="playback-button--small repeat" v-if="$root.mk.repeatMode == 0" :class="$root.isDisabled() && 'disabled'"
|
||||
@click="$root.mk.repeatMode = 1" :title="$root.getLz('term.enableRepeatOne')" v-b-tooltip.hover></button>
|
||||
<button class="playback-button--small repeat repeatOne" @click="mk.repeatMode = 2"
|
||||
:class="$root.isDisabled() && 'disabled'" v-else-if="$root.mk.repeatMode == 1"
|
||||
:title="$root.getLz('term.disableRepeatOne')" v-b-tooltip.hover></button>
|
||||
<button class="playback-button--small repeat active" @click="$root.mk.repeatMode = 0"
|
||||
:class="$root.isDisabled() && 'disabled'" v-else-if="$root.mk.repeatMode == 2" :title="$root.getLz('term.disableRepeat')"
|
||||
v-b-tooltip.hover></button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="app-chrome-item volume display--large">
|
||||
<div class="input-container">
|
||||
|
|
|
@ -66,30 +66,40 @@
|
|||
</div>
|
||||
</div>
|
||||
<div class="control-buttons">
|
||||
<div class="app-chrome-item">
|
||||
<button class="playback-button--small shuffle" v-if="app.mk.shuffleMode == 0"
|
||||
@click="app.mk.shuffleMode = 1"></button>
|
||||
<button class="playback-button--small shuffle active" v-else
|
||||
@click="app.mk.shuffleMode = 0"></button>
|
||||
</div>
|
||||
<div class="app-chrome-item">
|
||||
<button class="playback-button previous" @click="app.prevButton()"></button>
|
||||
</div>
|
||||
<div class="app-chrome-item">
|
||||
<button class="playback-button pause" @click="app.mk.pause()" v-if="app.mk.isPlaying"></button>
|
||||
<button class="playback-button play" @click="app.mk.play()" v-else></button>
|
||||
</div>
|
||||
<div class="app-chrome-item">
|
||||
<button class="playback-button next" @click="app.skipToNextItem()"></button>
|
||||
</div>
|
||||
<div class="app-chrome-item">
|
||||
<button class="playback-button--small repeat" v-if="app.mk.repeatMode == 0"
|
||||
@click="app.mk.repeatMode = 1"></button>
|
||||
<button class="playback-button--small repeat repeatOne" @click="app.mk.repeatMode = 2"
|
||||
v-else-if="app.mk.repeatMode == 1"></button>
|
||||
<button class="playback-button--small repeat active" @click="app.mk.repeatMode = 0"
|
||||
v-else-if="app.mk.repeatMode == 2"></button>
|
||||
</div>
|
||||
<div class="app-chrome-item display--large">
|
||||
<button class="playback-button--small shuffle" v-if="$root.mk.shuffleMode == 0" :class="$root.isDisabled() && 'disabled'"
|
||||
@click="$root.mk.shuffleMode = 1" :title="$root.getLz('term.enableShuffle')" v-b-tooltip.hover></button>
|
||||
<button class="playback-button--small shuffle active" v-else :class="$root.isDisabled() && 'disabled'"
|
||||
@click="$root.mk.shuffleMode = 0" :title="$root.getLz('term.disableShuffle')" v-b-tooltip.hover></button>
|
||||
</div>
|
||||
<div class="app-chrome-item display--large">
|
||||
<button class="playback-button previous" @click="$root.prevButton()" :class="$root.isPrevDisabled() && 'disabled'"
|
||||
:title="$root.getLz('term.previous')" v-b-tooltip.hover></button>
|
||||
</div>
|
||||
<div class="app-chrome-item display--large">
|
||||
<button class="playback-button stop" @click="$root.mk.stop()"
|
||||
v-if="$root.mk.isPlaying && $root.mk.nowPlayingItem.attributes.playParams.kind == 'radioStation'"
|
||||
:title="$root.getLz('term.stop')" v-b-tooltip.hover></button>
|
||||
<button class="playback-button pause" @click="$root.mk.pause()" v-else-if="$root.mk.isPlaying"
|
||||
:title="$root.getLz('term.pause')" v-b-tooltip.hover></button>
|
||||
<button class="playback-button play" @click="$root.mk.play()" v-else :title="$root.getLz('term.play')"
|
||||
v-b-tooltip.hover></button>
|
||||
</div>
|
||||
<div class="app-chrome-item display--large">
|
||||
<button class="playback-button next" @click="$root.skipToNextItem()" :class="$root.isNextDisabled() && 'disabled'"
|
||||
:title="$root.getLz('term.next')" v-b-tooltip.hover></button>
|
||||
</div>
|
||||
<div class="app-chrome-item display--large">
|
||||
<button class="playback-button--small repeat" v-if="$root.mk.repeatMode == 0" :class="$root.isDisabled() && 'disabled'"
|
||||
@click="$root.mk.repeatMode = 1" :title="$root.getLz('term.enableRepeatOne')" v-b-tooltip.hover></button>
|
||||
<button class="playback-button--small repeat repeatOne" @click="mk.repeatMode = 2"
|
||||
:class="$root.isDisabled() && 'disabled'" v-else-if="$root.mk.repeatMode == 1"
|
||||
:title="$root.getLz('term.disableRepeatOne')" v-b-tooltip.hover></button>
|
||||
<button class="playback-button--small repeat active" @click="$root.mk.repeatMode = 0"
|
||||
:class="$root.isDisabled() && 'disabled'" v-else-if="$root.mk.repeatMode == 2" :title="$root.getLz('term.disableRepeat')"
|
||||
v-b-tooltip.hover></button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="app-chrome-item volume display--large">
|
||||
<div class="input-container">
|
||||
|
|
|
@ -71,7 +71,7 @@
|
|||
<div id="LOADER">
|
||||
<%- include("../assets/cider-round.svg") %>
|
||||
</div>
|
||||
<div id="app" :class="getAppClasses()" :style="getAppStyle()" :library-visbile="(chrome.sidebarCollapsed ? 0 : 1)" :window-style="cfg.visual.directives.windowLayout">
|
||||
<div id="app" :class="getAppClasses()" :style="getAppStyle()" :library-visible="(chrome.sidebarCollapsed ? 0 : 1)" :window-style="cfg.visual.directives.windowLayout">
|
||||
<transition name="fsModeSwitch">
|
||||
<div id="app-main" v-show="appMode == 'player'">
|
||||
<%- include('app/chrome-top'); %>
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
<script type="text/x-template" id="cider-artist">
|
||||
<div class="content-inner artist-page"
|
||||
:class="[data.attributes.editorialVideo && (data.attributes.editorialVideo.motionArtistWide16x9 || data.attributes.editorialVideo.motionArtistFullscreen16x9) ? 'animated' : '']">
|
||||
:class="[(data.attributes.editorialVideo && (data.attributes.editorialVideo.motionArtistWide16x9 || data.attributes.editorialVideo.motionArtistFullscreen16x9) || hasHero()) ? 'animated' : '']">
|
||||
<div class="artist-header" :key="data.id" v-observe-visibility="{callback: isHeaderVisible}">
|
||||
<animatedartwork-view
|
||||
:priority="true"
|
||||
|
@ -11,7 +11,7 @@
|
|||
<div class="row">
|
||||
<div class="col-sm" style="width: auto;">
|
||||
<div class="artist-image"
|
||||
v-if="!(data.attributes.editorialVideo && (data.attributes.editorialVideo.motionArtistWide16x9 || data.attributes.editorialVideo.motionArtistFullscreen16x9))">
|
||||
v-if="!(data.attributes.editorialVideo && (data.attributes.editorialVideo.motionArtistWide16x9 || data.attributes.editorialVideo.motionArtistFullscreen16x9))&& !hasHero()">
|
||||
<mediaitem-artwork
|
||||
shadow="large"
|
||||
:url="data.attributes.artwork ? data.attributes.artwork.url : ''"
|
||||
|
@ -24,7 +24,7 @@
|
|||
</div>
|
||||
</div>
|
||||
<div class="col flex-center artist-title"
|
||||
:class="{'artist-animation-on': (data.attributes.editorialVideo && (data.attributes.editorialVideo.motionArtistWide16x9 || data.attributes.editorialVideo.motionArtistFullscreen16x9)) }"
|
||||
:class="{'artist-animation-on': (data.attributes.editorialVideo && (data.attributes.editorialVideo.motionArtistWide16x9 || data.attributes.editorialVideo.motionArtistFullscreen16x9)) || hasHero() }"
|
||||
>
|
||||
<button class="artist-play" @click="app.mk.setStationQueue({artist:'a-'+data.id}).then(()=>{
|
||||
app.mk.play()
|
||||
|
@ -42,7 +42,7 @@
|
|||
</button>
|
||||
</div>
|
||||
<div class="artworkContainer"
|
||||
v-if="!(data.attributes.editorialVideo && (data.attributes.editorialVideo.motionArtistWide16x9 || data.attributes.editorialVideo.motionArtistFullscreen16x9))">
|
||||
v-if="!(data.attributes.editorialVideo && (data.attributes.editorialVideo.motionArtistWide16x9 || data.attributes.editorialVideo.motionArtistFullscreen16x9)) && !hasHero()">
|
||||
<artwork-material :url="data.attributes.artwork.url" size="190" images="1"></artwork-material>
|
||||
</div>
|
||||
<div class="artist-hero" v-if="hasHero() && !hasAnimated()">
|
||||
|
@ -174,7 +174,9 @@
|
|||
return false;
|
||||
},
|
||||
hasHero() {
|
||||
if(this.data.attributes?.editorialArtwork?.bannerUber) {
|
||||
if(this.data.attributes?.editorialArtwork?.centeredFullscreenBackground){
|
||||
return this.data.attributes?.editorialArtwork?.centeredFullscreenBackground.url
|
||||
} else if(this.data.attributes?.editorialArtwork?.bannerUber) {
|
||||
return this.data.attributes?.editorialArtwork?.bannerUber.url
|
||||
}else if(this.data.attributes?.editorialArtwork?.subscriptionHero){
|
||||
return this.data.attributes?.editorialArtwork?.subscriptionHero.url
|
||||
|
|
|
@ -294,6 +294,18 @@
|
|||
this.isInLibrary()
|
||||
})
|
||||
},
|
||||
beforeMount() {
|
||||
if( window.location.hash.includes("playlist") ) {
|
||||
window.addEventListener('keydown', this.getCopiedPlayListSongs);
|
||||
window.addEventListener('keydown', this.pasteSongs);
|
||||
}
|
||||
},
|
||||
beforeDestroy() {
|
||||
if( window.location.hash.includes("playlist") ) {
|
||||
window.removeEventListener('keydown', this.getCopiedPlayListSongs);
|
||||
window.removeEventListener('keydown', this.pasteSongs);
|
||||
}
|
||||
},
|
||||
watch: {
|
||||
data: {
|
||||
handler: function () {
|
||||
|
@ -752,6 +764,49 @@
|
|||
if (data && typeof data.views != "undefined") return "";
|
||||
return "d-none";
|
||||
},
|
||||
async getCopiedPlayListSongs(event) {
|
||||
if( event.ctrlKey && event.keyCode === 67 ) {
|
||||
let urls = [];
|
||||
app.selectedMediaItems.forEach(item => {
|
||||
this.app.mk.api.v3.music(`/v1/me/library/songs/${item.id}`).then((response) => {
|
||||
this.app.mk.api.v3.music(`/v1/catalog/${app.mk.storefrontId}/songs/${response.data.data[0].attributes.playParams.catalogId}`).then((response1) => {
|
||||
urls.push(response1.data.data[0].attributes.url)
|
||||
navigator.clipboard.writeText(urls)
|
||||
})
|
||||
})
|
||||
})
|
||||
notyf.success(app.getLz('term.share.success'))
|
||||
}
|
||||
},
|
||||
async pasteSongs(event) {
|
||||
if( event.ctrlKey && event.keyCode === 86 && this.data.attributes.canEdit ) {
|
||||
let clipboard = await navigator.clipboard.readText()
|
||||
let songs = []
|
||||
|
||||
clipboard = clipboard.split(",")
|
||||
clipboard.forEach(item => {
|
||||
songs.push({
|
||||
id: item.substring(item.indexOf("i=")+2, item.length),
|
||||
type: "songs",
|
||||
})
|
||||
})
|
||||
|
||||
this.app.mk.api.v3.music(`/v1/me/library/playlists/${this.data.id}/tracks`, {}, {
|
||||
fetchOptions: {
|
||||
method: "POST",
|
||||
body: JSON.stringify({
|
||||
data: songs
|
||||
})
|
||||
}
|
||||
}).then((response) => {
|
||||
songs.forEach(item => {
|
||||
this.app.mk.api.v3.music(`/v1/catalog/${app.mk.storefrontId}/songs/${item.id}`).then((response1) => {
|
||||
this.displayListing.push(response1.data.data[0])
|
||||
})
|
||||
})
|
||||
})
|
||||
}
|
||||
},
|
||||
search() {
|
||||
let filtered = [];
|
||||
|
||||
|
|
|
@ -4,6 +4,9 @@
|
|||
<span>{{$root.getLz('settings.option.general.keybindings')}}</span>
|
||||
</div>
|
||||
<div class="settings-option-body">
|
||||
<div class="md-option-header-sub">
|
||||
<span>{{$root.getLz('settings.option.general.keybindings.library')}}</span>
|
||||
</div>
|
||||
<div class="md-option-line">
|
||||
<div class="md-option-segment">
|
||||
{{$root.getLz('settings.description.search')}}
|
||||
|
@ -81,6 +84,9 @@
|
|||
</button>
|
||||
</div>
|
||||
</div>
|
||||
<div class="md-option-header-sub">
|
||||
<span>{{$root.getLz('settings.option.general.keybindings.session')}}</span>
|
||||
</div>
|
||||
<div class="md-option-line">
|
||||
<div class="md-option-segment">
|
||||
{{$root.getLz('settings.description.private')}}
|
||||
|
@ -92,6 +98,9 @@
|
|||
</button>
|
||||
</div>
|
||||
</div>
|
||||
<div class="md-option-header-sub">
|
||||
<span>{{$root.getLz('settings.option.general.keybindings.control')}}</span>
|
||||
</div>
|
||||
<div class="md-option-line">
|
||||
<div class="md-option-segment">
|
||||
{{$root.getLz('settings.description.remote')}}
|
||||
|
@ -147,6 +156,45 @@
|
|||
</button>
|
||||
</div>
|
||||
</div>
|
||||
<div class="md-option-header-sub" v-if="app.platform !== 'darwin'">
|
||||
<span>{{$root.getLz('settings.option.general.keybindings.interface')}}</span>
|
||||
</div>
|
||||
<div class="md-option-line" v-if="app.platform !== 'darwin'">
|
||||
<div class="md-option-segment">
|
||||
{{$root.getLz('term.zoomin')}}
|
||||
</div>
|
||||
<div class="md-option-segment md-option-segment_auto">
|
||||
<button class="md-btn md-btn-small md-btn-block"
|
||||
@click="keyBindUpdate('zoomn')">
|
||||
{{app.cfg.general.keybindings.zoomn.join(' + ')}}
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
<div class="md-option-line" v-if="app.platform !== 'darwin'">
|
||||
<div class="md-option-segment">
|
||||
{{$root.getLz('term.zoomout')}}
|
||||
</div>
|
||||
<div class="md-option-segment md-option-segment_auto">
|
||||
<button class="md-btn md-btn-small md-btn-block"
|
||||
@click="keyBindUpdate('zoomt')">
|
||||
{{app.cfg.general.keybindings.zoomt.join(' + ')}}
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
<div class="md-option-line" v-if="app.platform !== 'darwin'">
|
||||
<div class="md-option-segment">
|
||||
{{$root.getLz('term.zoomreset')}}
|
||||
</div>
|
||||
<div class="md-option-segment md-option-segment_auto">
|
||||
<button class="md-btn md-btn-small md-btn-block"
|
||||
@click="keyBindUpdate('zoomrst')">
|
||||
{{app.cfg.general.keybindings.zoomrst.join(' + ')}}
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
<div class="md-option-header-sub">
|
||||
<span>{{$root.getLz('settings.option.general.keybindings.advanced')}}</span>
|
||||
</div>
|
||||
<div class="md-option-line">
|
||||
<div class="md-option-segment">
|
||||
{{$root.getLz('settings.description.developer')}}
|
||||
|
@ -243,6 +291,9 @@
|
|||
app.cfg.general.keybindings.pluginMenu = [app.platform == "darwin" ? "Command" : "Control",app.platform == "darwin" ? "Option" : (app.platform == "linux" ? "Shift" : "Alt"), "P"];
|
||||
app.cfg.general.keybindings.castToDevices = [app.platform == "darwin" ? "Command" : "Control",app.platform == "darwin" ? "Option" : (app.platform == "linux" ? "Shift" : "Alt"), "C"];
|
||||
app.cfg.general.keybindings.settings = [app.platform == "darwin" ? "Command" : "Control", ","];
|
||||
app.cfg.general.keybindings.zoomn = [app.platform == "darwin" ? "Command" : "Control", "numadd"];
|
||||
app.cfg.general.keybindings.zoomt = [app.platform == "darwin" ? "Command" : "Control", "numsub"];
|
||||
app.cfg.general.keybindings.zoomrst = [app.platform == "darwin" ? "Command" : "Control", "num0"];
|
||||
app.cfg.general.keybindings.openDeveloperTools = [app.platform == "darwin" ? "Command" : "Control", app.platform == "darwin" ? "Option" : "Shift", "I"];
|
||||
notyf.success(app.getLz('settings.notyf.general.keybindings.update.success'));
|
||||
bootbox.confirm(app.getLz("settings.prompt.general.keybindings.update.success"), (ok) => {
|
||||
|
|
|
@ -96,8 +96,7 @@
|
|||
<option value="listen_now">{{$root.getLz('term.listenNow')}}</option>
|
||||
<option value="browse">{{$root.getLz('term.browse')}}</option>
|
||||
<option value="radio">{{$root.getLz('term.radio')}}</option>
|
||||
<option value="library-recentlyadded">{{$root.getLz('term.recentlyAdded')}}
|
||||
</option>
|
||||
<option value="library-recentlyadded">{{$root.getLz('term.recentlyAdded')}}</option>
|
||||
<option value="library-songs">{{$root.getLz('term.songs')}}</option>
|
||||
<option value="library-albums">{{$root.getLz('term.albums')}}</option>
|
||||
<option value="library-artists">{{$root.getLz('term.artists')}}</option>
|
||||
|
@ -194,8 +193,8 @@
|
|||
{{$root.getLz('settings.option.general.keybindings')}}
|
||||
</div>
|
||||
<div class="md-option-segment md-option-segment_auto">
|
||||
<button class="md-btn" @click="app.appRoute('keybinds-settings')">
|
||||
{{$root.getLz('settings.option.general.keybindings.open')}}
|
||||
<button class="md-btn" @click="app.appRoute('keybinds-settings')" >
|
||||
{{$root.getLz('action.open')}}
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
|
@ -293,7 +292,7 @@
|
|||
<div class="md-option-segment md-option-segment_auto">
|
||||
<label>
|
||||
<input type="checkbox" v-model="app.cfg.advanced.AudioContext"
|
||||
v-on:change="toggleAudioContext"
|
||||
v-on:change="toggleAudioContext" :disabled="app.cfg.advanced.AudioContext === true"
|
||||
switch/>
|
||||
</label>
|
||||
</div>
|
||||
|
@ -339,7 +338,7 @@
|
|||
</div>
|
||||
</div>
|
||||
<div class="md-option-line"
|
||||
v-show="app.cfg.advanced.AudioContext && app.cfg.audio.normalization">
|
||||
v-show="app.cfg.advanced.AudioContext && app.cfg.audio.normalization && app.cfg.audio.advanced">
|
||||
<div class="md-option-segment">
|
||||
{{$root.getLz('settings.option.audio.dbspl.display')}}
|
||||
<br>
|
||||
|
@ -595,19 +594,7 @@
|
|||
</label>
|
||||
</div>
|
||||
</div>
|
||||
<div class="md-option-line">
|
||||
<div class="md-option-segment">
|
||||
{{$root.getLz('settings.option.visual.uiscale')}}
|
||||
</div>
|
||||
<div class="md-option-segment md-option-segment_auto">
|
||||
<label>
|
||||
<input type="number" min="0.5" max="4.0" step="0.25" @change="$root.getHTMLStyle()"
|
||||
v-model="app.cfg.visual.uiScale"/>
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</b-tab>
|
||||
<b-tab :title="$root.getLz('settings.header.lyrics')">
|
||||
|
@ -1120,6 +1107,17 @@
|
|||
</button>
|
||||
</div>
|
||||
</div>
|
||||
<div class="md-option-line">
|
||||
<div class="md-option-segment">
|
||||
Performant Logging
|
||||
<small>Disables debug logging, resulting in a slightly faster Cider. (Requires relaunch)</small>
|
||||
</div>
|
||||
<div class="md-option-segment md-option-segment_auto">
|
||||
<label>
|
||||
<input type="checkbox" v-model="app.cfg.advanced.disableLogging" switch/>
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- Experimental Settings -->
|
||||
|
@ -1430,9 +1428,6 @@
|
|||
if (app.cfg.audio.normalization === true) {
|
||||
CiderAudio.normalizerOn()
|
||||
}
|
||||
if (app.cfg.audio.maikiwiAudio.spatial === true) {
|
||||
CiderAudio.hierarchical_loading();
|
||||
}
|
||||
}
|
||||
})
|
||||
} else {
|
||||
|
@ -1440,9 +1435,6 @@
|
|||
if (app.cfg.audio.normalization === true) {
|
||||
CiderAudio.normalizerOn()
|
||||
}
|
||||
if (app.cfg.audio.maikiwiAudio.spatial === true) {
|
||||
CiderAudio.hierarchical_loading();
|
||||
}
|
||||
}
|
||||
} else {
|
||||
CiderAudio.off();
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue