Merge branch 'ciderapp:main' into main
This commit is contained in:
commit
1ac7ab6b86
43 changed files with 1854 additions and 1313 deletions
|
@ -3,7 +3,7 @@ version: 2.1
|
|||
executors:
|
||||
cider-ci:
|
||||
docker:
|
||||
- image: circleci/node:16
|
||||
- image: cimg/node:lts-browsers
|
||||
working_directory: ~/Cider
|
||||
|
||||
orbs: # Add orbs to your configuration
|
||||
|
@ -15,15 +15,9 @@ jobs:
|
|||
executor: cider-ci
|
||||
steps:
|
||||
- checkout
|
||||
# - run:
|
||||
# name: Rename Repository
|
||||
# command: sed -i 's/github:ciderapp\/Cider/github:ciderapp\/cider-releases/' package.json
|
||||
- run:
|
||||
name: Update Version Number of App
|
||||
command: sudo chmod +x resources/version.sh && ./resources/version.sh || true
|
||||
- run:
|
||||
name: Update Package Managers
|
||||
command: sudo npm update -g npm yarn
|
||||
- restore_cache:
|
||||
name: Restore Yarn Package Cache
|
||||
keys:
|
||||
|
@ -60,9 +54,6 @@ jobs:
|
|||
steps:
|
||||
- attach_workspace:
|
||||
at: ~/Cider
|
||||
# - run:
|
||||
# name: Fix Versioning and Add Channel
|
||||
# command: yarn circle:script
|
||||
- run:
|
||||
name: Generate Builds (Linux)
|
||||
command: yarn electron-builder -l -p never
|
||||
|
@ -89,9 +80,6 @@ jobs:
|
|||
sudo dpkg --add-architecture i386
|
||||
sudo apt-get update -y
|
||||
sudo apt-get install -y wine32
|
||||
# - run:
|
||||
# name: Fix Versioning and Add Channel
|
||||
# command: yarn circle:script
|
||||
- run:
|
||||
name: Generate Builds (Windows)
|
||||
command: yarn electron-builder -w --x64 -p never
|
||||
|
@ -117,9 +105,6 @@ jobs:
|
|||
sudo dpkg --add-architecture i386
|
||||
sudo apt-get update -y
|
||||
sudo apt-get install -y wine32
|
||||
# - run:
|
||||
# name: Fix Versioning and Add Channel
|
||||
# command: yarn circle:script
|
||||
- run:
|
||||
name: Generate Builds (Winget)
|
||||
command: yarn electron-builder --win -c winget.json -p never
|
||||
|
@ -156,9 +141,6 @@ jobs:
|
|||
mv ~/Cider/dist/*.blockmap ~/Cider/dist/artifacts
|
||||
- store_artifacts:
|
||||
path: ~/Cider/dist/artifacts
|
||||
# - run:
|
||||
# name: Fix Versioning and Add Channel
|
||||
# command: yarn circle:script
|
||||
- run:
|
||||
name: Update Version Number of App
|
||||
command: sudo chmod +x resources/version.sh && ./resources/version.sh || true
|
||||
|
|
|
@ -1,6 +1,9 @@
|
|||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
|
||||
<svg width="100%" height="100%" viewBox="0 0 1002 1000" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xml:space="preserve" xmlns:serif="http://www.serif.com/" style="fill-rule:evenodd;clip-rule:evenodd;stroke-linejoin:round;stroke-miterlimit:2;">
|
||||
<path d="M501,21C765.367,21 980,235.633 980,500C980,764.367 765.367,979 501,979C236.633,979 22,764.367 22,500C22,235.633 236.633,21 501,21ZM501,169C683.684,169 832,317.316 832,500C832,682.684 683.684,831 501,831C318.316,831 170,682.684 170,500C170,317.316 318.316,169 501,169Z" style="fill:rgb(255,38,84);"/>
|
||||
<path d="M501,224C653.053,224 776.5,347.447 776.5,499.5C776.5,651.553 653.053,775 501,775C348.947,775 225.5,651.553 225.5,499.5C225.5,347.447 348.947,224 501,224ZM589.165,492.207C595.163,495.672 595.163,504.328 589.165,507.793L439.502,594.256C433.502,597.722 426,593.392 426,586.463L426,413.537C426,406.608 433.502,402.278 439.502,405.744L589.165,492.207Z" style="fill:rgb(255,38,84);"/>
|
||||
<svg width="100%" height="100%" viewBox="0 0 958 958" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xml:space="preserve" xmlns:serif="http://www.serif.com/" style="fill-rule:evenodd;clip-rule:evenodd;stroke-linejoin:round;stroke-miterlimit:2;">
|
||||
<g transform="matrix(1,0,0,1,-22,-21)">
|
||||
<circle cx="501" cy="500" r="420" style="fill:rgb(15,15,15);"/>
|
||||
<path d="M501,21C765.367,21 980,235.633 980,500C980,764.367 765.367,979 501,979C236.633,979 22,764.367 22,500C22,235.633 236.633,21 501,21ZM501,169C683.684,169 832,317.316 832,500C832,682.684 683.684,831 501,831C318.316,831 170,682.684 170,500C170,317.316 318.316,169 501,169Z" style="fill:rgb(255,43,81);"/>
|
||||
<path d="M501,224C653.053,224 776.5,347.447 776.5,499.5C776.5,651.553 653.053,775 501,775C348.947,775 225.5,651.553 225.5,499.5C225.5,347.447 348.947,224 501,224ZM589.165,492.207C595.163,495.672 595.163,504.328 589.165,507.793L439.502,594.256C433.502,597.722 426,593.392 426,586.463L426,413.537C426,406.608 433.502,402.278 439.502,405.744L589.165,492.207Z" style="fill:rgb(255,43,81);"/>
|
||||
</g>
|
||||
</svg>
|
||||
|
|
Before Width: | Height: | Size: 1.1 KiB After Width: | Height: | Size: 1.3 KiB |
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 |
|
@ -444,7 +444,56 @@ 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`
|
||||
|
||||
Update 14/06/2022 14:10 UTC
|
||||
|
||||
* `term.themeManaged`: Added to `en_US`
|
||||
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
"i18n.languageName": "English (UK)",
|
||||
"i18n.languageNameEnglish": "English (UK)",
|
||||
"i18n.category": "main",
|
||||
"i18n.authors": "Core, inalone, nosh118",
|
||||
"i18n.authors": "Core, inalone, nosh118, booploops",
|
||||
"date.format": "${d} ${m}, ${y}",
|
||||
"term.equalizer": "Equaliser",
|
||||
"settings.option.audio.enableAdvancedFunctionality.description": "Enabling AudioContext functionality will allow for extended audio features like Audio Normalisation, Equalisers and Visualisers - however on some systems this may cause stuttering in audio tracks.",
|
||||
|
@ -14,5 +14,14 @@
|
|||
"term.track": {
|
||||
"one" : "song",
|
||||
"other" : "songs"
|
||||
}
|
||||
},
|
||||
"home.syncFavorites": "Sync Favourites",
|
||||
"home.syncFavorites.gettingArtists": "Getting Favourited Artists...",
|
||||
"action.addToFavorites": "Add to Favourites",
|
||||
"action.favorite": "Favourite",
|
||||
"action.removeFavorite": "Remove Favourite",
|
||||
"settings.option.visual.customAccentColor": "Custom Accent Colour",
|
||||
"settings.option.visual.accentColor": "Accent Colour",
|
||||
"settings.option.visual.windowColor": "Window Tint Colour",
|
||||
"settings.header.visual.windowBackgroundStyle.color": "Colour Tint"
|
||||
}
|
||||
|
|
|
@ -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",
|
||||
|
@ -134,6 +134,7 @@
|
|||
"term.recentStations": "Recent Stations",
|
||||
"term.personalStations": "Personal Stations",
|
||||
"term.amLive": "Apple Music Live",
|
||||
"term.live": "LIVE",
|
||||
"term.language": "Language",
|
||||
"term.funLanguages": "Fun",
|
||||
"term.noLyrics": "Loading... / Lyrics not found./ Instrumental.",
|
||||
|
@ -154,6 +155,7 @@
|
|||
},
|
||||
"term.videos": "Videos",
|
||||
"term.menu": "Menu",
|
||||
"term.themeManaged": "Managed by a theme",
|
||||
"term.check": "Check",
|
||||
"term.aboutArtist": "About {{artistName}}",
|
||||
"term.topResult": "Top Result",
|
||||
|
@ -193,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",
|
||||
|
@ -269,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",
|
||||
|
@ -293,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",
|
||||
|
@ -351,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",
|
||||
|
|
|
@ -154,6 +154,7 @@
|
|||
},
|
||||
"term.videos": "Videók",
|
||||
"term.menu": "Menü",
|
||||
"term.themeManaged": "Egy téma kezeli a beállítást",
|
||||
"term.check": "Ellenőrzés",
|
||||
"term.aboutArtist": "{{artistName}}-ról/ről",
|
||||
"term.topResult": "Legjobb találatok",
|
||||
|
@ -250,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",
|
||||
|
|
|
@ -22,7 +22,6 @@
|
|||
"term.logout": "Terminar sessão",
|
||||
"term.login": "Iniciar sessão",
|
||||
"term.quickNav": "Navegação rápida",
|
||||
"term.cast": "Transmitir",
|
||||
"term.about": "Sobre",
|
||||
"term.privateSession": "Sessão privada",
|
||||
"term.disablePrivateSession": "Desativar sessão privada",
|
||||
|
@ -52,6 +51,7 @@
|
|||
"term.navigateBack": "Retroceder uma página",
|
||||
"term.navigateForward": "Avançar uma página",
|
||||
"term.play": "Reproduzir",
|
||||
"term.playpause": "Reproduzir/Pausa",
|
||||
"term.pause": "Pausa",
|
||||
"term.stop": "Parar",
|
||||
"term.previous": "Anterior",
|
||||
|
@ -101,7 +101,7 @@
|
|||
"term.less": "Menos",
|
||||
"term.showMore": "Mostrar mais",
|
||||
"term.showLess": "Mostrar menos",
|
||||
"term.topSongs": "Músicas populares",
|
||||
"term.topSongs": "Top de músicas",
|
||||
"term.latestReleases": "Últimos lançamentos",
|
||||
"term.time.added": "Adicionado",
|
||||
"term.time.released": "Lançado",
|
||||
|
@ -134,6 +134,7 @@
|
|||
"term.recentStations": "Estações recentes",
|
||||
"term.personalStations": "Estações pessoais",
|
||||
"term.amLive": "Apple Music Live",
|
||||
"term.live": "AO VIVO",
|
||||
"term.language": "Idioma",
|
||||
"term.funLanguages": "Divertido",
|
||||
"term.noLyrics": "A carregar... / Letra não encontrada. / Instrumental.",
|
||||
|
@ -154,6 +155,7 @@
|
|||
},
|
||||
"term.videos": "Vídeos",
|
||||
"term.menu": "Menu",
|
||||
"term.themeManaged": "Gerido por um tema",
|
||||
"term.check": "Verificar",
|
||||
"term.aboutArtist": "Sobre {{artistName}}",
|
||||
"term.topResult": "Melhor resultado",
|
||||
|
@ -184,15 +186,27 @@
|
|||
"term.uniqueAlbums": "Álbuns únicos",
|
||||
"term.uniqueArtists": "Intérpretes únicos",
|
||||
"term.uniqueSongs": "Músicas únicas",
|
||||
"term.topArtists": "Intérpretes populares",
|
||||
"term.topArtists": "Top de intérpretes",
|
||||
"term.listenedTo": "Reproduzido:",
|
||||
"term.times": "vezes",
|
||||
"term.topAlbums": "Álbuns populares",
|
||||
"term.topAlbums": "Top de álbuns",
|
||||
"term.plays": "Reproduções",
|
||||
"term.topGenres": "Géneros populares",
|
||||
"term.topGenres": "Top de géneros",
|
||||
"term.confirmLogout": "Tem a certeza de que pretende terminar sessão?",
|
||||
"term.creditDesignedBy": "Concebido por ${authorUsername}",
|
||||
"term.discNumber": "Disco ${discNumber}",
|
||||
"term.reload": "Reiniciar o Cider ?",
|
||||
"term.toggleprivate": "Alternar sessão privada",
|
||||
"term.webremote": "Web Remote",
|
||||
"term.cast": "Transmitir",
|
||||
"term.cast2": "Transmitir para dispositivos",
|
||||
"term.quit": "Fechar",
|
||||
"term.zoomin": "Aumentar o zoom",
|
||||
"term.zoomout": "Diminuir o zoom",
|
||||
"term.zoomreset": "Repor zoom",
|
||||
"term.fullscreen": "Ecrã inteiro",
|
||||
"home.syncFavorites": "Sincronizar favoritos",
|
||||
"home.syncFavorites.gettingArtists": "A obter os artistas favoritos...",
|
||||
"home.title": "Início",
|
||||
"home.recentlyPlayed": "Reproduzido recentemente",
|
||||
"home.recentlyAdded": "Adicionado recentemente",
|
||||
|
@ -213,6 +227,8 @@
|
|||
"podcast.episodes": "Episódios",
|
||||
"podcast.playEpisode": "Reproduzir episódio",
|
||||
"podcast.website": "Website do Podcast",
|
||||
"action.favorite": "Adicionar favorito",
|
||||
"action.removeFavorite": "Remover favorito",
|
||||
"action.hideLibrary": "Ocultar biblioteca",
|
||||
"action.showLibrary": "Mostrar biblioteca",
|
||||
"action.cut": "Cortar",
|
||||
|
@ -265,11 +281,7 @@
|
|||
"action.export": "Exportar",
|
||||
"action.showAlbum": "Mostrar álbum completo",
|
||||
"action.tray.minimize": "Minimizar para a bandeja",
|
||||
"action.tray.quit": "Fechar",
|
||||
"action.tray.show": "Mostrar o Cider",
|
||||
"action.tray.playpause": "Reproduzir/Pausa",
|
||||
"action.tray.next": "Seguinte",
|
||||
"action.tray.previous": "Anterior",
|
||||
"action.tray.listento": "Ouvir:",
|
||||
"action.update": "Atualizar",
|
||||
"action.install": "Instalar",
|
||||
|
@ -289,45 +301,26 @@
|
|||
"action.createNew": "Criar nova...",
|
||||
"action.openArtworkInBrowser": "Abrir grafismo no navegador",
|
||||
"action.scrollToTop": "Voltar ao topo",
|
||||
"menubar.options.about": "Sobre",
|
||||
"menubar.options.settings": "Definições",
|
||||
"menubar.options.quit": "Fechar o Cider",
|
||||
"menubar.options.view": "Ver",
|
||||
"menubar.options.reload": "Atualizar",
|
||||
"menubar.options.forcereload": "Forçar atualização",
|
||||
"menubar.options.toggledevtools": "Alternar ferramentas do programador",
|
||||
"menubar.options.window": "Janela",
|
||||
"menubar.options.minimize": "Minimizar",
|
||||
"menubar.options.toggleprivate": "Alternar sessão privada",
|
||||
"menubar.options.webremote": "Web Remote",
|
||||
"menubar.options.audio": "Definições de áudio",
|
||||
"menubar.options.plugins": "Menu de plug-ins",
|
||||
"menubar.options.controls": "Controlos",
|
||||
"menubar.options.next": "Seguinte",
|
||||
"menubar.options.playpause": "Reproduzir/Pausa",
|
||||
"menubar.options.previous": "Anterior",
|
||||
"menubar.options.volumeup": "Aumentar o volume",
|
||||
"menubar.options.volumedown": "Diminuir o volume",
|
||||
"menubar.options.browse": "Explorar",
|
||||
"menubar.options.artists": "Intérpretes",
|
||||
"menubar.options.search": "Pesquisa",
|
||||
"menubar.options.albums": "Álbuns",
|
||||
"menubar.options.cast": "Transmitir para dispositivos",
|
||||
"menubar.options.account": "Conta",
|
||||
"menubar.options.accountsettings": "Definições da conta",
|
||||
"menubar.options.signout": "Terminar sessão",
|
||||
"menubar.options.support": "Suporte",
|
||||
"menubar.options.discord": "Discord",
|
||||
"menubar.options.github": "GitHub Wiki",
|
||||
"menubar.options.report": "Reportar um...",
|
||||
"menubar.options.bug": "Problema",
|
||||
"menubar.options.feature": "Pedido de funcionalidade",
|
||||
"menubar.options.trans": "Pedido de tradução",
|
||||
"menubar.options.license": "Ver licença",
|
||||
"menubar.options.conf": "Abrir ficheiro de configuração no editor",
|
||||
"menubar.options.listennow": "Ouvir agora",
|
||||
"menubar.options.recentlyAdded": "Adições recentes",
|
||||
"menubar.options.songs": "Músicas",
|
||||
"menubar.options.zoom": "Zoom",
|
||||
"settings.header.general": "Geral",
|
||||
"settings.header.general.description": "Ajustar as definições gerais do Cider.",
|
||||
"settings.option.general.language": "Idioma",
|
||||
|
@ -347,11 +340,15 @@
|
|||
"settings.option.general.customizeSidebar": "Personalizar os itens da barra lateral",
|
||||
"settings.option.general.customizeSidebar.customize": "Personalizar",
|
||||
"settings.option.general.keybindings": "Atalhos do teclado",
|
||||
"settings.option.general.keybindings.library": "Biblioteca",
|
||||
"settings.option.general.keybindings.session": "Sessão",
|
||||
"settings.option.general.keybindings.control": "Controlos",
|
||||
"settings.option.general.keybindings.interface": "Interface",
|
||||
"settings.option.general.keybindings.advanced": "Avançado",
|
||||
"settings.option.general.keybindings.pressCombination": "Prima uma combinação de duas teclas para atualizar o atalho.",
|
||||
"settings.option.general.keybindings.pressEscape": "Prima a tecla Escape para voltar atrás.",
|
||||
"settings.notyf.general.keybindings.update.success": "Atalho atualizado com sucesso",
|
||||
"settings.prompt.general.keybindings.update.success": "Atalho atualizado com sucesso. Prima OK para reiniciar o Cider",
|
||||
"settings.option.general.keybindings.open": "Abrir",
|
||||
"settings.option.general.themeUpdateNotification": "Verificação automática de atualizações de temas",
|
||||
"settings.option.general.showLovedTracksInline": "Mostrar músicas que gosta \"inline\"",
|
||||
"settings.description.search": "Pesquisa",
|
||||
|
@ -413,7 +410,9 @@
|
|||
"settings.option.audio.enableAdvancedFunctionality.atmosphereRealizerMode.E68_2": "Uji Matcha Milk Tea",
|
||||
"settings.option.audio.enableAdvancedFunctionality.atmosphereRealizerMode.E168_1": "Jasmine Macchiato",
|
||||
"settings.option.audio.enableAdvancedFunctionality.atmosphereRealizerMode.Z3600": "Hokkaido Milk Tea",
|
||||
"settings.option.audio.enableAdvancedFunctionality.atmosphereRealizerMode.Z8500": "Moonlight Softcake",
|
||||
"settings.option.audio.enableAdvancedFunctionality.atmosphereRealizerMode.Z8500A": "Moonwight Softcake",
|
||||
"settings.option.audio.enableAdvancedFunctionality.atmosphereRealizerMode.Z8500B": "Clafoutis aux Cerises",
|
||||
"settings.option.audio.enableAdvancedFunctionality.atmosphereRealizerMode.Z8500C": "Uji Matcha Mochi",
|
||||
"settings.option.audio.enableAdvancedFunctionality.atmosphereRealizerMode.BSCBM": "Brown Sugar Creme Brûlée Milk",
|
||||
"settings.option.audio.enableAdvancedFunctionality.atmosphereRealizerMode.CUDDLE": "Cuddle Warmth",
|
||||
"settings.option.audio.enableAdvancedFunctionality.ciderPPE": "Cider Adrenaline Processor™️",
|
||||
|
@ -448,6 +447,11 @@
|
|||
"settings.header.visual": "Aparência",
|
||||
"settings.header.visual.description": "Ajustar as definições visuais do Cider.",
|
||||
"settings.option.visual.windowStyle": "Estilo da janela",
|
||||
"settings.option.visual.customAccentColor": "Cor de destaque personalizada",
|
||||
"settings.option.visual.accentColor": "Cor de destaque",
|
||||
"settings.option.visual.purplePodcastPlaybackBar": "Barra de reprodução roxa para Podcasts",
|
||||
"settings.option.visual.windowColor": "Tonalidade da cor da janela",
|
||||
"settings.header.visual.windowBackgroundStyle.color": "Tonalidade da cor",
|
||||
"settings.option.visual.windowBackgroundStyle": "Estilo do fundo da janela",
|
||||
"settings.header.visual.windowBackgroundStyle.none": "Nenhum",
|
||||
"settings.header.visual.windowBackgroundStyle.artwork": "Grafismo",
|
||||
|
|
|
@ -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",
|
||||
|
@ -153,6 +154,7 @@
|
|||
},
|
||||
"term.videos": "Videos",
|
||||
"term.menu": "Menu",
|
||||
"term.themeManaged": "Managed by a theme",
|
||||
"term.check": "Check",
|
||||
"term.aboutArtist": "About {{artistName}}",
|
||||
"term.topResult": "Top Result",
|
||||
|
@ -192,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",
|
||||
|
@ -264,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",
|
||||
|
@ -288,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",
|
||||
|
@ -346,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": "只在艺人页面和专辑插图显示",
|
||||
|
|
|
@ -335,7 +335,7 @@ export class AppEvents {
|
|||
|
||||
{
|
||||
visible: !visible,
|
||||
label: this.i18n['action.tray.playpause'],
|
||||
label: this.i18n['term.playpause'],
|
||||
click: () => {
|
||||
utils.getWindow().webContents.executeJavaScript('MusicKitInterop.playPause()')
|
||||
}
|
||||
|
@ -343,7 +343,7 @@ export class AppEvents {
|
|||
|
||||
{
|
||||
visible: !visible,
|
||||
label: this.i18n['action.tray.next'],
|
||||
label: this.i18n['term.next'],
|
||||
click: () => {
|
||||
utils.getWindow().webContents.executeJavaScript(`MusicKitInterop.next()`)
|
||||
}
|
||||
|
@ -351,7 +351,7 @@ export class AppEvents {
|
|||
|
||||
{
|
||||
visible: !visible,
|
||||
label: this.i18n['action.tray.previous'],
|
||||
label: this.i18n['term.previous'],
|
||||
click: () => {
|
||||
utils.getWindow().webContents.executeJavaScript(`MusicKitInterop.previous()`)
|
||||
}
|
||||
|
@ -372,7 +372,7 @@ export class AppEvents {
|
|||
}
|
||||
},
|
||||
{
|
||||
label: this.i18n['action.tray.quit'],
|
||||
label: this.i18n['term.quit'],
|
||||
click: () => {
|
||||
app.quit()
|
||||
}
|
||||
|
|
|
@ -53,6 +53,7 @@ export class BrowserWindow {
|
|||
dev: app.isPackaged,
|
||||
osRelease: os.release(),
|
||||
updatable: !process.windowsStore || !process.mas,
|
||||
useV3: utils.getStoreValue('advanced.experiments').includes("ampv3"),
|
||||
components: [
|
||||
"pages/podcasts",
|
||||
"pages/apple-account-settings",
|
||||
|
@ -849,6 +850,7 @@ export class BrowserWindow {
|
|||
})
|
||||
|
||||
ipcMain.handle("get-github-plugin", async (event, url) => {
|
||||
await this.StopWatcher()
|
||||
const returnVal = {
|
||||
success: true,
|
||||
theme: null,
|
||||
|
@ -893,9 +895,11 @@ export class BrowserWindow {
|
|||
returnVal.success = false;
|
||||
}
|
||||
BrowserWindow.win.webContents.send("plugin-installed", returnVal);
|
||||
this.StartWatcher(utils.getPath('themes'));
|
||||
});
|
||||
|
||||
ipcMain.handle("get-github-theme", async (event, url) => {
|
||||
await this.StopWatcher()
|
||||
const returnVal = {
|
||||
success: true,
|
||||
theme: null,
|
||||
|
@ -940,6 +944,8 @@ export class BrowserWindow {
|
|||
returnVal.success = false;
|
||||
}
|
||||
BrowserWindow.win.webContents.send("theme-installed", returnVal);
|
||||
this.StartWatcher(utils.getPath('themes'));
|
||||
BrowserWindow.win.webContents.send("theme-update", "")
|
||||
});
|
||||
|
||||
ipcMain.on("get-themes", (event, _key) => {
|
||||
|
@ -1162,6 +1168,10 @@ export class BrowserWindow {
|
|||
app.quit();
|
||||
})
|
||||
|
||||
ipcMain.handle("quit-app", (_event, _) => {
|
||||
app.quit();
|
||||
})
|
||||
|
||||
app.on('before-quit', () => {
|
||||
|
||||
})
|
||||
|
|
|
@ -21,6 +21,7 @@ export class Store {
|
|||
"state_format": "by {artist}",
|
||||
"details_format": "{title}",
|
||||
},
|
||||
"refreshInterval": 120000,
|
||||
"language": "en_US", // electron.app.getLocale().replace('-', '_') this can be used in future
|
||||
"playbackNotifications": true,
|
||||
"resumeOnStartupBehavior": "local",
|
||||
|
@ -106,6 +107,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",
|
||||
|
@ -206,7 +219,6 @@ export class Store {
|
|||
},
|
||||
"windowControlPosition": 0, // 0 default right
|
||||
"nativeTitleBar": false,
|
||||
"uiScale": 1.0,
|
||||
"windowColor": "#000000",
|
||||
"customAccentColor": false,
|
||||
"accentColor": "#fc3c44",
|
||||
|
@ -228,10 +240,11 @@ export class Store {
|
|||
"NowPlaying": "true"
|
||||
},
|
||||
"advanced": {
|
||||
"AudioContext": false,
|
||||
"AudioContext": true,
|
||||
"experiments": [],
|
||||
"playlistTrackMapping": true,
|
||||
"ffmpegLocation": ""
|
||||
"ffmpegLocation": "",
|
||||
"disableLogging": false
|
||||
},
|
||||
"connectUser": {
|
||||
"auth": null,
|
||||
|
|
|
@ -2,7 +2,7 @@ import * as fs from "fs";
|
|||
import * as path from "path";
|
||||
import {Store} from "./store";
|
||||
import {BrowserWindow as bw} from "./browserwindow";
|
||||
import {app, dialog, ipcMain, Notification, shell } from "electron";
|
||||
import {app, dialog, ipcMain, Notification, shell, BrowserWindow} from "electron";
|
||||
import fetch from "electron-fetch";
|
||||
import {AppImageUpdater, NsisUpdater} from "electron-updater";
|
||||
import * as log from "electron-log";
|
||||
|
@ -124,7 +124,11 @@ export class utils {
|
|||
* Gets the browser window
|
||||
*/
|
||||
static getWindow(): Electron.BrowserWindow {
|
||||
if (bw.win) {
|
||||
return bw.win
|
||||
} else {
|
||||
return BrowserWindow.getAllWindows()[0]
|
||||
}
|
||||
}
|
||||
|
||||
static loadPluginFrontend(path: string): void {
|
||||
|
|
|
@ -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,26 +118,13 @@ 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'},
|
||||
{type: 'separator'},
|
||||
{
|
||||
label:'Zoom',
|
||||
submenu: [
|
||||
{role: 'zoom'},
|
||||
{role: 'resetZoom'},
|
||||
{role: 'zoomIn'},
|
||||
{role: 'zoomOut'},
|
||||
]
|
||||
},
|
||||
{type: 'separator'},
|
||||
{role: 'togglefullscreen'},
|
||||
|
||||
|
||||
{type: 'separator'},
|
||||
{role: 'front'},
|
||||
{role: 'close'},
|
||||
|
@ -139,29 +139,74 @@ export default class Thumbar {
|
|||
{role: 'paste'},
|
||||
]
|
||||
},
|
||||
] : [
|
||||
{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')},
|
||||
]),
|
||||
{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'},
|
||||
{
|
||||
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 () {
|
||||
|
@ -666,41 +667,6 @@ const CiderAudio = {
|
|||
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;
|
||||
case "MAIKIWI_LEGACY":
|
||||
CiderAudio.audioNodes.llpw[0] = CiderAudio.context.createConvolver();
|
||||
|
@ -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,6 +699,23 @@ const CiderAudio = {
|
|||
for (let i = 1; i < LLPW_FREQUENCIES.length; i ++) {
|
||||
CiderAudio.audioNodes.llpw[i-1].connect(CiderAudio.audioNodes.llpw[i]);
|
||||
}
|
||||
console.debug("[Cider][Audio] CAP - Legacy Mode");
|
||||
|
||||
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.57;
|
||||
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);
|
||||
});
|
||||
app.cfg.audio.maikiwiAudio.ciderPPE_value = "MAIKIWI";
|
||||
|
||||
console.debug("[Cider][Audio] CAP - Maikiwi Adaptive Mode (Defaulted from broki config)");
|
||||
break;
|
||||
}
|
||||
|
||||
switch (destination) {
|
||||
case "spatial":
|
||||
|
@ -820,12 +733,6 @@ const CiderAudio = {
|
|||
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) { }
|
||||
|
@ -833,60 +740,16 @@ const CiderAudio = {
|
|||
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");
|
||||
|
||||
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.57;
|
||||
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);
|
||||
});
|
||||
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]);
|
||||
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[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;
|
||||
}
|
||||
}
|
||||
|
||||
},
|
||||
|
|
|
@ -444,6 +444,7 @@
|
|||
.mediaitem-artwork {
|
||||
border-radius: var(--mediaItemRadiusSmall);
|
||||
}
|
||||
|
||||
.overlay-play {
|
||||
background: rgba(0, 0, 0, 0.5);
|
||||
opacity: 0;
|
||||
|
@ -957,6 +958,7 @@
|
|||
|
||||
/* mediaitem-square */
|
||||
.cd-mediaitem-square {
|
||||
--transitionDuration: .25s;
|
||||
--scaleRate: 1.25;
|
||||
--scaleRateArtwork: 1;
|
||||
width: 200px;
|
||||
|
@ -968,6 +970,7 @@
|
|||
justify-content: center;
|
||||
align-items: center;
|
||||
border-radius: 6px;
|
||||
transition: width var(--transitionDuration) linear, height var(--transitionDuration) linear;
|
||||
|
||||
.artwork-container {
|
||||
position: relative;
|
||||
|
@ -982,6 +985,7 @@
|
|||
flex: 0 0 auto;
|
||||
margin: 6px;
|
||||
cursor: pointer;
|
||||
transition: width var(--transitionDuration) linear, height var(--transitionDuration) linear;
|
||||
|
||||
.mediaitem-artwork {
|
||||
box-shadow: unset;
|
||||
|
@ -1055,7 +1059,10 @@
|
|||
}
|
||||
}
|
||||
|
||||
@media (min-width: 1600px) {
|
||||
&:not(.mediaitem-card):not(.mediaitem-brick):not(.mediaitem-video):not(.noscale) {
|
||||
@media (min-width: 1460px) {
|
||||
--scaleRate: 1.1;
|
||||
--scaleRateArtwork: 0.9;
|
||||
width: calc(200px * var(--scaleRate));
|
||||
height: calc(200px * var(--scaleRate));
|
||||
|
||||
|
@ -1065,6 +1072,20 @@
|
|||
}
|
||||
}
|
||||
|
||||
@media (min-width: 1550px) {
|
||||
--scaleRate: 1.25;
|
||||
--scaleRateArtwork: 1;
|
||||
width: calc(200px * var(--scaleRate));
|
||||
height: calc(200px * var(--scaleRate));
|
||||
|
||||
.artwork-container > .artwork {
|
||||
width: calc(190px * var(--scaleRateArtwork));
|
||||
height: calc(190px * var(--scaleRateArtwork));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
.info-rect {
|
||||
width: 90%;
|
||||
height: 100%;
|
||||
|
@ -1112,8 +1133,6 @@
|
|||
}
|
||||
|
||||
&.mediaitem-video {
|
||||
--scaleRate: 1.25;
|
||||
--scaleRateArtwork: 1.25;
|
||||
height: 200px;
|
||||
width: 240px;
|
||||
|
||||
|
@ -1122,13 +1141,29 @@
|
|||
width: 212px;
|
||||
}
|
||||
|
||||
@media (min-width: 1600px) {
|
||||
&:not(.noscale) {
|
||||
@media (min-width: 1460px) {
|
||||
--scaleRate: 1.1;
|
||||
--scaleRateArtwork: 1.1;
|
||||
width: calc(240px * var(--scaleRate));
|
||||
height: calc(200px * var(--scaleRate));
|
||||
|
||||
.artwork-container > .artwork {
|
||||
width: calc(212px * var(--scaleRateArtwork));
|
||||
height: calc(120px * var(--scaleRateArtwork));
|
||||
width: calc(220px * var(--scaleRateArtwork));
|
||||
height: calc(123px * var(--scaleRateArtwork));
|
||||
}
|
||||
}
|
||||
|
||||
@media (min-width: 1550px) {
|
||||
--scaleRate: 1.25;
|
||||
--scaleRateArtwork: 1.25;
|
||||
width: calc(240px * var(--scaleRate));
|
||||
height: calc(200px * var(--scaleRate));
|
||||
|
||||
.artwork-container > .artwork {
|
||||
width: calc(220px * var(--scaleRateArtwork));
|
||||
height: calc(123px * var(--scaleRateArtwork));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -1141,6 +1176,32 @@
|
|||
height: 123px;
|
||||
width: 220px;
|
||||
}
|
||||
|
||||
&:not(.noscale) {
|
||||
@media (min-width: 1460px) {
|
||||
--scaleRate: 1.1;
|
||||
--scaleRateArtwork: 1.1;
|
||||
width: calc(240px * var(--scaleRate));
|
||||
height: calc(200px * var(--scaleRate));
|
||||
|
||||
.artwork-container > .artwork {
|
||||
width: calc(220px * var(--scaleRateArtwork));
|
||||
height: calc(123px * var(--scaleRateArtwork));
|
||||
}
|
||||
}
|
||||
|
||||
@media (min-width: 1550px) {
|
||||
--scaleRate: 1.25;
|
||||
--scaleRateArtwork: 1.25;
|
||||
width: calc(240px * var(--scaleRate));
|
||||
height: calc(200px * var(--scaleRate));
|
||||
|
||||
.artwork-container > .artwork {
|
||||
width: calc(220px * var(--scaleRateArtwork));
|
||||
height: calc(123px * var(--scaleRateArtwork));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
&.mediaitem-small {
|
||||
|
@ -1169,7 +1230,7 @@
|
|||
overflow: hidden;
|
||||
border-radius: 0px;
|
||||
margin: 0;
|
||||
|
||||
transition: width var(--transitionDuration) linear, height var(--transitionDuration) linear, filter 0.2s ease-in-out;
|
||||
.mediaitem-artwork {
|
||||
border-radius: 0px;
|
||||
|
||||
|
@ -1183,6 +1244,8 @@
|
|||
padding: 10px 10px 14px;
|
||||
position: relative;
|
||||
width: 100%;
|
||||
display: grid;
|
||||
align-content: center;
|
||||
|
||||
&::before {
|
||||
background: var(--bgartwork);
|
||||
|
@ -1197,6 +1260,7 @@
|
|||
z-index: 0;
|
||||
opacity: 1;
|
||||
filter: brightness(0.5) blur(50px) saturate(180%);
|
||||
transition: filter 0.2s ease-in-out;
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -1211,7 +1275,7 @@
|
|||
|
||||
& + .subtitle {
|
||||
max-height: none !important;
|
||||
margin-top: -0.5em;
|
||||
// margin-top: -0.5em;
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -1241,14 +1305,34 @@
|
|||
border-radius: inherit;
|
||||
}
|
||||
|
||||
//@media (min-width: 1600px) {
|
||||
// width: calc(230px * 1.25);
|
||||
// height: calc(298px * 1.25);
|
||||
// .artwork-container>.artwork {
|
||||
// width: calc(230px * 1.25);
|
||||
// height: calc(230px * 1.25);
|
||||
// }
|
||||
//}
|
||||
&:hover {
|
||||
.artwork{
|
||||
filter: brightness(0.8);
|
||||
}
|
||||
.info-rect-card::before {
|
||||
filter: brightness(0.3) blur(50px) saturate(180%);
|
||||
}
|
||||
}
|
||||
|
||||
&:not(.noscale) {
|
||||
@media (min-width: 1460px) {
|
||||
width: calc(230px * 1.1);
|
||||
height: calc(298px * 1.1);
|
||||
.artwork-container > .artwork {
|
||||
width: calc(230px * 1.1);
|
||||
height: calc(230px * 1.1);
|
||||
}
|
||||
}
|
||||
|
||||
@media (min-width: 1550px) {
|
||||
width: calc(230px * 1.25);
|
||||
height: calc(298px * 1.25);
|
||||
.artwork-container > .artwork {
|
||||
width: calc(230px * 1.25);
|
||||
height: calc(230px * 1.25);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -153,22 +153,8 @@
|
|||
}
|
||||
|
||||
.close-btn {
|
||||
width : 50px;
|
||||
height : 100%;
|
||||
background-image : var(--gfx-closeBtn);
|
||||
background-position: center;
|
||||
background-repeat : no-repeat;
|
||||
-webkit-app-region : no-drag;
|
||||
appearance : none;
|
||||
border : 0;
|
||||
background-color : transparent;
|
||||
position : absolute;
|
||||
top : 0;
|
||||
right : 0;
|
||||
.menu-panel.menu-header-text.close-btn
|
||||
|
||||
&:hover {
|
||||
background-color: rgb(196, 43, 28)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -191,22 +177,7 @@
|
|||
}
|
||||
|
||||
.close-btn {
|
||||
width : 50px;
|
||||
height : 100%;
|
||||
background-image : var(--gfx-closeBtn);
|
||||
background-position: center;
|
||||
background-repeat : no-repeat;
|
||||
-webkit-app-region : no-drag;
|
||||
appearance : none;
|
||||
border : 0;
|
||||
background-color : transparent;
|
||||
position : absolute;
|
||||
top : 0;
|
||||
right : 0;
|
||||
|
||||
&:hover {
|
||||
background-color: rgb(196, 43, 28)
|
||||
}
|
||||
.menu-panel.menu-header-text.close-btn
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -371,23 +342,31 @@
|
|||
}
|
||||
}
|
||||
|
||||
|
||||
.menu-header-text {
|
||||
margin: 18px 6px;
|
||||
|
||||
.close-btn {
|
||||
width : 50px;
|
||||
height : 42px;
|
||||
background-image : var(--gfx-closeBtn);
|
||||
width: 36px;
|
||||
height: 36px;
|
||||
background-position: center;
|
||||
background-repeat : no-repeat;
|
||||
-webkit-app-region : no-drag;
|
||||
appearance : none;
|
||||
border : 0;
|
||||
background-color : transparent;
|
||||
position : absolute;
|
||||
top : 0;
|
||||
right : 0;
|
||||
background-repeat: no-repeat;
|
||||
-webkit-app-region: no-drag;
|
||||
appearance: none;
|
||||
border: 0;
|
||||
background-color: transparent;
|
||||
position: absolute;
|
||||
top: 10px;
|
||||
right: 10px;
|
||||
border-radius: 50px;
|
||||
display: grid;
|
||||
align-content: center;
|
||||
|
||||
&:before {
|
||||
content: "";
|
||||
font-family: "codicon";
|
||||
color: var(--textColor);
|
||||
font-size: 20px;
|
||||
}
|
||||
|
||||
&:hover {
|
||||
background-color: rgb(196, 43, 28)
|
||||
|
@ -505,7 +484,8 @@
|
|||
.popover-artwork {
|
||||
width: 200px;
|
||||
height: 200px;
|
||||
margin: 0 0 20px 0;
|
||||
margin: 0 auto;
|
||||
margin-bottom: 20px;
|
||||
}
|
||||
|
||||
.song-name {
|
||||
|
|
|
@ -3,4 +3,57 @@ body[platform="linux"] {
|
|||
#window-controls-container {
|
||||
//display: none;
|
||||
}
|
||||
|
||||
.window-controls {
|
||||
justify-content: flex-end;
|
||||
align-items : center;
|
||||
padding-right : 6px;
|
||||
|
||||
>div {
|
||||
--iconSize: 16px;
|
||||
|
||||
&.close,
|
||||
&.minmax,
|
||||
&.minimize,
|
||||
&.minmax.restore {
|
||||
background-image: unset!important;
|
||||
position : relative;
|
||||
display : grid;
|
||||
align-content : center;
|
||||
text-align : center;
|
||||
height : 36px!important;
|
||||
width : 36px!important;
|
||||
border-radius : 50px;
|
||||
transition: background-color .1s ease-in-out;
|
||||
|
||||
&:hover {
|
||||
background: rgb(200 200 200 / 10%)!important;
|
||||
}
|
||||
}
|
||||
|
||||
&.close::before {
|
||||
font-family: "codicon";
|
||||
font-size : var(--iconSize);
|
||||
content : "";
|
||||
}
|
||||
|
||||
&.minmax::before {
|
||||
font-family: "codicon";
|
||||
font-size : var(--iconSize);
|
||||
content : "";
|
||||
}
|
||||
|
||||
&.minimize::before {
|
||||
font-family: "codicon";
|
||||
font-size : var(--iconSize);
|
||||
content : "";
|
||||
}
|
||||
|
||||
&.restore::before {
|
||||
font-family: "codicon";
|
||||
font-size : var(--iconSize);
|
||||
content : "";
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
|
@ -288,6 +288,7 @@
|
|||
|
||||
.podcast-header {
|
||||
text-align: center;
|
||||
padding: 0 1rem;
|
||||
}
|
||||
|
||||
.podcast-play-btn {
|
||||
|
@ -634,7 +635,7 @@
|
|||
opacity : .7;
|
||||
animation : playlistArtworkFadeIn 1s var(--appleEase);
|
||||
|
||||
.artworkMaterial>img {
|
||||
.artworkMaterial img {
|
||||
filter : brightness(100%) blur(80px) saturate(100%) contrast(1);
|
||||
object-position: center;
|
||||
object-fit : cover;
|
||||
|
@ -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;
|
||||
|
@ -962,6 +973,10 @@
|
|||
right : 28px;
|
||||
}
|
||||
|
||||
&.animated .artist-header {
|
||||
min-height: 500px;
|
||||
}
|
||||
|
||||
.artist-header {
|
||||
//background: linear-gradient(45deg, var(--keyColor), #0e0e0e);
|
||||
color : white;
|
||||
|
@ -977,6 +992,19 @@
|
|||
// margin-top: -16px;
|
||||
}
|
||||
|
||||
.artist-hero {
|
||||
height:100%;
|
||||
position: absolute;
|
||||
top:0;
|
||||
left:0;
|
||||
right:0;
|
||||
bottom:0;
|
||||
|
||||
.mediaitem-artwork {
|
||||
border-radius: 0px;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
.artworkContainer {
|
||||
position : absolute;
|
||||
|
@ -990,7 +1018,7 @@
|
|||
opacity : .7;
|
||||
animation : playlistArtworkFadeIn 1s var(--appleEase);
|
||||
|
||||
.artworkMaterial>img {
|
||||
.artworkMaterial img {
|
||||
filter : brightness(100%) blur(80px) saturate(100%) contrast(1);
|
||||
object-position: center;
|
||||
object-fit : cover;
|
||||
|
@ -1013,6 +1041,7 @@
|
|||
position : absolute;
|
||||
overflow : hidden;
|
||||
box-shadow: rgb(0 0 0 / 50%) 0 0 0 1000000px inset;
|
||||
z-index: 1;
|
||||
|
||||
video {
|
||||
overflow : hidden;
|
||||
|
|
|
@ -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 = [];
|
||||
|
@ -874,6 +868,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) {
|
||||
}
|
||||
}
|
||||
|
@ -922,32 +917,44 @@ const app = new Vue({
|
|||
}
|
||||
})
|
||||
|
||||
// Used for Live Radio stations to set Metadata
|
||||
this.mk.addEventListener(MusicKit.Events.timedMetadataDidChange, (e) => {
|
||||
app.mk.nowPlayingItem.attributes.name = e.title
|
||||
app.mk.nowPlayingItem.attributes.artistName = e.performer
|
||||
app.mk.nowPlayingItem.attributes.albumName = e.album
|
||||
if(e.links[1]) {
|
||||
app.currentArtUrl = e.links[1].url
|
||||
app.currentArtUrlRaw = e.links[1].url
|
||||
}else{
|
||||
app.currentArtUrl = e.links[0].url
|
||||
app.currentArtUrlRaw = e.links[0].url
|
||||
}
|
||||
app.mk.nowPlayingItem._songId = e._adamId ? e._adamId : -1
|
||||
app.mk.nowPlayingItem.id = e._adamId ? e._adamId : -1
|
||||
})
|
||||
|
||||
this.mk.addEventListener(MusicKit.Events.nowPlayingItemDidChange, (a) => {
|
||||
if (self.$refs.queue) {
|
||||
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();
|
||||
}
|
||||
} else if (app.mk.nowPlayingItem.flavor.includes("256")) {
|
||||
if (localStorage.getItem("playingBitrate") !== "256") {
|
||||
localStorage.setItem("playingBitrate", "256")
|
||||
CiderAudio.hierarchical_loading();
|
||||
}
|
||||
} 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) {
|
||||
|
@ -962,14 +969,17 @@ const app = new Vue({
|
|||
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
|
||||
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)}
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -1172,9 +1182,20 @@ const app = new Vue({
|
|||
},
|
||||
getAppClasses() {
|
||||
let classes = {}
|
||||
switch (this.getThemeDirective('forceUI') ?? "none") {
|
||||
case "compact":
|
||||
classes.compact = true;
|
||||
break;
|
||||
case "standard":
|
||||
classes.compact = false;
|
||||
break;
|
||||
default:
|
||||
if (this.cfg.advanced.experiments.includes('compactui')) {
|
||||
classes.compact = true
|
||||
classes.compact = true;
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
if (this.cfg.visual.window_background_style == "none") {
|
||||
classes.simplebg = true
|
||||
}
|
||||
|
@ -1430,6 +1451,12 @@ const app = new Vue({
|
|||
action: () => {
|
||||
this.newPlaylistFolder()
|
||||
}
|
||||
},
|
||||
{
|
||||
name: app.getLz("action.refresh"),
|
||||
action: ()=>{
|
||||
this.refreshPlaylists()
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
|
@ -1675,7 +1702,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",
|
||||
|
@ -1982,14 +2009,21 @@ const app = new Vue({
|
|||
},
|
||||
|
||||
async getNowPlayingItemDetailed(target) {
|
||||
let nowPlayingItem = JSON.parse(JSON.stringify(this.mk.nowPlayingItem))
|
||||
if(nowPlayingItem.type === "radioStation" && app.mk.nowPlayingItem.id !== -1) {
|
||||
nowPlayingItem.playParams = {kind: "songs"}
|
||||
nowPlayingItem.attributes.playParams.catalogId = app.mk.nowPlayingItem.id
|
||||
nowPlayingItem.attributes.playParams.id = app.mk.nowPlayingItem.id
|
||||
nowPlayingItem.id = app.mk.nowPlayingItem.id
|
||||
}
|
||||
try {
|
||||
let u = await app.mkapi(app.mk.nowPlayingItem.playParams.kind,
|
||||
(app.mk.nowPlayingItem.songId == -1),
|
||||
(app.mk.nowPlayingItem.songId != -1) ? app.mk.nowPlayingItem.songId : app.mk.nowPlayingItem["id"],
|
||||
let u = await app.mkapi(nowPlayingItem.playParams.kind,
|
||||
(nowPlayingItem.songId == -1),
|
||||
(nowPlayingItem.songId != -1) ? nowPlayingItem.songId : nowPlayingItem["id"],
|
||||
{ "include[songs]": "albums,artists", l: app.mklang });
|
||||
app.searchAndNavigate(u.data.data[0], target)
|
||||
} catch (e) {
|
||||
app.searchAndNavigate(app.mk.nowPlayingItem, target)
|
||||
app.searchAndNavigate(nowPlayingItem, target)
|
||||
}
|
||||
},
|
||||
async searchAndNavigate(item, target) {
|
||||
|
@ -2424,6 +2458,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
|
||||
}
|
||||
|
@ -4312,7 +4347,15 @@ const app = new Vue({
|
|||
this.showMenuPanel(menus[useMenu], event)
|
||||
|
||||
try {
|
||||
let result = await this.inLibrary([this.mk.nowPlayingItem])
|
||||
// if its a radio station, then change the attributes to match a song
|
||||
const nowPlayingItem = JSON.parse(JSON.stringify(this.mk.nowPlayingItem))
|
||||
if(nowPlayingItem.type == "radioStation" && app.mk.nowPlayingItem.id != -1) {
|
||||
nowPlayingItem.type = "song"
|
||||
nowPlayingItem.attributes.playParams.catalogId = app.mk.nowPlayingItem.id
|
||||
nowPlayingItem.attributes.playParams.id = app.mk.nowPlayingItem.id
|
||||
nowPlayingItem.id = app.mk.nowPlayingItem.id
|
||||
}
|
||||
let result = await this.inLibrary([nowPlayingItem])
|
||||
if (result[0].attributes.inLibrary) {
|
||||
menus.normal.items.find(x => x.id == 'addToLibrary').hidden = true
|
||||
menus.normal.items.find(x => x.id == 'removeFromLibrary').hidden = false
|
||||
|
|
|
@ -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
|
||||
}
|
||||
|
|
|
@ -1,9 +1,8 @@
|
|||
@import url("assets/fonts/Pretendard/pretendardvariable.css");
|
||||
@import url('https://fonts.googleapis.com/css2?family=Noto+Sans+JP:wght@100;300;400;500;700;900&display=swap');
|
||||
@import url("https://fonts.googleapis.com/css2?family=Noto+Sans+SC:wght@100;300;400;500;700;900&display=swap");
|
||||
@import url("https://fonts.googleapis.com/css2?family=Noto+Sans+HK:wght@100;300;400;500;700;900&display=swap");
|
||||
@import url("https://fonts.googleapis.com/css2?family=Noto+Sans+TC:wght@100;300;400;500;700;900&display=swap");
|
||||
@import url("https://fonts.googleapis.com/css2?family=Noto+Sans+JP:wght@100;300;400;500;700;900&display=swap");
|
||||
@import url("https://fonts.googleapis.com/css2?family=Noto+Sans+KR:wght@100;300;400;500;700;900&display=swap");
|
||||
@import url("https://fonts.googleapis.com/css2?family=Noto+Sans+TC:wght@100;300;400;500;700;900&display=swap");
|
||||
@import url("https://fonts.googleapis.com/css2?family=Noto+Sans+SC:wght@100;300;400;500;700;900&display=swap");
|
||||
@import url("less/appvars.less");
|
||||
@import url("less/bootstrap-vue.min.less");
|
||||
@import url("less/ameframework.less");
|
||||
|
@ -69,7 +68,7 @@ body {
|
|||
background-size: cover;
|
||||
background-position: center;
|
||||
background: #0000;
|
||||
font-family: "Pretendard Variable", -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen, Ubuntu, Cantarell, 'Open Sans', 'Helvetica Neue', sans-serif;
|
||||
font-family: "Pretendard Variable", "Noto Sans JP", "Noto Sans KR", "Noto Sans TC", "Noto Sans SC", -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen, Ubuntu, Cantarell, 'Open Sans', 'Helvetica Neue', sans-serif;
|
||||
transition: opacity .10s var(--appleEase);
|
||||
}
|
||||
|
||||
|
@ -311,19 +310,19 @@ a.dropdown-item {
|
|||
overflow: hidden;
|
||||
pointer-events: none;
|
||||
|
||||
> img {
|
||||
img {
|
||||
position: absolute;
|
||||
width: 200%;
|
||||
opacity: 0.5;
|
||||
filter: brightness(200%) blur(180px) saturate(280%) contrast(2);
|
||||
}
|
||||
|
||||
> img:first-child {
|
||||
img:first-child {
|
||||
top: 0;
|
||||
left: 0;
|
||||
}
|
||||
|
||||
> img:last-child {
|
||||
img:last-child {
|
||||
bottom: 0;
|
||||
right: 0;
|
||||
transform: rotate(180deg);
|
||||
|
@ -1163,18 +1162,14 @@ input[type=range].web-slider::-webkit-slider-runnable-track {
|
|||
&-macos {
|
||||
width: 100px;
|
||||
}
|
||||
}
|
||||
|
||||
.app-chrome .app-chrome-item > .window-controls > div {
|
||||
> div {
|
||||
height: 100%;
|
||||
width: 32px;
|
||||
}
|
||||
|
||||
.app-chrome .app-chrome-item > .window-controls > div:hover {
|
||||
&:hover {
|
||||
background: rgb(200 200 200 / 10%);
|
||||
}
|
||||
|
||||
.app-chrome .app-chrome-item > .window-controls > div.close {
|
||||
}
|
||||
&.close {
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
background-image: var(--gfx-closeBtn);
|
||||
|
@ -1185,28 +1180,27 @@ input[type=range].web-slider::-webkit-slider-runnable-track {
|
|||
&:hover {
|
||||
background-color: rgb(196, 43, 28)
|
||||
}
|
||||
}
|
||||
|
||||
.app-chrome .app-chrome-item > .window-controls > div.minmax {
|
||||
}
|
||||
&.minmax {
|
||||
background-image: var(--gfx-maxBtn);
|
||||
background-position: center;
|
||||
background-repeat: no-repeat;
|
||||
-webkit-app-region: no-drag;
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
}
|
||||
|
||||
.app-chrome .app-chrome-item > .window-controls > div.minmax.restore {
|
||||
}
|
||||
&.minmax.restore {
|
||||
background-image: var(--gfx-restoreBtn);
|
||||
}
|
||||
|
||||
.app-chrome .app-chrome-item > .window-controls > div.minimize {
|
||||
}
|
||||
&.minimize {
|
||||
background-image: var(--gfx-minBtn);
|
||||
background-position: center;
|
||||
background-repeat: no-repeat;
|
||||
-webkit-app-region: no-drag;
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
body[platform="darwin"] .app-chrome .app-chrome-item > .window-controls > div.minimize {
|
||||
|
@ -1452,10 +1446,13 @@ div[data-type="musicVideo"] .info-rect .title::before {
|
|||
background-position: center;
|
||||
background-size: contain;
|
||||
background-repeat: no-repeat;
|
||||
border-radius: 4px;
|
||||
border-radius: var(--mediaItemRadiusSmall);
|
||||
flex: 0 0 auto;
|
||||
margin: 6px;
|
||||
image-rendering: -webkit-optimize-contrast;
|
||||
.mediaitem-artwork {
|
||||
border-radius: var(--mediaItemRadiusSmall);
|
||||
}
|
||||
}
|
||||
|
||||
.app-chrome .app-chrome-item > .app-playback-controls .actions {
|
||||
|
@ -1656,7 +1653,7 @@ input[type="range"].web-slider.display--small::-webkit-slider-thumb {
|
|||
overflow-x: hidden;
|
||||
display: flex;
|
||||
flex-flow: column;
|
||||
font-family: "Pretendard Variable", -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen, Ubuntu, Cantarell, 'Open Sans', 'Helvetica Neue', sans-serif;
|
||||
font-family: "Pretendard Variable", "Noto Sans JP", "Noto Sans KR", "Noto Sans TC", "Noto Sans SC", -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen, Ubuntu, Cantarell, 'Open Sans', 'Helvetica Neue', sans-serif;
|
||||
}
|
||||
|
||||
.lyric-body .no-lyrics {
|
||||
|
@ -1761,7 +1758,7 @@ input[type="range"].web-slider.display--small::-webkit-slider-thumb {
|
|||
.lyrics-translation {
|
||||
font-size: 1.6rem;
|
||||
font-weight: 450;
|
||||
font-family: "Pretendard Variable", -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen, Ubuntu, Cantarell, 'Open Sans', 'Helvetica Neue', sans-serif;
|
||||
font-family: "Pretendard Variable", "Noto Sans JP", "Noto Sans KR", "Noto Sans TC", "Noto Sans SC", -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen, Ubuntu, Cantarell, 'Open Sans', 'Helvetica Neue', sans-serif;
|
||||
filter: contrast(0.5);
|
||||
}
|
||||
|
||||
|
@ -3422,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;
|
||||
|
@ -3475,22 +3459,7 @@ body.no-gpu {
|
|||
}
|
||||
|
||||
.close-btn {
|
||||
width: 50px;
|
||||
height: 100%;
|
||||
background-image: var(--gfx-closeBtn);
|
||||
background-position: center;
|
||||
background-repeat: no-repeat;
|
||||
-webkit-app-region: no-drag;
|
||||
appearance: none;
|
||||
border: 0;
|
||||
background-color: transparent;
|
||||
position: absolute;
|
||||
top: 0;
|
||||
right: 0;
|
||||
|
||||
&:hover {
|
||||
background-color: rgb(196, 43, 28)
|
||||
}
|
||||
.menu-panel.menu-header-text.close-btn
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -3609,8 +3578,10 @@ 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;
|
||||
|
@ -3618,6 +3589,21 @@ body[platform='darwin'] {
|
|||
font-size: 2em;
|
||||
}
|
||||
|
||||
.md-option-header-sub {
|
||||
padding: 15px 10px;
|
||||
border-bottom: unset;
|
||||
border-top: unset;
|
||||
background: rgba(255, 255, 255, 0);
|
||||
font-weight: 600;
|
||||
font-size: 1.7em;
|
||||
}
|
||||
|
||||
.md-option-line{
|
||||
padding: 15px 20px;
|
||||
font-size: 0.90em;
|
||||
}
|
||||
}
|
||||
|
||||
.content-inner.keybinds-page {
|
||||
top: var(--navigationBarHeight);
|
||||
padding: 15px;
|
||||
|
|
|
@ -57,10 +57,6 @@
|
|||
.cd-mediaitem-square:not(.mediaitem-card) {
|
||||
transition : transform .2s var(--appleEase);
|
||||
transition-delay: .1s;
|
||||
padding : 12px;
|
||||
|
||||
// background-color: red;
|
||||
height: 220px;
|
||||
|
||||
|
||||
.artwork-container {}
|
||||
|
@ -73,9 +69,16 @@
|
|||
transition-delay: .05s;
|
||||
}
|
||||
|
||||
.artwork-container {
|
||||
transform : scale(0.962) translateZ(0);
|
||||
transition : transform .1s var(--appleEase);
|
||||
transition-delay: 0s;
|
||||
transform-origin: center;
|
||||
}
|
||||
|
||||
&:hover {
|
||||
.artwork-container {
|
||||
transform : scale(1.1);
|
||||
transform : scale(1.0);
|
||||
transition : transform .1s var(--appleEase);
|
||||
transition-delay: 0s;
|
||||
transform-origin: center;
|
||||
|
|
|
@ -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>
|
||||
|
|
|
@ -10,10 +10,10 @@
|
|||
<b-popover custom-class="mediainfo-popover" target="artworkLCD" triggers="hover" placement="right">
|
||||
<div class="content">
|
||||
<div class="shadow-artwork">
|
||||
<mediaitem-artwork :url="currentArtUrl" :url="currentArtUrlRaw"></mediaitem-artwork>
|
||||
<mediaitem-artwork :url="currentArtUrl"></mediaitem-artwork>
|
||||
</div>
|
||||
<div class="popover-artwork">
|
||||
<mediaitem-artwork :size="210" :url="currentArtUrlRaw"></mediaitem-artwork>
|
||||
<mediaitem-artwork :url="currentArtUrl"></mediaitem-artwork>
|
||||
</div>
|
||||
<div class="song-name">{{ mk.nowPlayingItem["attributes"]["name"] }}</div>
|
||||
<div class="song-artist" @click="getNowPlayingItemDetailed(`artist`)">{{ mk.nowPlayingItem["attributes"]["artistName"] }}</div>
|
||||
|
@ -60,13 +60,27 @@
|
|||
</div>
|
||||
</template>
|
||||
|
||||
<template v-else>
|
||||
<div class="app-playback-controls">
|
||||
<div class="artwork" id="artworkLCD" style="pointer-events: none;">
|
||||
<mediaitem-artwork :url="currentArtUrl"></mediaitem-artwork>
|
||||
</div>
|
||||
<div class="playback-info">
|
||||
<div class="song-name">
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</template>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
<div class="app-chrome--center">
|
||||
<div class="app-chrome-playback-duration-bottom">
|
||||
<b-row>
|
||||
<b-col sm="auto">{{ convertTime(getSongProgress()) }}</b-col>
|
||||
<b-row v-if="mkReady()">
|
||||
<b-col sm="auto" v-if="!mk.nowPlayingItem?.isLiveRadioStation">{{ convertTime(getSongProgress()) }}</b-col>
|
||||
<b-col sm="auto" v-else>--:--</b-col>
|
||||
<b-col>
|
||||
<input type="range" step="0.01" min="0" :style="progressBarStyle()"
|
||||
@input="playerLCD.desiredDuration = $event.target.value;playerLCD.userInteraction = true"
|
||||
|
@ -74,7 +88,8 @@
|
|||
@touchend="mk.seekToTime($event.target.value);setTimeout(()=>{playerLCD.desiredDuration = 0;playerLCD.userInteraction = false}, 1000);"
|
||||
:max="mk.currentPlaybackDuration" :value="getSongProgress()">
|
||||
</b-col>
|
||||
<b-col sm="auto">{{ convertTime(mk.currentPlaybackDuration) }}</b-col>
|
||||
<b-col sm="auto" v-if="!mk.nowPlayingItem?.isLiveRadioStation">{{ convertTime(mk.currentPlaybackDuration) }}</b-col>
|
||||
<b-col sm="auto" v-else>{{ getLz("term.live") }}</b-col>
|
||||
</b-row>
|
||||
</div>
|
||||
<div class="app-chrome-playback-controls">
|
||||
|
|
|
@ -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'">
|
||||
|
@ -89,10 +89,10 @@
|
|||
<b-popover custom-class="mediainfo-popover" target="artworkLCD" triggers="hover" placement="bottom">
|
||||
<div class="content">
|
||||
<div class="shadow-artwork">
|
||||
<mediaitem-artwork :url="currentArtUrl" :url="currentArtUrlRaw"></mediaitem-artwork>
|
||||
<mediaitem-artwork :url="currentArtUrl"></mediaitem-artwork>
|
||||
</div>
|
||||
<div class="popover-artwork">
|
||||
<mediaitem-artwork :size="210" :url="currentArtUrlRaw"></mediaitem-artwork>
|
||||
<mediaitem-artwork :size="210" :url="currentArtUrl"></mediaitem-artwork>
|
||||
</div>
|
||||
<div class="song-name">
|
||||
{{ mk.nowPlayingItem["attributes"]["name"] }}
|
||||
|
@ -183,6 +183,18 @@
|
|||
</template>
|
||||
</div>
|
||||
</template>
|
||||
<template v-else>
|
||||
<div class="app-playback-controls">
|
||||
<div class="artwork" id="artworkLCD" style="pointer-events: none;">
|
||||
<mediaitem-artwork :url="currentArtUrl"></mediaitem-artwork>
|
||||
</div>
|
||||
<div class="playback-info">
|
||||
<div class="info-rect">
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
</div>
|
||||
<div class="app-chrome-item" v-else>
|
||||
<div class="top-nav-group">
|
||||
|
@ -257,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>
|
||||
|
|
|
@ -1,7 +1,9 @@
|
|||
<script type="text/x-template" id="artist-chip">
|
||||
<div class="artist-chip" @click.self="route" tabindex="0">
|
||||
<div class="artist-chip__image">
|
||||
<mediaitem-artwork v-if="artist.id != null" :url="artist.attributes.artwork.url" :size="32"></mediaitem-artwork>
|
||||
<div class="artist-chip__image" v-if="image" :style="{backgroundColor: '#' + (artist.attributes.artwork?.bgColor ?? '000')}">
|
||||
<mediaitem-artwork v-if="artist.id != null" :url="artist.attributes.artwork.url" :size="80"></mediaitem-artwork>
|
||||
</div>
|
||||
<div class="artist-chip__image" v-else>
|
||||
</div>
|
||||
<div class="artist-chip__name">
|
||||
<span>{{ item.attributes.name }}</span>
|
||||
|
@ -21,6 +23,7 @@
|
|||
},
|
||||
data: function() {
|
||||
return {
|
||||
image: false,
|
||||
artist: {
|
||||
id: null
|
||||
}
|
||||
|
@ -34,6 +37,7 @@
|
|||
}
|
||||
app.mk.api.v3.music(`/v1/catalog/${app.mk.storefrontId}/artists/${artistId}`).then(response => {
|
||||
this.artist = response.data.data[0];
|
||||
this.image = true;
|
||||
});
|
||||
},
|
||||
methods: {
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
<script type="text/x-template" id="artwork-material">
|
||||
<div class="artworkMaterial">
|
||||
<img :src="src" v-for="image in images"/>
|
||||
<mediaitem-artwork :url="src" :size="500" v-for="image in images"/>
|
||||
</div>
|
||||
</script>
|
||||
|
||||
|
|
|
@ -14,7 +14,9 @@
|
|||
<div class="artwork" @click="app.fullscreen(false)">
|
||||
<mediaitem-artwork
|
||||
:size="600"
|
||||
:url="(image ?? '').replace('{w}','600').replace('{h}','600') "
|
||||
:video="video"
|
||||
:videoPriority="true"
|
||||
:url="(image ?? '').replace('{w}','600').replace('{h}','600')"
|
||||
></mediaitem-artwork>
|
||||
</div>
|
||||
<div class="controls-parents">
|
||||
|
@ -52,40 +54,41 @@
|
|||
</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 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">
|
||||
<button class="playback-button previous" @click="app.prevButton()"
|
||||
<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">
|
||||
<button class="playback-button pause" @click="app.mk.pause()" v-if="app.mk.isPlaying"
|
||||
<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="app.mk.play()" v-else
|
||||
:title="$root.getLz('term.play')" 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="app.skipToNextItem()"
|
||||
<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">
|
||||
<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')"
|
||||
<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">
|
||||
<button class="volume-button--small volume" @click="app.muteButtonPressed()" :class="{'active': app.cfg.audio.volume == 0}"
|
||||
|
@ -149,6 +152,37 @@
|
|||
return {
|
||||
app: this.$root,
|
||||
tabMode: "lyrics",
|
||||
video: null
|
||||
}
|
||||
},
|
||||
async mounted() {
|
||||
if (app.mk.nowPlayingItem._container.type == "albums") {
|
||||
try {
|
||||
const result = (await app.mk.api.v3.music(`/v1/catalog/${app.mk.storefrontId}/${app.mk.nowPlayingItem._container.type}/${app.mk.nowPlayingItem._container.id}`, {
|
||||
"fields": "editorialArtwork,editorialVideo",
|
||||
})).data.data[0].attributes?.editorialVideo?.motionDetailSquare?.video
|
||||
if (result) {
|
||||
this.video = result
|
||||
} else {
|
||||
this.video = null
|
||||
}
|
||||
} catch (e) {
|
||||
this.video = null
|
||||
e = null
|
||||
}
|
||||
} else if (app.mk.nowPlayingItem._container.type == "library-albums") {
|
||||
try {
|
||||
const result = (await app.mk.api.v3.music(`/v1/me/library/albums/${app.mk.nowPlayingItem._container.id}/catalog`
|
||||
, { "fields": "editorialArtwork,editorialVideo" })).data.data[0].attributes?.editorialVideo?.motionDetailSquare?.video
|
||||
if (result) {
|
||||
this.video = result
|
||||
} else {
|
||||
this.video = null
|
||||
}
|
||||
} catch (e) {
|
||||
e = null
|
||||
this.video = null
|
||||
}
|
||||
}
|
||||
},
|
||||
beforeMount() {
|
||||
|
|
|
@ -87,6 +87,11 @@
|
|||
default: false,
|
||||
required: false
|
||||
},
|
||||
noScale: {
|
||||
type: Boolean,
|
||||
default: false,
|
||||
required: false
|
||||
},
|
||||
'contextExt': { type: Object, required: false },
|
||||
},
|
||||
data: function () {
|
||||
|
@ -251,6 +256,10 @@
|
|||
},
|
||||
getClasses() {
|
||||
let type = []
|
||||
let classes = []
|
||||
if(this.noScale) {
|
||||
classes.push("noscale")
|
||||
}
|
||||
try {
|
||||
type = this.item.type
|
||||
|
||||
|
@ -263,25 +272,26 @@
|
|||
}
|
||||
switch (type) {
|
||||
default:
|
||||
return []
|
||||
|
||||
break;
|
||||
case "editorial-elements":
|
||||
case "card":
|
||||
return ["mediaitem-card"]
|
||||
classes.push("mediaitem-card")
|
||||
break;
|
||||
case "385": // editorial
|
||||
return ["mediaitem-brick"]
|
||||
classes.push("mediaitem-brick")
|
||||
break;
|
||||
case "small":
|
||||
return ["mediaitem-small"]
|
||||
classes.push("mediaitem-small")
|
||||
break;
|
||||
case "music-videos":
|
||||
case "uploadedVideo":
|
||||
case "uploaded-videos":
|
||||
case "library-music-videos":
|
||||
return "mediaitem-video";
|
||||
classes.push("mediaitem-video")
|
||||
break;
|
||||
}
|
||||
return classes
|
||||
},
|
||||
visibilityChanged: function (isVisible, entry) {
|
||||
this.isVisible = isVisible
|
||||
|
|
|
@ -66,29 +66,39 @@
|
|||
</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 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">
|
||||
<button class="playback-button previous" @click="app.prevButton()"></button>
|
||||
<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">
|
||||
<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 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">
|
||||
<button class="playback-button next" @click="app.skipToNextItem()"></button>
|
||||
<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 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>
|
||||
<div class="app-chrome-item volume display--large">
|
||||
|
|
|
@ -71,7 +71,7 @@
|
|||
<div id="LOADER">
|
||||
<%- include("../assets/cider-round.svg") %>
|
||||
</div>
|
||||
<div id="app" :class="getAppClasses()" :style="getAppStyle()" :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'); %>
|
||||
|
@ -105,7 +105,8 @@
|
|||
<% } %>
|
||||
|
||||
|
||||
<script async src="https://js-cdn.music.apple.com/musickit/v3/amp/musickit.js" data-web-components></script>
|
||||
<script async src="<%- (env.useV3 ? "https://js-cdn.music.apple.com/musickit/v3/amp/musickit.js" : "https://js-cdn.music.apple.com/musickit/v2/amp/musickit.js" ) %>" data-web-components>
|
||||
</script>
|
||||
<script src="index.js?v=1"></script>
|
||||
|
||||
<script type="text/x-template" id="am-musiccovershelf">
|
||||
|
|
|
@ -1,17 +1,17 @@
|
|||
<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"
|
||||
v-if="data.attributes.editorialVideo && (data.attributes.editorialVideo.motionArtistWide16x9 || data.attributes.editorialVideo.motionArtistFullscreen16x9)"
|
||||
v-if="hasAnimated()"
|
||||
:video="data.attributes.editorialVideo.motionArtistWide16x9.video ?? (data.attributes.editorialVideo.motionArtistFullscreen16x9.video ?? '')">
|
||||
</animatedartwork-view>
|
||||
<div class="header-content" style="pointer-events: all;">
|
||||
<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,9 +42,12 @@
|
|||
</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()">
|
||||
<mediaitem-artwork shadow="none" :url="hasHero()" size="2048" />
|
||||
</div>
|
||||
</div>
|
||||
<div class="floating-header"
|
||||
:style="{opacity: (headerVisible ? 0 : 1),'pointer-events': (headerVisible ? 'none' : '')}">
|
||||
|
@ -69,7 +72,7 @@
|
|||
<div class="latestRelease" v-if="data.views['latest-release'].data.length != 0">
|
||||
<h3>{{app.getLz('term.latestReleases')}}</h3>
|
||||
<div style="width: auto;margin: 0 auto;">
|
||||
<mediaitem-square kind="card" v-for="song in data.views['latest-release'].data"
|
||||
<mediaitem-square kind="card" :no-scale="true" v-for="song in data.views['latest-release'].data"
|
||||
:item="song">
|
||||
</mediaitem-square>
|
||||
</div>
|
||||
|
@ -164,6 +167,22 @@
|
|||
}
|
||||
},
|
||||
methods: {
|
||||
hasAnimated() {
|
||||
if(this.data.attributes?.editorialVideo && (this.data.attributes?.editorialVideo?.motionArtistWide16x9 || this.data.attributes?.editorialVideo?.motionArtistFullscreen16x9)) {
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
},
|
||||
hasHero() {
|
||||
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
|
||||
}
|
||||
return false;
|
||||
},
|
||||
isHeaderVisible(visible) {
|
||||
this.headerVisible = visible
|
||||
},
|
||||
|
|
|
@ -121,7 +121,7 @@
|
|||
</div>
|
||||
</div>
|
||||
<div class="artworkContainer" v-if="data.attributes.artwork != null">
|
||||
<artwork-material :url="data.attributes.artwork.url" size="260" images="1"></artwork-material>
|
||||
<artwork-material :url="data.attributes.artwork.url" size="500" images="1"></artwork-material>
|
||||
</div>
|
||||
<button class="md-btn md-btn-small editTracksBtn" v-if="(data.attributes.canEdit && data.type == 'library-playlists')" @click="editing = !editing">
|
||||
<span v-if="!editing">
|
||||
|
@ -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) => {
|
||||
|
|
|
@ -28,7 +28,7 @@
|
|||
<h4>{{ loaded.attributes.uniqueSongCount }} {{$root.getLz('term.uniqueSongs')}}</h4>
|
||||
</div>
|
||||
<div class="col-auto replay-playlist-container">
|
||||
<mediaitem-square kind="card" :force-video="true" :item="loaded.playlist"></mediaitem-square>
|
||||
<mediaitem-square kind="card" :no-scale="true" :force-video="true" :item="loaded.playlist"></mediaitem-square>
|
||||
</div>
|
||||
</div>
|
||||
<!-- Top Artists-->
|
||||
|
|
|
@ -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')">
|
||||
|
@ -1140,6 +1127,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 -->
|
||||
|
@ -1185,6 +1183,20 @@
|
|||
</div>
|
||||
</div>
|
||||
|
||||
<div class="md-option-line">
|
||||
<div class="md-option-segment">
|
||||
Use MusicKit V3
|
||||
<small>Requires relaunch</small>
|
||||
</div>
|
||||
<div class="md-option-segment md-option-segment_auto">
|
||||
<label>
|
||||
<input type="checkbox" v-model="app.cfg.advanced.experiments.includes('ampv3')"
|
||||
@click="app.cfg.advanced.experiments.includes('ampv3') ? removeExperiment('ampv3') : addExperiment('ampv3')"
|
||||
switch/>
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="md-option-line">
|
||||
<div class="md-option-segment">
|
||||
{{$root.getLz('settings.option.advanced.playlistTrackMapping')}}
|
||||
|
@ -1201,12 +1213,13 @@
|
|||
<div class="md-option-line">
|
||||
<div class="md-option-segment">
|
||||
{{$root.getLz('settings.option.experimental.compactUI')}}
|
||||
<small v-if="!!app.getThemeDirective('forceUI')">{{$root.getLz('term.themeManaged')}}</small>
|
||||
</div>
|
||||
<div class="md-option-segment md-option-segment_auto">
|
||||
<label>
|
||||
<input type="checkbox" v-model="app.cfg.advanced.experiments.includes('compactui')"
|
||||
@click="app.cfg.advanced.experiments.includes('compactui') ? removeExperiment('compactui') : addExperiment('compactui')"
|
||||
switch/>
|
||||
switch :disabled="!!app.getThemeDirective('forceUI')"/>
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
|
@ -1443,9 +1456,6 @@
|
|||
if (app.cfg.audio.normalization === true) {
|
||||
CiderAudio.normalizerOn()
|
||||
}
|
||||
if (app.cfg.audio.maikiwiAudio.spatial === true) {
|
||||
CiderAudio.hierarchical_loading();
|
||||
}
|
||||
}
|
||||
})
|
||||
} else {
|
||||
|
@ -1453,9 +1463,6 @@
|
|||
if (app.cfg.audio.normalization === true) {
|
||||
CiderAudio.normalizerOn()
|
||||
}
|
||||
if (app.cfg.audio.maikiwiAudio.spatial === true) {
|
||||
CiderAudio.hierarchical_loading();
|
||||
}
|
||||
}
|
||||
} else {
|
||||
CiderAudio.off();
|
||||
|
|
|
@ -9,6 +9,20 @@
|
|||
v-if="artistLoaded"
|
||||
:item="artist"
|
||||
></artist-chip>
|
||||
|
||||
<amp-chrome-player/>
|
||||
<!-- <amp-footer-player/> -->
|
||||
<hr>
|
||||
<amp-lcd-progress/>
|
||||
<hr>
|
||||
<amp-playback-controls-shuffle/>
|
||||
<apple-music-playback-controls theme="dark" />
|
||||
<apple-music-progress theme="dark"></apple-music-progress>
|
||||
<apple-music-volume theme="dark"></apple-music-volume>
|
||||
<amp-user-menu/>
|
||||
<amp-tv-overlay/>
|
||||
<amp-podcast-playback-controls/>
|
||||
<amp-lcd/>
|
||||
</div>
|
||||
</script>
|
||||
<script>
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue