Merge branch 'develop' into enhancement/radio

This commit is contained in:
Core 2022-05-07 06:50:01 +01:00
commit a9fc51e1de
No known key found for this signature in database
GPG key ID: FE9BF1B547F8F3C6
14 changed files with 577 additions and 248 deletions

View file

@ -1,21 +1,26 @@
version: 2.1 version: 2.1
orbs: # adds orbs to your configuration
jira: circleci/jira@1.0.5 # invokes the Jira orb, making its commands accessible executors:
branches: cider-ci:
only:
- main
- develop
jobs:
build:
working_directory: ~/Cider
docker: docker:
- image: circleci/node:16 - image: circleci/node:16
working_directory: ~/Cider
orbs: # Add orbs to your configuration
jira: circleci/jira@1.0.5 # invokes the Jira orb, making its commands accessible
# The jobs for this project
jobs:
prepare-build:
executor: cider-ci
steps: steps:
- checkout - checkout
- run: - run:
name: Set App Version name: Set App Version
command: echo "export APP_VERSION=$(grep '"version":.*' package.json | cut -d '"' -f 4 | head -1)" >> $BASH_ENV command: echo "export APP_VERSION=$(grep '"version":.*' package.json | cut -d '"' -f 4 | head -1)" >> $BASH_ENV
# - run:
# name: Rename Repository
# command: sed -i 's/github:ciderapp\/Cider/github:ciderapp\/cider-releases/' package.json
- run: - run:
name: Update Package Managers name: Update Package Managers
command: sudo npm update -g npm yarn command: sudo npm update -g npm yarn
@ -24,7 +29,7 @@ jobs:
keys: keys:
- yarn-packages-{{ checksum "cider.lock" }} - yarn-packages-{{ checksum "cider.lock" }}
- run: - run:
name: Install Dependencies name: Install Node Dependencies
command: yarn install --frozen-lockfile --cache-folder ~/.cache/yarn command: yarn install --frozen-lockfile --cache-folder ~/.cache/yarn
- save_cache: - save_cache:
name: Save Yarn Package Cache name: Save Yarn Package Cache
@ -32,37 +37,112 @@ jobs:
paths: paths:
- ~/.cache/yarn - ~/.cache/yarn
- run: - run:
name: Install system build dependencies name: TypeScript Compile
command: | command: yarn build
sudo apt-get update -y - persist_to_workspace:
curl -fsSL https://cli.github.com/packages/githubcli-archive-keyring.gpg | sudo dd of=/usr/share/keyrings/githubcli-archive-keyring.gpg # Must be an absolute path, or relative path from working_directory. This is a directory on the container which is
echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/githubcli-archive-keyring.gpg] https://cli.github.com/packages stable main" | sudo tee /etc/apt/sources.list.d/github-cli.list > /dev/null # taken to be the root directory of the workspace.
sudo apt-get install -y dpkg fakeroot wine64 root: .
sudo dpkg --add-architecture i386 # Must be relative path from root
sudo apt-get update -y paths:
sudo apt-get install -y wine32 - node_modules
sudo apt install -y gh - build
- resources
- yarn.lock
- package.json
- winget.json # winget.json is a file that is generated by the winget package manager
- LICENSE
- license.txt
build-linux:
executor: cider-ci
steps:
- attach_workspace:
at: ~/Cider
- run: - run:
name: Fix Versioning and Add Channel name: Fix Versioning and Add Channel
command: yarn circle:script command: yarn circle:script
- run:
name: TypeScript Compile
command: yarn build
- run: - run:
name: Generate Builds (Linux) name: Generate Builds (Linux)
command: yarn electron-builder -l -p never command: yarn electron-builder -l -p never
post-steps: post-steps:
- jira/notify - jira/notify
- persist_to_workspace:
root: .
paths:
- dist/*.deb
- dist/*.AppImage
- dist/*.snap
- dist/latest-linux.yml
build-windows:
executor: cider-ci
steps:
- attach_workspace:
at: ~/Cider
- run:
name: Install Windows System Build Dependencies
command: |
sudo apt-get update -y
sudo apt-get install -y dpkg fakeroot wine64
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: - run:
name: Generate Builds (Windows) name: Generate Builds (Windows)
command: yarn electron-builder -w --x64 -p never command: yarn electron-builder -w --x64 -p never
post-steps: post-steps:
- jira/notify - jira/notify
- persist_to_workspace:
root: .
paths:
- dist/*.exe
- dist/Cider-Setup-*.exe.blockmap
- dist/latest.yml
build-winget:
executor: cider-ci
steps:
- attach_workspace:
at: ~/Cider
- run:
name: Install Windows System Build Dependencies
command: |
sudo apt-get update -y
sudo apt-get install -y dpkg fakeroot wine64
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: - run:
name: Generate Builds (Winget) name: Generate Builds (Winget)
command: yarn electron-builder --win -c winget.json -p never command: yarn electron-builder --win -c winget.json -p never
post-steps: post-steps:
- jira/notify - jira/notify
- persist_to_workspace:
root: .
paths:
- dist/*.exe
- dist/Cider-Setup-winget-*.exe.blockmap
release:
executor: cider-ci
steps:
- attach_workspace:
at: ~/Cider/
- run:
name: Installing GitHub Command Line Interface
command: |
sudo apt-get update -y
curl -fsSL https://cli.github.com/packages/githubcli-archive-keyring.gpg | sudo dd of=/usr/share/keyrings/githubcli-archive-keyring.gpg
echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/githubcli-archive-keyring.gpg] https://cli.github.com/packages stable main" | sudo tee /etc/apt/sources.list.d/github-cli.list > /dev/null
sudo apt-get update -y
sudo apt install -y gh
- run: - run:
name: Move Build Files name: Move Build Files
command: | command: |
@ -79,3 +159,38 @@ jobs:
name: Publish Release name: Publish Release
command: | command: |
gh release create "v${APP_VERSION}.${CIRCLE_BUILD_NUM}" --title "Cider Version ${APP_VERSION} - Build ${CIRCLE_BUILD_NUM} (${CIRCLE_BRANCH})" --generate-notes -R ciderapp/cider-releases ~/Cider/dist/artifacts/*.deb ~/Cider/dist/artifacts/*.AppImage ~/Cider/dist/artifacts/*.snap ~/Cider/dist/artifacts/*.exe ~/Cider/dist/artifacts/*.yml ~/Cider/dist/artifacts/*.blockmap gh release create "v${APP_VERSION}.${CIRCLE_BUILD_NUM}" --title "Cider Version ${APP_VERSION} - Build ${CIRCLE_BUILD_NUM} (${CIRCLE_BRANCH})" --generate-notes -R ciderapp/cider-releases ~/Cider/dist/artifacts/*.deb ~/Cider/dist/artifacts/*.AppImage ~/Cider/dist/artifacts/*.snap ~/Cider/dist/artifacts/*.exe ~/Cider/dist/artifacts/*.yml ~/Cider/dist/artifacts/*.blockmap
# Orchestrate our job run sequence
workflows:
build_and_release:
jobs:
- prepare-build:
filters:
branches:
only: main
- build-windows:
requires:
- prepare-build
filters:
branches:
only: main
- build-linux:
requires:
- prepare-build
filters:
branches:
only: main
- build-winget:
requires:
- prepare-build
filters:
branches:
only: main
- release:
requires:
- build-windows
- build-linux
- build-winget
filters:
branches:
only: main

View file

@ -1,53 +1,46 @@
if (!process.env['CIRCLECI']) { if (!process.env['CIRCLECI']) {
console.log(`[CIRCLECI SCRIPT] CircleCI not found... Aborting script`) console.log(`[CIRCLECI SCRIPT] CircleCI not found... Aborting script`)
return return
} }
let fs = require('fs') const {readFileSync, writeFile} = require('fs')
const pkg = JSON.parse(readFileSync('package.json').toString());
let channel = process.env['CIRCLE_BRANCH'];
var data = fs.readFileSync('package.json');
var package = JSON.parse(data);
let channel;
if (process.env['CIRCLE_BRANCH'] === 'lts') { if (process.env['CIRCLE_BRANCH'] === 'lts') {
channel = 'latest' channel = 'latest'
} else if (process.env['CIRCLE_BRANCH'] === 'main') { } else if (process.env['CIRCLE_BRANCH'] === 'main') {
channel = 'beta' channel = 'beta'
} else if (process.env['CIRCLE_BRANCH'] === 'develop') { } else if (process.env['CIRCLE_BRANCH'] === 'develop') {
channel = 'alpha' channel = 'alpha'
} else {
channel = process.env['CIRCLE_BRANCH'] // It won't have auto update support
} }
channel = channel.split('/').join('-')
// https://circleci.com/docs/2.0/env-vars/#built-in-environment-variables // https://circleci.com/docs/2.0/env-vars/#built-in-environment-variables
var pvers = package.version.split('.') const version = pkg.version.split('.');
package.version = `${pvers[0]}.${pvers[1]}.${pvers[2]}-${channel}.${process.env['CIRCLE_BUILD_NUM']}` pkg.version = `${version[0]}.${version[1]}.${version[2]}-${channel}`
// package.build.channel = channel // package.build.channel = channel
package.publish = { pkg.publish = {
"provider": "github", "provider": "github",
"repo": "cider-releases", "repo": "cider-releases",
"owner": "ciderapp", "owner": "ciderapp",
"vPrefixedTagName": true, "vPrefixedTagName": true,
"tag": `v${package.version}`, "tag": `v${pkg.version}`,
"channel": channel, "channel": channel,
"releaseType": "release" "releaseType": "release"
} }
let {exec} = require('child_process') const {exec} = require('child_process')
exec('echo $APP_VERSION', {env: {'APP_VERSION': package.version}}, function (error, stdout, stderr)
{ exec('echo $APP_VERSION', {env: {'APP_VERSION': pkg.version}}, function (error, stdout, stderr) {
console.log(stdout, stderr, error); console.log(stdout, stderr, error);
}); });
fs.writeFile('package.json', JSON.stringify(package), err => {
writeFile('package.json', JSON.stringify(pkg), err => {
// error checking // error checking
if (err) throw err; if (err) throw err;
console.log(`VERSION CHANGED TO ${package.version}`); console.log(`VERSION CHANGED TO ${pkg.version}`);
}); });

View file

@ -297,7 +297,44 @@ Update 28/04/2022 21:45 UTC
* `settings.option.general.resumetabs.description`: Added for `en_US` * `settings.option.general.resumetabs.description`: Added for `en_US`
* `settings.option.general.resumetabs.dynamic`: Added for `en_US` * `settings.option.general.resumetabs.dynamic`: Added for `en_US`
* `settings.option.general.resumetabs.dynamic.description`: Added for `en_US` * `settings.option.general.resumetabs.dynamic.description`: Added for `en_US`
* `term.dynamic`: Added for `en_US`
Update 29/04/2022 00:00 UTC
* `menubar.options.about`: Added for `en_US`
* `menubar.options.settings`: Added for `en_US`
* `menubar.options.quit`: Added for `en_US`
* `menubar.options.view`: Added for `en_US`
* `menubar.options.reload`: Added for `en_US`
* `menubar.options.forcereload`: Added for `en_US`
* `menubar.options.toggledevtools`: Added for `en_US`
* `menubar.options.window`: Added for `en_US`
* `menubar.options.minimize`: Added for `en_US`
* `menubar.options.toggleprivate`: Added for `en_US`
* `menubar.options.webremote`: Added for `en_US`
* `menubar.options.audio`: Added for `en_US`
* `menubar.options.plugins`: Added for `en_US`
* `menubar.options.control`: Added for `en_US`
* `menubar.options.next`: "Added for `en_US`
* `menubar.options.previous`: Added for `en_US`
* `menubar.options.volumeup`: Added for `en_US`
* `menubar.options.volumedown`: Added for `en_US`
* `menubar.options.browse`: Added for `en_US`
* `menubar.options.artists`: Added for `en_US`
* `menubar.options.search`: Added for `en_US`
* `menubar.options.albums`: Added for `en_US`
* `menubar.options.cast`: Added for `en_US`
* `menubar.options.account`: Added for `en_US`
* `menubar.options.accountsettings`: Added for `en_US`
* `menubar.options.signout`: Added for `en_US`
* `menubar.options.support`: Added for `en_US`
* `menubar.options.discord`: Added for `en_US`
* `menubar.options.github`: Added for `en_US`
* `menubar.options.report`: Added for `en_US`
* `menubar.options.bug`: Added for `en_US`
* `menubar.options.feature`: Added for `en_US`
* `menubar.options.trans`: Added for `en_US`
* `menubar.options.license`: Added for `en_US`
* `menubar.options.conf`: Added for `en_US`
Update 07/05/2022 04:00 UTC
* `term.personalStations`: Added for `en_US`
`term.amLive`: Added for `en_US`

View file

@ -10,6 +10,7 @@
"notification.updatingLibrarySongs": "Ενημέρωση βιβλιοθήκης τραγουδιών...", "notification.updatingLibrarySongs": "Ενημέρωση βιβλιοθήκης τραγουδιών...",
"notification.updatingLibraryAlbums": "Ενημέρωση βιβλιοθήκης άλμπουμ...", "notification.updatingLibraryAlbums": "Ενημέρωση βιβλιοθήκης άλμπουμ...",
"notification.updatingLibraryArtists": "Ενημέρωση βιβλιοθήκης καλλιτεχνών...", "notification.updatingLibraryArtists": "Ενημέρωση βιβλιοθήκης καλλιτεχνών...",
"term.variables": "Μεταβλητές",
"term.appleInc": "Apple Inc.", "term.appleInc": "Apple Inc.",
"term.appleMusic": "Apple Music", "term.appleMusic": "Apple Music",
"term.applePodcasts": "Apple Podcasts", "term.applePodcasts": "Apple Podcasts",
@ -20,9 +21,13 @@
"term.accountSettings": "Ρυθμίσεις λογαριασμού", "term.accountSettings": "Ρυθμίσεις λογαριασμού",
"term.logout": "Αποσύνδεση", "term.logout": "Αποσύνδεση",
"term.login": "Σύνδεση", "term.login": "Σύνδεση",
"term.cast": "Μετάδοση",
"term.about": "Σχετικά με", "term.about": "Σχετικά με",
"term.privateSession": "Ιδιωτική περίοδος λειτουργίας", "term.privateSession": "Ιδιωτική περίοδος λειτουργίας",
"term.disablePrivateSession": "Απενεργ. ιδιωτικής περ. λειτουργίας",
"term.queue": "Ουρά", "term.queue": "Ουρά",
"term.lyrics": "Στίχοι",
"term.miniplayer": "MiniPlayer",
"term.history": "Ιστορικό", "term.history": "Ιστορικό",
"term.search": "Εύρεση", "term.search": "Εύρεση",
"term.library": "Βιβλιοθήκη", "term.library": "Βιβλιοθήκη",
@ -68,6 +73,7 @@
"term.viewAs": "Προβολή ως", "term.viewAs": "Προβολή ως",
"term.viewAs.coverArt": "Εξώφυλλο", "term.viewAs.coverArt": "Εξώφυλλο",
"term.viewAs.list": "Λίστα", "term.viewAs.list": "Λίστα",
"term.dynamic": "Δυναμικό",
"term.size": "Μέγεθος", "term.size": "Μέγεθος",
"term.size.normal": "Κανονικό", "term.size.normal": "Κανονικό",
"term.size.compact": "Συμπαγή", "term.size.compact": "Συμπαγή",
@ -89,12 +95,26 @@
"term.time.added": "Προστέθηκε", "term.time.added": "Προστέθηκε",
"term.time.released": "Κυκλοφόρησε", "term.time.released": "Κυκλοφόρησε",
"term.time.updated": "Ενημερώθηκε", "term.time.updated": "Ενημερώθηκε",
"term.time.days": "μέρες",
"term.time.day": {
"one": "μέρα",
"other": "μέρες"
},
"term.time.hours": "ώρες", "term.time.hours": "ώρες",
"term.time.hour": "ώρα", "term.time.hour": {
"one": "ώρα",
"other": "ώρες"
},
"term.time.minutes": "λεπτά", "term.time.minutes": "λεπτά",
"term.time.minute": "λεπτό", "term.time.minute": {
"one": "λεπτό",
"other": "λεπτά"
},
"term.time.seconds": "δευτερόλεπτα", "term.time.seconds": "δευτερόλεπτα",
"term.time.second": "δευτερόλεπτο", "term.time.second": {
"one": "δευτερόλεπτο",
"other": "δευτερόλεπτα"
},
"term.fullscreenView": "Πλήρης οθόνη", "term.fullscreenView": "Πλήρης οθόνη",
"term.defaultView": "Κανονική οθόνη", "term.defaultView": "Κανονική οθόνη",
"term.audioSettings": "Ρυθμίσεις ήχου", "term.audioSettings": "Ρυθμίσεις ήχου",
@ -114,7 +134,8 @@
"term.contributors": "Συνεισφέροντες", "term.contributors": "Συνεισφέροντες",
"term.equalizer": "Ισοσταθμιστής", "term.equalizer": "Ισοσταθμιστής",
"term.reset": "Επαναφορά", "term.reset": "Επαναφορά",
"term.tracks": { "term.tracks": "τραγούδια",
"term.track": {
"one": "τραγούδι", "one": "τραγούδι",
"other": "τραγούδια" "other": "τραγούδια"
}, },
@ -145,6 +166,7 @@
"term.noVideos": "Δεν βρέθηκαν βίντεο", "term.noVideos": "Δεν βρέθηκαν βίντεο",
"term.plugin": "Πρόσθετα", "term.plugin": "Πρόσθετα",
"term.pluginMenu": "Μενού πρόσθετων", "term.pluginMenu": "Μενού πρόσθετων",
"term.pluginMenu.none": "Δεν υπάρχουν πρόσθετα",
"term.replay": "Replay", "term.replay": "Replay",
"term.uniqueAlbums": "Μοναδικά άλμπουμ", "term.uniqueAlbums": "Μοναδικά άλμπουμ",
"term.uniqueArtists": "Μοναδικοί καλλιτέχνες", "term.uniqueArtists": "Μοναδικοί καλλιτέχνες",
@ -156,10 +178,12 @@
"term.plays": "Αναπαραγωγές", "term.plays": "Αναπαραγωγές",
"term.topGenres": "Κορυφαία είδη", "term.topGenres": "Κορυφαία είδη",
"term.confirmLogout": "Θέλετε σίγουρα να αποσυνδεθείτε;", "term.confirmLogout": "Θέλετε σίγουρα να αποσυνδεθείτε;",
"term.creditDesignedBy": "Σχεδιάστηκε από ${authorUsername}",
"term.discNumber": "Δίσκος ${discNumber}",
"home.title": "Αρχική", "home.title": "Αρχική",
"home.recentlyPlayed": "Έπαιξαν πρόσφατα", "home.recentlyPlayed": "Έπαιξαν πρόσφατα",
"home.recentlyAdded": "Πρόσφατες προσθήκες", "home.recentlyAdded": "Πρόσφατες προσθήκες",
"home.artistsFeed": "Ροή των καλλιτεχνών σου", "home.artistsFeed": "Ροή των καλλιτεχνών σας",
"home.artistsFeed.noArtist": "Ακολούθησε μερικούς καλλιτέχνες πρώτα και οι τελευταίες κυκλοφορίες τους θα εμφανίζονται εδώ", "home.artistsFeed.noArtist": "Ακολούθησε μερικούς καλλιτέχνες πρώτα και οι τελευταίες κυκλοφορίες τους θα εμφανίζονται εδώ",
"home.madeForYou": "Δημιουργήθηκε για εσάς", "home.madeForYou": "Δημιουργήθηκε για εσάς",
"home.friendsListeningTo": "Οι φίλοι σου ακούν", "home.friendsListeningTo": "Οι φίλοι σου ακούν",
@ -176,6 +200,9 @@
"podcast.episodes": "Επεισόδια", "podcast.episodes": "Επεισόδια",
"podcast.playEpisode": "Αναπαραγωγή επεισοδίου", "podcast.playEpisode": "Αναπαραγωγή επεισοδίου",
"podcast.website": "Ιστότοπος Podcast", "podcast.website": "Ιστότοπος Podcast",
"action.edit": "Επεξεργασία",
"action.done": "Τέλος",
"action.editTracklist": "Επεξεργασία λίστας τραγουδιών",
"action.addToLibrary": "Προσθήκη στη βιβλιοθήκη", "action.addToLibrary": "Προσθήκη στη βιβλιοθήκη",
"action.addToLibrary.success": "Προστέθηκε στη βιβλιοθήκη", "action.addToLibrary.success": "Προστέθηκε στη βιβλιοθήκη",
"action.addToLibrary.error": "Σφάλμα Προσθήκης στη βιβλιοθήκης", "action.addToLibrary.error": "Σφάλμα Προσθήκης στη βιβλιοθήκης",
@ -202,6 +229,8 @@
"action.startRadio": "Έναρξη ραδιοφώνου", "action.startRadio": "Έναρξη ραδιοφώνου",
"action.goToArtist": "Μετάβαση σε καλλιτέχνη", "action.goToArtist": "Μετάβαση σε καλλιτέχνη",
"action.goToAlbum": "Μετάβαση σε άλμπουμ", "action.goToAlbum": "Μετάβαση σε άλμπουμ",
"action.showInPlaylist": "Εμφάνιση στη λίστα αναπαραγωγής",
"action.showInAppleMusic": "Εμφάνιση στο Apple Music",
"action.moveToTop": "Μετακίνηση στη κορυφή", "action.moveToTop": "Μετακίνηση στη κορυφή",
"action.share": "Κοινή χρήση", "action.share": "Κοινή χρήση",
"action.rename": "Μετονομασία", "action.rename": "Μετονομασία",
@ -209,7 +238,7 @@
"action.unlove": "Αναίρεση \"Μου αρέσει\"", "action.unlove": "Αναίρεση \"Μου αρέσει\"",
"action.dislike": "Δεν μου αρέσει", "action.dislike": "Δεν μου αρέσει",
"action.undoDislike": "Αναίρεση \"Δεν μου αρέσει\"", "action.undoDislike": "Αναίρεση \"Δεν μου αρέσει\"",
"action.showWebRemoteQR": "Εμφάνιση Web Remote QR", "action.showWebRemoteQR": "Web Remote",
"action.playTracksNext": "Αναπαραγωγή ${app.selectedMediaItems.length} τραγουδιών ως επόμενων", "action.playTracksNext": "Αναπαραγωγή ${app.selectedMediaItems.length} τραγουδιών ως επόμενων",
"action.playTracksLater": "Αναπαραγωγή ${app.selectedMediaItems.length} τραγουδιών αργότερα", "action.playTracksLater": "Αναπαραγωγή ${app.selectedMediaItems.length} τραγουδιών αργότερα",
"action.removeTracks": "Αφαίρεση ${self.selectedItems.length} τραγουδιών από την ουρά", "action.removeTracks": "Αφαίρεση ${self.selectedItems.length} τραγουδιών από την ουρά",
@ -218,13 +247,23 @@
"action.showAlbum": "Εμφάνιση ολόκληρου άλμπουμ", "action.showAlbum": "Εμφάνιση ολόκληρου άλμπουμ",
"action.tray.minimize": "Ελαχιστοποίηση στη γωνία γραμμής εργασιών", "action.tray.minimize": "Ελαχιστοποίηση στη γωνία γραμμής εργασιών",
"action.tray.quit": "Έξοδος", "action.tray.quit": "Έξοδος",
"action.tray.show": "Εμφάνιση Cider",
"action.update": "Ενημέρωση", "action.update": "Ενημέρωση",
"action.install": "Εγκατάσταση", "action.install": "Εγκατάσταση",
"action.copy": "Αντιγραφή", "action.copy": "Αντιγραφή",
"action.newpreset": "Νέα προρύθμιση...", "action.newpreset": "Νέα προρύθμιση...",
"action.deletepreset": "Διαγραφή προρύθμισης", "action.deletepreset": "Διαγραφή προρύθμισης",
"action.open": "Άνοιγμα", "action.open": "Άνοιγμα",
"action.relaunch.confirm": "Θέλετε να επανεκκινήσετε τον Cider;",
"action.cast.chromecast": "Chromecast",
"action.cast.todevices": "Μετάδοση σε συσκευές",
"action.cast.stop": "Διακοπή μετάδοσης σε όλες τις συσκευές",
"action.cast.airplay": "AirPlay",
"action.cast.airplay.underdevelopment": "Το AirPlay είναι ακόμη υπό ανάπτυξη",
"action.cast.scan": "Σάρωση",
"action.cast.scanning": "Γίνεται σάρωση...",
"action.createNew": "Δημιουργία νέας...",
"action.openArtworkInBrowser": "Άνοιγμα εξώφυλλου στον περιηγητή",
"settings.header.general": "Γενικά", "settings.header.general": "Γενικά",
"settings.header.general.description": "Προσαρμογή γενικών ρυθμίσεων για το Cider.", "settings.header.general.description": "Προσαρμογή γενικών ρυθμίσεων για το Cider.",
"settings.option.general.language": "Γλώσσα", "settings.option.general.language": "Γλώσσα",
@ -234,6 +273,10 @@
"settings.option.general.resumebehavior.locally.description": "Το Cider θα συνεχίσει την τελευταία συνεδρία σας αυτής της συσκευής.", "settings.option.general.resumebehavior.locally.description": "Το Cider θα συνεχίσει την τελευταία συνεδρία σας αυτής της συσκευής.",
"settings.option.general.resumebehavior.history": "Ιστορικό", "settings.option.general.resumebehavior.history": "Ιστορικό",
"settings.option.general.resumebehavior.history.description": "Το Cider θα βάλει στην ουρά το τελευταίο τραγούδι από το συνολικό ιστορικό Apple Music, όλων των συσκευών σας.", "settings.option.general.resumebehavior.history.description": "Το Cider θα βάλει στην ουρά το τελευταίο τραγούδι από το συνολικό ιστορικό Apple Music, όλων των συσκευών σας.",
"settings.option.general.resumetabs": "Άνοιγμα καρτέλας στην εκκίνηση",
"settings.option.general.resumetabs.description": "Μπορείτε να επιλέξετε ποια καρτέλα θα εμφανίζεται όταν ανοίγετε τον Cider.",
"settings.option.general.resumetabs.dynamic": "Δυναμικό",
"settings.option.general.resumetabs.dynamic.description": "Ο Cider θα ανοίγει την καρτέλα που χρησιμοποιήσατε τελευταία.",
"settings.option.general.language.main": "Γλώσσες", "settings.option.general.language.main": "Γλώσσες",
"settings.option.general.language.fun": "Γλώσσες για πλάκα", "settings.option.general.language.fun": "Γλώσσες για πλάκα",
"settings.option.general.language.unsorted": "Αταξινόμητες", "settings.option.general.language.unsorted": "Αταξινόμητες",
@ -242,10 +285,34 @@
"settings.option.general.updateCider.branch.description": "Επιλέξτε τον κλάδο στον οποίο θα γίνεται η ενημέρωση του Cider", "settings.option.general.updateCider.branch.description": "Επιλέξτε τον κλάδο στον οποίο θα γίνεται η ενημέρωση του Cider",
"settings.option.general.updateCider.branch.main": "Σταθερό", "settings.option.general.updateCider.branch.main": "Σταθερό",
"settings.option.general.updateCider.branch.develop": "Αναπτυξιακό", "settings.option.general.updateCider.branch.develop": "Αναπτυξιακό",
"settings.option.general.customizeSidebar": "Προσαρμογή στοιχείων πλευρικής μπάρας",
"settings.option.general.customizeSidebar.customize": "Προσαρμογή",
"settings.option.general.keybindings": "Συνδυασμοί πλήκτρων",
"settings.notyf.general.keybindings.update.success": "Ο συνδιασμός ενημερώθηκε με επιτυχία",
"settings.prompt.general.keybindings.update.success": "Ο συνδιασμός ενημερώθηκε με επιτυχία. Πατήστε ΟΚ για επανεκκίνηση του Cider",
"settings.option.general.keybindings.open": "Άνοιγμα",
"settings.description.search": "Αναζήτηση",
"settings.description.albums": "Άλμπουμ βιβλιοθήκης",
"settings.description.artists": "Καλλιτέχνες βιβλιοθήκης",
"settings.description.browse": "Περιήγηση",
"settings.description.private": "Εναλλαγή ιδιωτικής περιόδου λειτουργίας",
"settings.description.remote": "Web Remote",
"settings.description.audio": "Ρυθμίσεις ήχου",
"settings.description.plugins": "Μενού πρόσθετων",
"settings.description.cast": "Μετάδοση σε συσκευές",
"settings.description.settings": "Ρυθμίσεις",
"settings.description.developer": "Εργαλεία προγραμματιστή",
"settings.notyf.updateCider.update-not-available": "Δεν υπάρχει διαθέσιμη ενημέρωση",
"settings.notyf.updateCider.update-downloaded": "Έγινε λήψη της ενημέρωσης, επανεκκίνησε για εφαρμογή",
"settings.notyf.updateCider.update-error": "Σφάλμα ενημέρωσης του Cider",
"settings.notyf.updateCider.update-timeout": "Λήξη χρόνου ενημέρωσης",
"settings.header.audio": "Ήχος", "settings.header.audio": "Ήχος",
"settings.header.audio.description": "Προσαρμογή ρυθμίσεων ήχου για το Cider.", "settings.header.audio.description": "Προσαρμογή ρυθμίσεων ήχου για το Cider.",
"settings.option.audio.volumeStep": "Βήματα έντασης", "settings.option.audio.volumeStep": "Βήματα έντασης",
"settings.option.audio.maxVolume": "Μέγιστη ένταση", "settings.option.audio.maxVolume": "Μέγιστη ένταση",
"settings.option.audio.changePlaybackRate": "Αλλαγή ταχύτητας αναπαραγωγής",
"settings.option.audio.playbackRate": "Ταχύτητα αναπαραγωγής",
"settings.option.audio.playbackRate.change": "Αλλαγή",
"settings.option.audio.quality": "Ποιότητα ήχου", "settings.option.audio.quality": "Ποιότητα ήχου",
"settings.header.audio.quality.hireslossless": "Lossless υψηλής ανάλυσης", "settings.header.audio.quality.hireslossless": "Lossless υψηλής ανάλυσης",
"settings.header.audio.quality.hireslossless.description": "έως και 24-bit/192 kHz", "settings.header.audio.quality.hireslossless.description": "έως και 24-bit/192 kHz",
@ -258,18 +325,34 @@
"settings.option.audio.seamlessTransition": "Αδιάκοπη μετάβαση ήχου", "settings.option.audio.seamlessTransition": "Αδιάκοπη μετάβαση ήχου",
"settings.option.audio.enableAdvancedFunctionality": "Ενεργοποίηση προηγμένης λειτουργικότητας", "settings.option.audio.enableAdvancedFunctionality": "Ενεργοποίηση προηγμένης λειτουργικότητας",
"settings.option.audio.enableAdvancedFunctionality.description": "Ενεργοποιώντας τη λειτουργικότητα AudioContext θα επιτρέψει σε επεκταμένες δυνατότητες ήχου όπως Κανονικοποίηση Έντασης Ήχου, Ισοσταθμιστές και Οπτικοποιητές, ωστόσο σε κάποια συστήματα μπορεί να προκαλέσει τραύλισμα ήχου.", "settings.option.audio.enableAdvancedFunctionality.description": "Ενεργοποιώντας τη λειτουργικότητα AudioContext θα επιτρέψει σε επεκταμένες δυνατότητες ήχου όπως Κανονικοποίηση Έντασης Ήχου, Ισοσταθμιστές και Οπτικοποιητές, ωστόσο σε κάποια συστήματα μπορεί να προκαλέσει τραύλισμα ήχου.",
"settings.warn.audio.enableAdvancedFunctionality.lowcores": "Η συσκευή σου ίσως να μη μπορέσει να χειρηστεί αυτές τις δυνατότητες. Σίγουρα θέλετε να συνεχίσετε;",
"settings.option.audio.audioLab": "Cider Audio Lab", "settings.option.audio.audioLab": "Cider Audio Lab",
"settings.option.audio.audioLab.description": "Περιέχει μια ποικιλία από τροποποιήσεις ήχου που έγιναν από την ομάδα προγραμματιστών του Cider", "settings.option.audio.audioLab.description": "Μια ποικιλία τροποποιήσεων ήχου από την ομάδα προγραμματιστών του Cider.",
"settings.option.audio.audioLab.subheader": "Σχεδιάστηκε από τους προγραμματιστές του Cider",
"settings.warn.audioLab.withoutAF": "Το AudioContext (προηγμένη λειτουργικότητα) απαιτείται για την ενεργοποίηση του Cider Audio Laboratory.", "settings.warn.audioLab.withoutAF": "Το AudioContext (προηγμένη λειτουργικότητα) απαιτείται για την ενεργοποίηση του Cider Audio Laboratory.",
"settings.option.audio.enableAdvancedFunctionality.analogWarmthIntensity": "Ένταση Analog Warmth", "settings.option.audio.enableAdvancedFunctionality.analogWarmth": "Αναλογική ζεστασιά",
"settings.option.audio.enableAdvancedFunctionality.analogWarmthIntensity.description": "Αλλάζει την ένταση της επεξεργασίας του Analog Warmth Module.", "settings.option.audio.enableAdvancedFunctionality.analogWarmth.description": "Προσομοιώνει την αναλογική ζεστασιά του Korg Nutube 6P1",
"settings.option.audio.enableAdvancedFunctionality.analogWarmthIntensity": "Ένταση αναλογικής ζεστασιάς",
"settings.option.audio.enableAdvancedFunctionality.analogWarmthIntensity.description": "Αλλάζει την ένταση της επεξεργασίας της αναλογικής ζεστασιάς.",
"settings.option.audio.enableAdvancedFunctionality.analogWarmthIntensity.smooth": "Λείο",
"settings.option.audio.enableAdvancedFunctionality.analogWarmthIntensity.warm": "Θερμό",
"settings.option.audio.enableAdvancedFunctionality.atmosphereRealizer": "Ατμόσφαιρα ήχου",
"settings.option.audio.enableAdvancedFunctionality.atmosphereRealizer.description": "Εφαρμόζει μια διαφορετική ατμόσφαιρα στον ήχο.",
"settings.option.audio.enableAdvancedFunctionality.atmosphereRealizerMode": "Λειτουργία ατμόσφαιρας ήχου",
"settings.option.audio.enableAdvancedFunctionality.atmosphereRealizerMode.description": "Αλλάζει τη λειτουργία ατμόσφαιρας ήχου.",
"settings.option.audio.enableAdvancedFunctionality.atmosphereRealizerMode.natural1": "Φυσική (Κανονικό)",
"settings.option.audio.enableAdvancedFunctionality.atmosphereRealizerMode.natural2": "Φυσική (Υψηλό)",
"settings.option.audio.enableAdvancedFunctionality.atmosphereRealizerMode.natural3": "Φυσική (Υψηλότερο)",
"settings.option.audio.enableAdvancedFunctionality.ciderPPE": "Επεξεργαστής ήχου Cider (CAP)",
"settings.option.audio.enableAdvancedFunctionality.ciderPPE.description": "Βελτιώνει την αντιληπτή ποιότητα ήχου χρησιμοποιώντας αλγορίθμους.",
"settings.warn.audio.enableAdvancedFunctionality.ciderPPE.compatibility": "Το CAP δεν είναι συμβατό με τη Χωρικοποίηση Ήχου. Παρακαλούμε απενεργοποιήστε τη Χωρικοποίηση Ήχου για να συνεχίσετε.", "settings.warn.audio.enableAdvancedFunctionality.ciderPPE.compatibility": "Το CAP δεν είναι συμβατό με τη Χωρικοποίηση Ήχου. Παρακαλούμε απενεργοποιήστε τη Χωρικοποίηση Ήχου για να συνεχίσετε.",
"settings.option.audio.enableAdvancedFunctionality.ciderPPEStrength": "Ένταση CAP", "settings.option.audio.enableAdvancedFunctionality.ciderPPEStrength": "Ένταση CAP",
"settings.option.audio.enableAdvancedFunctionality.ciderPPEStrength.description": "Αλλάζει την ένταση της επεξεργασίας του ήχου. (Η επιθετική επεξεργασία μπορεί να αποφέρει ανεπιθύμητα αποτελέσματα)", "settings.option.audio.enableAdvancedFunctionality.ciderPPEStrength.description": "Αλλάζει την ένταση της επεξεργασίας του ήχου. (Η επιθετική επεξεργασία μπορεί να αποφέρει ανεπιθύμητα αποτελέσματα)",
"settings.option.audio.enableAdvancedFunctionality.ciderPPEStrength.standard": "Κανονική", "settings.option.audio.enableAdvancedFunctionality.ciderPPEStrength.standard": "Κανονική",
"settings.option.audio.enableAdvancedFunctionality.ciderPPEStrength.aggressive": "Επιθετική", "settings.option.audio.enableAdvancedFunctionality.ciderPPEStrength.aggressive": "Επιθετική",
"settings.option.audio.enableAdvancedFunctionality.audioNormalization": "Κανονικοποίηση Έντασης Ήχου", "settings.option.audio.enableAdvancedFunctionality.audioNormalization": "Κανονικοποίηση έντασης ήχου",
"settings.option.audio.enableAdvancedFunctionality.audioNormalization.description": "Κανονικοποιεί την ένταση για μεμονωμένα κομμάτια για μια πιο ομοιόμορφη εμπειρία ακρόασης.", "settings.option.audio.enableAdvancedFunctionality.audioNormalization.description": "Κανονικοποιεί την ένταση για μεμονωμένα κομμάτια για μια πιο ομοιόμορφη εμπειρία ακρόασης. (Δεν λειτουργεί σε κομμάτια που ανέβηκαν από χρήστες)",
"settings.option.audio.enableAdvancedFunctionality.audioNormalization.disabled": "Διαχειρίζεται από το Audio Lab",
"settings.option.audio.enableAdvancedFunctionality.audioSpatialization": "Χωρικοποίηση Ήχου", "settings.option.audio.enableAdvancedFunctionality.audioSpatialization": "Χωρικοποίηση Ήχου",
"settings.option.audio.enableAdvancedFunctionality.audioSpatialization.description": "Πιο τρισδιάστατος και χωρικοποιημένος ήχος (σημείωση: Αυτό δεν είναι Dolby Atmos)", "settings.option.audio.enableAdvancedFunctionality.audioSpatialization.description": "Πιο τρισδιάστατος και χωρικοποιημένος ήχος (σημείωση: Αυτό δεν είναι Dolby Atmos)",
"settings.option.audio.enableAdvancedFunctionality.tunedAudioSpatialization": "Χωρικοποίηση Cider", "settings.option.audio.enableAdvancedFunctionality.tunedAudioSpatialization": "Χωρικοποίηση Cider",
@ -281,15 +364,16 @@
"settings.warn.audio.enableAdvancedFunctionality.audioSpatialization.compatibility": "Η Χωρικοποίηση δεν είναι συμβατή με το CAP. Παρακαλούμε απενεργοποιήστε το CAP για να συνεχίσετε.", "settings.warn.audio.enableAdvancedFunctionality.audioSpatialization.compatibility": "Η Χωρικοποίηση δεν είναι συμβατή με το CAP. Παρακαλούμε απενεργοποιήστε το CAP για να συνεχίσετε.",
"settings.header.visual": "Οπτικά", "settings.header.visual": "Οπτικά",
"settings.header.visual.description": "Προσαρμογή οπτικών ρυθμίσεων για το Cider.", "settings.header.visual.description": "Προσαρμογή οπτικών ρυθμίσεων για το Cider.",
"settings.option.visual.windowBackgroundStyle": "Στυλ Φόντου Παραθύρου", "settings.option.visual.windowStyle": "Στυλ παραθύρου",
"settings.option.visual.windowBackgroundStyle": "Στυλ φόντου παραθύρου",
"settings.header.visual.windowBackgroundStyle.none": "Κανένα", "settings.header.visual.windowBackgroundStyle.none": "Κανένα",
"settings.header.visual.windowBackgroundStyle.artwork": "Εξώφυλλο", "settings.header.visual.windowBackgroundStyle.artwork": "Εξώφυλλο",
"settings.header.visual.windowBackgroundStyle.image": "Εικόνα", "settings.header.visual.windowBackgroundStyle.image": "Εικόνα",
"settings.option.visual.animatedArtwork": "Κινούμενο Εξώφυλλο", "settings.option.visual.animatedArtwork": "Κινούμενο εξώφυλλο",
"settings.header.visual.animatedArtwork.always": "Πάντα", "settings.header.visual.animatedArtwork.always": "Πάντα",
"settings.header.visual.animatedArtwork.limited": "Περιορισμός σε σελίδες και ειδικές καταχωρήσεις", "settings.header.visual.animatedArtwork.limited": "Περιορισμός σε σελίδες και ειδικές καταχωρήσεις",
"settings.header.visual.animatedArtwork.disable": "Απενεργοποιημένο παντού", "settings.header.visual.animatedArtwork.disable": "Απενεργοποιημένο παντού",
"settings.option.visual.animatedArtworkQuality": "Ποιότητα Κινούμενου Εξωφύλλου", "settings.option.visual.animatedArtworkQuality": "Ποιότητα κινούμενου εξωφύλλου",
"settings.header.visual.animatedArtworkQuality.low": "Χαμηλή", "settings.header.visual.animatedArtworkQuality.low": "Χαμηλή",
"settings.header.visual.animatedArtworkQuality.medium": "Μέτρια", "settings.header.visual.animatedArtworkQuality.medium": "Μέτρια",
"settings.header.visual.animatedArtworkQuality.high": "Υψηλή", "settings.header.visual.animatedArtworkQuality.high": "Υψηλή",
@ -300,30 +384,52 @@
"settings.option.visual.hardwareAcceleration.description": "Απαιτεί επανεκκίνηση", "settings.option.visual.hardwareAcceleration.description": "Απαιτεί επανεκκίνηση",
"settings.header.visual.hardwareAcceleration.default": "Προεπιλογή", "settings.header.visual.hardwareAcceleration.default": "Προεπιλογή",
"settings.header.visual.hardwareAcceleration.webGPU": "WebGPU", "settings.header.visual.hardwareAcceleration.webGPU": "WebGPU",
"settings.option.visual.uiscale": "Κλίμακα διεπαφής χρήστη",
"settings.header.visual.theme": "Θέμα", "settings.header.visual.theme": "Θέμα",
"settings.option.visual.theme.github.download": "Εγκατάσταση από σύνδεσμο GitHub", "settings.option.visual.theme.github.download": "Εγκατάσταση από σύνδεσμο GitHub",
"settings.option.visual.theme.github.openfolder": "Άνοιγμα φακέλου θεμάτων",
"settings.option.visual.theme.github.explore": "Εξερεύνηση θεμάτων GitHub", "settings.option.visual.theme.github.explore": "Εξερεύνηση θεμάτων GitHub",
"settings.header.visual.theme.github.page": "Θέματα από το GitHub", "settings.header.visual.theme.github.page": "Θέματα από το GitHub",
"settings.option.visual.theme.github.install.confirm": "Θέλετε σίγουρα να εγκαταστήσετε το θέμα {{ repo }};", "settings.option.visual.theme.github.install.confirm": "Θέλετε σίγουρα να εγκαταστήσετε το θέμα {{ repo }};",
"settings.prompt.visual.theme.github.URL": "Εισάγετε τον σύνδεσμο του θέματος που θέλετε να εγκαταστήσετε", "settings.prompt.visual.theme.github.URL": "Εισάγετε τον σύνδεσμο του θέματος που θέλετε να εγκαταστήσετε",
"settings.notyf.visual.theme.install.success": "Το θέμα εγκαταστάθηκε με επιτυχία", "settings.notyf.visual.theme.install.success": "Το θέμα εγκαταστάθηκε με επιτυχία",
"settings.notyf.visual.theme.install.error": "Αποτυχία εγκατάστασης του θέματος", "settings.notyf.visual.theme.install.error": "Αποτυχία εγκατάστασης του θέματος",
"settings.header.visual.plugin": "Πρόσθετο",
"settings.option.visual.plugin.github.download": "Εγκατάσταση από σύνδεσμο GitHub",
"settings.option.visual.plugin.github.explore": "Εξερεύνηση πρόσθετων GitHub",
"settings.header.visual.plugin.github.page": "Πρόσθετα από το GitHub",
"settings.option.visual.plugin.github.install.confirm": "Θέλετε σίγουρα να εγκαταστήσετε το πρόσθετο {{ repo }};",
"settings.prompt.visual.plugin.github.URL": "Εισάγετε τον σύνδεσμο του πρόσθετου που θέλετε να εγκαταστήσετε",
"settings.prompt.visual.plugin.github.success": "Το πρόσθετο εγκαταστάθηκε με επιτυχία, πατήστε ΟΚ για επανεκκίνηση του Cider",
"settings.notyf.visual.plugin.install.success": "Το πρόσθετο εγκαταστάθηκε με επιτυχία",
"settings.notyf.visual.plugin.install.error": "Αποτυχία εγκατάστασης του πρόσθετου",
"settings.option.visual.theme.default": "Cider", "settings.option.visual.theme.default": "Cider",
"settings.option.visual.theme.dark": "Σκοτεινό", "settings.option.visual.theme.dark": "Σκοτεινό",
"settings.option.visual.showPersonalInfo": "Εμφάνιση προσωπικών στοιχείων", "settings.option.visual.showPersonalInfo": "Εμφάνιση προσωπικών στοιχείων",
"settings.header.window": "Παράθυρο",
"settings.header.window.description": "Προσαρμογή ρυθμίσεων παραθύρου για το Cider.",
"settings.option.window.openOnStartup": "Άνοιγμα του Cider στην εκκίνηση",
"settings.option.window.openOnStartup.hidden": "Άνοιγμα κρυμμένο",
"settings.option.window.useNativeTitleBar": "Χρήση γραμμής τίτλου του συστήμστος",
"settings.option.window.windowControlStyle": "Στυλ ελέγχου παραθύρου",
"settings.option.window.windowControlStyle.right": "Δεξιά",
"settings.option.window.windowControlStyle.left": "Αριστερά",
"settings.header.lyrics": "Στίχοι", "settings.header.lyrics": "Στίχοι",
"settings.header.lyrics.description": "Προσαρμογή ρυθμίσεων στίχων για το Cider.", "settings.header.lyrics.description": "Προσαρμογή ρυθμίσεων στίχων για το Cider.",
"settings.option.lyrics.enableMusixmatch": "Ενεργοποίηση Στίχων Musixmatch", "settings.option.lyrics.enableMusixmatch": "Ενεργοποίηση στίχων Musixmatch",
"settings.option.lyrics.enableMusixmatchKaraoke": "Ενεργοποίηση Λειτουργίας Καραόκε (Musixmatch μόνο)", "settings.option.lyrics.enableMusixmatchKaraoke": "Ενεργοποίηση λειτουργίας καραόκε (Musixmatch μόνο)",
"settings.option.lyrics.musixmatchPreferredLanguage": "Προτιμώμενη Γλώσσα Μετάφρασης Musixmatch", "settings.option.lyrics.musixmatchPreferredLanguage": "Προτιμώμενη γλώσσα μετάφρασης Musixmatch",
"settings.option.lyrics.enableYoutubeLyrics": "Ενεργοποίηση Στίχων Youtube για Μουσικά Βίντεο", "settings.option.lyrics.enableYoutubeLyrics": "Ενεργοποίηση στίχων YouTube για μουσικά βίντεο",
"settings.header.connectivity": "Σύνδεση", "settings.option.lyrics.enableQQLyrics": "Ενεργοποίηση στίχων QQ",
"settings.header.connectivity.description": "Προσαρμογή ρυθμίσεων σύνδεσης για το Cider.", "settings.header.connectivity": "Συνδεσιμότητα",
"settings.header.connectivity.description": "Προσαρμογή ρυθμίσεων συνδεσιμότητας για το Cider.",
"settings.option.connectivity.playbackNotifications": "Ειδοποιήσεις αναπαραγωγής",
"settings.option.connectivity.discordRPC": "Discord Rich Presence", "settings.option.connectivity.discordRPC": "Discord Rich Presence",
"settings.option.connectivity.playbackNotifications": "Ειδοποιήσεις Αναπαραγωγής", "settings.option.connectivity.discordRPC.clientName": "Τίτλος",
"settings.header.connectivity.discordRPC.cider": "Εμφάνιση ως 'Cider'", "settings.option.connectivity.discordRPC.clearOnPause": "Εκκαθάριση του Discord Rich Presence στην παύση",
"settings.header.connectivity.discordRPC.appleMusic": "Εμφάνιση ως 'Apple Music'", "settings.option.connectivity.discordRPC.hideButtons": "Απόκρυψη κουμπιών του Discord Rich Presence",
"settings.option.connectivity.discordRPC.clearOnPause": "Εκκαθάριση του Discord Rich Presence στην Παύση", "settings.option.connectivity.discordRPC.detailsFormat": "Δομή λεπτομεριών",
"settings.option.connectivity.discordRPC.stateFormat": "Δομή κατάστασης",
"settings.option.connectivity.lastfmScrobble": "LastFM Scrobbling", "settings.option.connectivity.lastfmScrobble": "LastFM Scrobbling",
"settings.option.connectivity.lastfmScrobble.delay": "Καθυστέρηση LastFM Scrobble (%)", "settings.option.connectivity.lastfmScrobble.delay": "Καθυστέρηση LastFM Scrobble (%)",
"settings.option.connectivity.lastfmScrobble.nowPlaying": "Ενεργοποίηση LastFM \"Now Playing\"", "settings.option.connectivity.lastfmScrobble.nowPlaying": "Ενεργοποίηση LastFM \"Now Playing\"",
@ -334,32 +440,52 @@
"settings.option.debug.openAppData": "Άνοιγμα του φακέλου Cider", "settings.option.debug.openAppData": "Άνοιγμα του φακέλου Cider",
"settings.header.experimental": "Πειραματικές", "settings.header.experimental": "Πειραματικές",
"settings.header.experimental.description": "Προσαρμογή πειραματικών ρυθμίσεων για το Cider.", "settings.header.experimental.description": "Προσαρμογή πειραματικών ρυθμίσεων για το Cider.",
"settings.option.experimental.compactUI": "Συμπαγής Διεπαφή", "settings.option.experimental.reinstallwidevine": "Επανεγκατάσταση του WidevineCDM",
"settings.option.experimental.closeButtonBehaviour": "Συμπεριφορά Κουμπιού Εξόδου", "settings.option.experimental.reinstallwidevine.confirm": "Θέλετε σίγουρα να επανεγκαταστήσετε το Widevine;",
"settings.option.experimental.closeButtonBehaviour.quit": "Έξοδος του Cider", "settings.option.experimental.unknownPlugin": "Άγνωστες πηγές",
"settings.option.experimental.closeButtonBehaviour.minimizeTaskbar": "Ελαχιστοποίηση στη γραμμή εργασιών", "settings.option.experimental.unknownPlugin.description": "Να επιτρέπεται η εγκατάσταση πρόσθετων από repo εκτός του Cider Plugin Repository",
"settings.option.experimental.closeButtonBehaviour.minimizeTray": "Ελαχιστοποίηση στη γωνία γραμμής εργασιών", "settings.option.experimental.compactUI": "Συμπαγής διεπαφή",
"settings.option.window.close_button_hide": "Απόκρυψη εφαρμογής με το πάτημα του κουμπιού κλεισίματος",
"settings.option.experimental.inline_playlists": "Ενσωμάτωση λιστών αναπαραγωγής και άλμπουμ",
"settings.option.advanced.playlistTrackMapping": "Χαρτογράφηση κομματιών λίστών αναπαραγωγής",
"settings.option.advanced.playlistTrackMapping.description": "Ενεργοποιεί τη βαθιά σάρωση των λιστών αναπαραγωγής για να προσδιορίσει ποια κομμάτια βρίσκονται σε ποιες λίστες αναπαραγωγής. Οι χρόνοι δημιουργίας της προσωρινής μνήμης των λιστών αναπαραγωγής μπορεί να αυξηθούν σημαντικά.",
"settings.option.visual.transparent": "Διαφανές πλαίσιο",
"settings.option.visual.transparent.description": "(χρειάζεται υποστήριξη θέματος, απαιτεί επανεκκίνηση)",
"settings.header.advanced": "Για προχωρημένους",
"settings.header.connect": "Συγχρονισμός",
"settings.option.connect.link_account": "Ενεργοποίηση συγχρονισμού με Cider Connect",
"settings.option.connect.link_account.description": "Η σύνδεση του λογαριασμού σας Discord με το Cider Connect σάς επιτρέπει να αποθηκεύετε δεδομένα χρήστη, συμπεριλαμβανομένων των Ρυθμίσεων, των EQ, και άλλα. (Υπό ανάπτυξη)",
"spatial.notTurnedOn": "Η Χωρικοποίηση Ήχου είναι απενεργοποιημένη. Για χρήση, παρακαλούμε ενεργοποιήστε την πρώτα.", "spatial.notTurnedOn": "Η Χωρικοποίηση Ήχου είναι απενεργοποιημένη. Για χρήση, παρακαλούμε ενεργοποιήστε την πρώτα.",
"spatial.spatialProperties": "Χωρικές Ιδιότητες", "spatial.spatialProperties": "Χωρικές ιδιότητες",
"spatial.width": "Πλάτος", "spatial.width": "Πλάτος",
"spatial.height": "Ύψος", "spatial.height": "Ύψος",
"spatial.depth": "Βάθος", "spatial.depth": "Βάθος",
"spatial.gain": "Απολαβή", "spatial.gain": "Απολαβή",
"spatial.roomMaterials": "Υλικά Δωματίου", "spatial.roomMaterials": "Υλικά δωματίου",
"spatial.roomDimensions": "Διαστάσεις Δωματίου", "spatial.roomDimensions": "Διαστάσεις δωματίου",
"spatial.roomPositions": "Θέσεις Δωματίου", "spatial.roomPositions": "Θέσεις δωματίου",
"spatial.setDimensions": "Ορισμός Διαστάσεων", "spatial.setDimensions": "Ορισμός διαστάσεων",
"spatial.setPositions": "Ορισμός Θέσεων", "spatial.setPositions": "Ορισμός θέσεων",
"spatial.up": "Πάνω", "spatial.up": "Πάνω",
"spatial.front": "Πρόσοψη", "spatial.front": "Πρόσοψη",
"spatial.left": "Αριστερά", "spatial.left": "Αριστερά",
"spatial.right": "Δεξιά", "spatial.right": "Δεξιά",
"spatial.back": "Πίσω Όψη", "spatial.back": "Πίσω όψη",
"spatial.down": "Κάτω", "spatial.down": "Κάτω",
"spatial.listener": "Ακροατής", "spatial.listener": "Ακροατής",
"spatial.audioSource": "Πηγή Ήχου", "spatial.audioSource": "Πηγή ήχου",
"settings.header.unfinished": "Ημιτελής", "settings.header.unfinished": "Ημιτελής",
"remote.web.title": "Cider Remote", "remote.web.title": "Cider Remote",
"remote.web.description": "Σαρώστε τον κωδικό QR για σύζευξη του Cider με το κινητό σας", "remote.web.description": "Σαρώστε τον κωδικό QR για σύζευξη του Cider με το κινητό σας",
"share.platform.twitter.tweet": "Ακούστε το {{song}} στο Apple Music.\n\n{{url}}\n\n#AppleMusic #Cider",
"share.platform.twitter": "Twitter",
"share.platform.facebook": "Facebook",
"share.platform.reddit": "Reddit",
"share.platform.telegram": "Telegram",
"share.platform.whatsapp": "WhatsApp",
"share.platform.messenger": "Messenger",
"share.platform.email": "Email",
"share.platform.songLink": "Αντιγραφή με song.link",
"share.platform.clipboard": "Αντιγραφή συνδέσμου",
"about.thanks": "Μεγάλα ευχαριστώ στην Ομάδα Cider Collective και σε όλους τους συνεισφέροντές μας." "about.thanks": "Μεγάλα ευχαριστώ στην Ομάδα Cider Collective και σε όλους τους συνεισφέροντές μας."
} }

View file

@ -121,8 +121,6 @@
"term.audioControls": "Volume Controls", "term.audioControls": "Volume Controls",
"term.clearAll": "Clear All", "term.clearAll": "Clear All",
"term.recentStations": "Recent Stations", "term.recentStations": "Recent Stations",
"term.personalStations": "Personal Stations",
"term.amLive": "Apple Music Live",
"term.language": "Language", "term.language": "Language",
"term.funLanguages": "Fun", "term.funLanguages": "Fun",
"term.noLyrics": "Loading... / Lyrics not found./ Instrumental.", "term.noLyrics": "Loading... / Lyrics not found./ Instrumental.",
@ -266,6 +264,42 @@
"action.cast.scanning": "Scanning...", "action.cast.scanning": "Scanning...",
"action.createNew": "Create New...", "action.createNew": "Create New...",
"action.openArtworkInBrowser": "Open artwork in browser", "action.openArtworkInBrowser": "Open artwork in browser",
"menubar.options.about": "About",
"menubar.options.settings": "Settings",
"menubar.options.quit": "Quit Cider",
"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",
"settings.header.general": "General", "settings.header.general": "General",
"settings.header.general.description": "Adjust the general settings for Cider.", "settings.header.general.description": "Adjust the general settings for Cider.",
"settings.option.general.language": "Language", "settings.option.general.language": "Language",
@ -332,6 +366,7 @@
"settings.option.audio.audioLab.description": "An assortment of in-house developed audio effects for Cider.", "settings.option.audio.audioLab.description": "An assortment of in-house developed audio effects for Cider.",
"settings.option.audio.audioLab.subheader": "Designed by Cider Acoustic Technologies in California", "settings.option.audio.audioLab.subheader": "Designed by Cider Acoustic Technologies in California",
"settings.warn.audioLab.withoutAF": "AudioContext (Advanced Functionality) is required to enable Cider Audio Laboratory.", "settings.warn.audioLab.withoutAF": "AudioContext (Advanced Functionality) is required to enable Cider Audio Laboratory.",
"settings.warn.enableAdvancedFunctionality": "AudioContext (Advanced Functionality) is required to enable this feature.",
"settings.option.audio.enableAdvancedFunctionality.analogWarmth": "Analog Warmth", "settings.option.audio.enableAdvancedFunctionality.analogWarmth": "Analog Warmth",
"settings.option.audio.enableAdvancedFunctionality.analogWarmth.description": "Simulates the analog warmth modelled after the Korg Nutube 6P1", "settings.option.audio.enableAdvancedFunctionality.analogWarmth.description": "Simulates the analog warmth modelled after the Korg Nutube 6P1",
"settings.option.audio.enableAdvancedFunctionality.analogWarmthIntensity": "Analog Warmth intensity", "settings.option.audio.enableAdvancedFunctionality.analogWarmthIntensity": "Analog Warmth intensity",

View file

@ -73,6 +73,7 @@
"term.viewAs": "Ver como", "term.viewAs": "Ver como",
"term.viewAs.coverArt": "Portada", "term.viewAs.coverArt": "Portada",
"term.viewAs.list": "Lista", "term.viewAs.list": "Lista",
"term.dynamic": "Dinámico",
"term.size": "Tamaño", "term.size": "Tamaño",
"term.size.normal": "Normal", "term.size.normal": "Normal",
"term.size.compact": "Compacto", "term.size.compact": "Compacto",
@ -199,6 +200,9 @@
"podcast.episodes": "Episodios", "podcast.episodes": "Episodios",
"podcast.playEpisode": "Reproducir Episodio", "podcast.playEpisode": "Reproducir Episodio",
"podcast.website": "Sitio web de Podcasts", "podcast.website": "Sitio web de Podcasts",
"action.edit": "Editar",
"action.done": "Hecho",
"action.editTracklist": "Edit Tracklist",
"action.addToLibrary": "Agregar a la Biblioteca", "action.addToLibrary": "Agregar a la Biblioteca",
"action.addToLibrary.success": "Agregado a la Biblioteca", "action.addToLibrary.success": "Agregado a la Biblioteca",
"action.addToLibrary.error": "Error al agregar a la Biblioteca", "action.addToLibrary.error": "Error al agregar a la Biblioteca",
@ -260,6 +264,42 @@
"action.cast.scanning": "Escaneando...", "action.cast.scanning": "Escaneando...",
"action.createNew": "Crear Nuevo...", "action.createNew": "Crear Nuevo...",
"action.openArtworkInBrowser": "Abrir Ilustración en el navegador", "action.openArtworkInBrowser": "Abrir Ilustración en el navegador",
"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.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",
"settings.header.general": "General", "settings.header.general": "General",
"settings.header.general.description": "Ajuste la configuración general de Cider.", "settings.header.general.description": "Ajuste la configuración general de Cider.",
"settings.option.general.language": "Idioma", "settings.option.general.language": "Idioma",
@ -269,6 +309,10 @@
"settings.option.general.resumebehavior.locally.description": "Cider reanudará su última sesión en esta PC.", "settings.option.general.resumebehavior.locally.description": "Cider reanudará su última sesión en esta PC.",
"settings.option.general.resumebehavior.history": "Histórico", "settings.option.general.resumebehavior.history": "Histórico",
"settings.option.general.resumebehavior.history.description": "Cider pondrá en cola la última canción de su historial general de Apple Music, en todos sus dispositivos.", "settings.option.general.resumebehavior.history.description": "Cider pondrá en cola la última canción de su historial general de Apple Music, en todos sus dispositivos.",
"settings.option.general.resumetabs" : "Abrir pestaña al iniciar",
"settings.option.general.resumetabs.description" : "Puede elegir qué pestaña desea abrir cuando inicie Cider.",
"settings.option.general.resumetabs.dynamic" : "Dinámico",
"settings.option.general.resumetabs.dynamic.description" : "Cider abrirá la pestaña que utilizó por última vez.",
"settings.option.general.language.main": "Idiomas", "settings.option.general.language.main": "Idiomas",
"settings.option.general.language.fun": "Idiomas Fun (Parodias)", "settings.option.general.language.fun": "Idiomas Fun (Parodias)",
"settings.option.general.language.unsorted": "Sin Clasificar", "settings.option.general.language.unsorted": "Sin Clasificar",
@ -280,6 +324,8 @@
"settings.option.general.customizeSidebar": "Personalizar elementos de la barra lateral", "settings.option.general.customizeSidebar": "Personalizar elementos de la barra lateral",
"settings.option.general.customizeSidebar.customize": "Personalizar", "settings.option.general.customizeSidebar.customize": "Personalizar",
"settings.option.general.keybindings": "Combinaciones de Teclas", "settings.option.general.keybindings": "Combinaciones de Teclas",
"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.keybindings.open": "Abrir",
"settings.description.search": "Buscar", "settings.description.search": "Buscar",
"settings.description.albums": "Álbumes de la biblioteca", "settings.description.albums": "Álbumes de la biblioteca",
@ -410,6 +456,7 @@
"settings.option.lyrics.enableMusixmatchKaraoke": "Habilitar el modo Karaoke (solo Musixmatch)", "settings.option.lyrics.enableMusixmatchKaraoke": "Habilitar el modo Karaoke (solo Musixmatch)",
"settings.option.lyrics.musixmatchPreferredLanguage": "Idioma preferido de traducción de Musixmatch", "settings.option.lyrics.musixmatchPreferredLanguage": "Idioma preferido de traducción de Musixmatch",
"settings.option.lyrics.enableYoutubeLyrics": "Habilitar letras de YouTube para videos musicales", "settings.option.lyrics.enableYoutubeLyrics": "Habilitar letras de YouTube para videos musicales",
"settings.option.lyrics.enableQQLyrics": "Habilitar letras de QQ",
"settings.header.connectivity": "Conectividad", "settings.header.connectivity": "Conectividad",
"settings.header.connectivity.description": "Ajuste la configuración de conectividad para Cider.", "settings.header.connectivity.description": "Ajuste la configuración de conectividad para Cider.",
"settings.option.connectivity.playbackNotifications": "Notificaciones de Reproducción", "settings.option.connectivity.playbackNotifications": "Notificaciones de Reproducción",
@ -442,7 +489,9 @@
"settings.option.visual.transparent.description": "Marco transparente (necesita compatibilidad con temas, requiere reiniciar)", "settings.option.visual.transparent.description": "Marco transparente (necesita compatibilidad con temas, requiere reiniciar)",
"settings.header.advanced": "Avanzado", "settings.header.advanced": "Avanzado",
"settings.header.connect": "Conectar", "settings.header.connect": "Conectar",
"spatial.notTurnedOn": "La espacialización de audio está deshabilitada. Para usar, habilítelo primero.", "settings.option.connect.link_account": "Habilitar sincronización con Cider Connect",
"settings.option.connect.link_account.description": "Vincular su cuenta de Discord con Cider Connect le permite almacenar datos de usuario que incluyen configuraciones, ecualizadores y eventualmente más, una vez que haya terminado. (Trabajo en progreso)",
"spatial.notTurnedOn": "La Espacialización de audio está deshabilitada. Para usar, habilítelo primero.",
"spatial.spatialProperties": "Propiedades de Espacialización", "spatial.spatialProperties": "Propiedades de Espacialización",
"spatial.width": "Ancho", "spatial.width": "Ancho",
"spatial.height": "Alto", "spatial.height": "Alto",

View file

@ -121,8 +121,6 @@
"term.audioControls": "Volume Controls", "term.audioControls": "Volume Controls",
"term.clearAll": "Clear All", "term.clearAll": "Clear All",
"term.recentStations": "Recent Stations", "term.recentStations": "Recent Stations",
"term.personalStations": "Personal Stations",
"term.amLive": "Apple Music Live",
"term.language": "Language", "term.language": "Language",
"term.funLanguages": "Fun", "term.funLanguages": "Fun",
"term.noLyrics": "Loading... / Lyrics not found./ Instrumental.", "term.noLyrics": "Loading... / Lyrics not found./ Instrumental.",
@ -266,6 +264,42 @@
"action.cast.scanning": "Scanning...", "action.cast.scanning": "Scanning...",
"action.createNew": "Create New...", "action.createNew": "Create New...",
"action.openArtworkInBrowser": "Open artwork in browser", "action.openArtworkInBrowser": "Open artwork in browser",
"menubar.options.about": "About",
"menubar.options.settings": "Settings",
"menubar.options.quit": "Quit Cider",
"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",
"settings.header.general": "General", "settings.header.general": "General",
"settings.header.general.description": "Adjust the general settings for Cider.", "settings.header.general.description": "Adjust the general settings for Cider.",
"settings.option.general.language": "Language", "settings.option.general.language": "Language",

View file

@ -59,7 +59,6 @@ export class BrowserWindow {
"pages/settings", "pages/settings",
"pages/installed-themes", "pages/installed-themes",
"pages/listen_now", "pages/listen_now",
"pages/radio",
"pages/home", "pages/home",
"pages/artist-feed", "pages/artist-feed",
"pages/cider-playlist", "pages/cider-playlist",
@ -113,7 +112,6 @@ export class BrowserWindow {
"components/artist-chip", "components/artist-chip",
"components/hello-world", "components/hello-world",
"components/inline-collection-list", "components/inline-collection-list",
"components/radio-child",
], ],
appRoutes: [ appRoutes: [
{ {
@ -188,11 +186,6 @@ export class BrowserWindow {
component: `<cider-listen-now :data="listennow"></cider-listen-now>`, component: `<cider-listen-now :data="listennow"></cider-listen-now>`,
condition: `page == 'listen_now'`, condition: `page == 'listen_now'`,
onEnter: `` onEnter: ``
}, {
page: "radio",
component: `<cider-radio :data="radio"></cider-radio>`,
condition: `page == 'radio'`,
onEnter: ``
}, { }, {
page: "settings", page: "settings",
component: `<cider-settings></cider-settings>`, component: `<cider-settings></cider-settings>`,

View file

@ -3,6 +3,7 @@ import {utils} from "../base/utils";
export default class Thumbar { export default class Thumbar {
/** /**
* Base Plugin Details (Eventually implemented into a GUI in settings) * Base Plugin Details (Eventually implemented into a GUI in settings)
*/ */
@ -22,30 +23,36 @@ export default class Thumbar {
label: app.getName(), label: app.getName(),
submenu: [ submenu: [
{ {
label: 'About', label: utils.getLocale(utils.getStoreValue('general.language'), 'menubar.options.about'),
click: () => utils.getWindow().webContents.executeJavaScript(`app.appRoute('about')`) click: () => utils.getWindow().webContents.executeJavaScript(`app.appRoute('about')`)
}, },
{type: 'separator'}, {type: 'separator'},
{ {
label: 'Settings', label: utils.getLocale(utils.getStoreValue('general.language'), 'menubar.options.settings'),
accelerator: utils.getStoreValue("general.keybindings.settings").join('+'), accelerator: utils.getStoreValue("general.keybindings.settings").join('+'),
click: () => utils.getWindow().webContents.executeJavaScript(`app.appRoute('settings')`) click: () => utils.getWindow().webContents.executeJavaScript(`app.appRoute('settings')`),
}, },
...(this.isMac ? [
{type: 'separator'}, {type: 'separator'},
{role: 'services'}, {role: 'services'},
{type: 'separator'}, {type: 'separator'},
{role: 'hide'}, {role: 'hide'},
{role: 'hideOthers'}, {role: 'hideOthers'},
{role: 'unhide'}, {role: 'unhide'},
]: [
{type: 'separator'}, {type: 'separator'},
{role: 'quit'} {role: 'quit', label: utils.getLocale(utils.getStoreValue('general.language'), 'menubar.options.quit')},
] ]),
],
}, },
{ {
label: 'View', label: utils.getLocale(utils.getStoreValue('general.language'), 'menubar.options.view'),
submenu: [ submenu: [
{role: 'reload'}, {role: 'reload', label: utils.getLocale(utils.getStoreValue('general.language'), 'menubar.options.reload')},
{role: 'forceReload'}, {role: 'forceReload', label: utils.getLocale(utils.getStoreValue('general.language'), 'menubar.options.forcereload')},
...(this.isMac ? [
{role: 'toggleDevTools'}, {role: 'toggleDevTools'},
{type: 'separator'}, {type: 'separator'},
{role: 'resetZoom'}, {role: 'resetZoom'},
@ -53,24 +60,27 @@ export default class Thumbar {
{role: 'zoomOut'}, {role: 'zoomOut'},
{type: 'separator'}, {type: 'separator'},
{role: 'togglefullscreen'}, {role: 'togglefullscreen'},
]
]: []),
],
}, },
{ {
label: 'Window', label: utils.getLocale(utils.getStoreValue('general.language'), 'menubar.options.window'),
submenu: [ submenu: [
{role: 'minimize'}, {role: 'minimize', label: utils.getLocale(utils.getStoreValue('general.language'), 'menubar.options.minimize')},
...(this.isMac ? [
{ {
label: 'Show', label: 'Show',
click: () => utils.getWindow().show() click: () => utils.getWindow().show()
}, },
{role: 'zoom'}, {role: 'zoom'},
...(this.isMac ? [
{type: 'separator'}, {type: 'separator'},
{role: 'front'}, {role: 'front'},
{role: 'close'}, {role: 'close'},
] : [
{role: 'close'}, {role: 'close'},
]),
{ {
label: 'Edit', label: 'Edit',
@ -83,146 +93,148 @@ export default class Thumbar {
{role: 'paste'}, {role: 'paste'},
] ]
}, },
] : []
),
{type: 'separator'}, {type: 'separator'},
{ {
label: 'Toggle Private Session', label: utils.getLocale(utils.getStoreValue('general.language'), 'menubar.options.toggleprivate'),
accelerator: utils.getStoreValue("general.keybindings.togglePrivateSession").join('+'), accelerator: utils.getStoreValue("general.keybindings.togglePrivateSession").join('+'),
click: () => utils.getWindow().webContents.executeJavaScript(`app.cfg.general.privateEnabled = !app.cfg.general.privateEnabled`) click: () => utils.getWindow().webContents.executeJavaScript(`app.cfg.general.privateEnabled = !app.cfg.general.privateEnabled`)
}, },
{type: 'separator'}, {type: 'separator'},
{ {
label: 'Web Remote', label: utils.getLocale(utils.getStoreValue('general.language'), 'menubar.options.webremote'),
accelerator: utils.getStoreValue("general.keybindings.webRemote").join('+'), accelerator: utils.getStoreValue("general.keybindings.webRemote").join('+'),
sublabel: 'Opens in external window', sublabel: 'Opens in external window',
click: () => utils.getWindow().webContents.executeJavaScript(`app.appRoute('remote-pair')`) click: () => utils.getWindow().webContents.executeJavaScript(`app.appRoute('remote-pair')`)
}, },
{ {
label: 'Audio Settings', label: utils.getLocale(utils.getStoreValue('general.language'), 'menubar.options.audio'),
accelerator: utils.getStoreValue("general.keybindings.audioSettings").join('+'), accelerator: utils.getStoreValue("general.keybindings.audioSettings").join('+'),
click: () => utils.getWindow().webContents.executeJavaScript(`app.modals.audioSettings = true`) click: () => utils.getWindow().webContents.executeJavaScript(`app.modals.audioSettings = true`)
}, },
{ {
label: 'Plug-in Menu', label: utils.getLocale(utils.getStoreValue('general.language'), 'menubar.options.plugins'),
accelerator: utils.getStoreValue("general.keybindings.pluginMenu").join('+'), accelerator: utils.getStoreValue("general.keybindings.pluginMenu").join('+'),
click: () => utils.getWindow().webContents.executeJavaScript(`app.modals.pluginMenu = true`) click: () => utils.getWindow().webContents.executeJavaScript(`app.modals.pluginMenu = true`)
} }
] ]
}, },
{ {
label: 'Controls', label: utils.getLocale(utils.getStoreValue('general.language'), 'menubar.options.controls'),
submenu: [ submenu: [
{ {
label: 'Pause / Play', label: utils.getLocale(utils.getStoreValue('general.language'), 'menubar.options.playpause'),
accelerator: 'Space', accelerator: 'Space',
click: () => utils.getWindow().webContents.executeJavaScript(`app.SpacePause()`) click: () => utils.getWindow().webContents.executeJavaScript(`app.SpacePause()`)
}, },
{ {
label: 'Next', label: utils.getLocale(utils.getStoreValue('general.language'), 'menubar.options.next'),
accelerator: 'CommandOrControl+Right', accelerator: 'CommandOrControl+Right',
click: () => utils.getWindow().webContents.executeJavaScript(`MusicKitInterop.next()`) click: () => utils.getWindow().webContents.executeJavaScript(`MusicKitInterop.next()`)
}, },
{ {
label: 'Previous', label: utils.getLocale(utils.getStoreValue('general.language'), 'menubar.options.previous'),
accelerator: 'CommandOrControl+Left', accelerator: 'CommandOrControl+Left',
click: () => utils.getWindow().webContents.executeJavaScript(`MusicKitInterop.previous()`) click: () => utils.getWindow().webContents.executeJavaScript(`MusicKitInterop.previous()`)
}, },
{type: 'separator'}, {type: 'separator'},
{ {
label: 'Volume Up', label: utils.getLocale(utils.getStoreValue('general.language'), 'menubar.options.volumeup'),
accelerator: 'CommandOrControl+Up', accelerator: 'CommandOrControl+Up',
click: () => utils.getWindow().webContents.executeJavaScript(`app.volumeUp()`) click: () => utils.getWindow().webContents.executeJavaScript(`app.volumeUp()`)
}, },
{ {
label: 'Volume Down', label: utils.getLocale(utils.getStoreValue('general.language'), 'menubar.options.volumedown'),
accelerator: 'CommandOrControl+Down', accelerator: 'CommandOrControl+Down',
click: () => utils.getWindow().webContents.executeJavaScript(`app.volumeDown()`) click: () => utils.getWindow().webContents.executeJavaScript(`app.volumeDown()`)
}, },
{ {
label: 'Browse', label: utils.getLocale(utils.getStoreValue('general.language'), 'menubar.options.browse'),
accelerator: utils.getStoreValue("general.keybindings.browse").join('+'), accelerator: utils.getStoreValue("general.keybindings.browse").join('+'),
click: () => utils.getWindow().webContents.executeJavaScript(`app.appRoute('browse')`) click: () => utils.getWindow().webContents.executeJavaScript(`app.appRoute('browse')`)
}, },
{type: 'separator'}, {type: 'separator'},
{ {
label: 'Artists', label: utils.getLocale(utils.getStoreValue('general.language'), 'menubar.options.artists'),
accelerator: utils.getStoreValue("general.keybindings.artists").join('+'), accelerator: utils.getStoreValue("general.keybindings.artists").join('+'),
click: () => utils.getWindow().webContents.executeJavaScript(`app.appRoute('library-artists')`) click: () => utils.getWindow().webContents.executeJavaScript(`app.appRoute('library-artists')`)
}, },
{ {
label: 'Search', label: utils.getLocale(utils.getStoreValue('general.language'), 'menubar.options.search'),
accelerator: utils.getStoreValue("general.keybindings.search").join('+'), accelerator: utils.getStoreValue("general.keybindings.search").join('+'),
click: () => utils.getWindow().webContents.executeJavaScript(`app.appRoute('search')`) click: () => utils.getWindow().webContents.executeJavaScript(`app.appRoute('search')`)
}, },
{type: 'separator'}, {type: 'separator'},
{ {
label: 'Album', label: utils.getLocale(utils.getStoreValue('general.language'), 'menubar.options.albums'),
accelerator: utils.getStoreValue("general.keybindings.albums").join('+'), accelerator: utils.getStoreValue("general.keybindings.albums").join('+'),
click: () => utils.getWindow().webContents.executeJavaScript(`app.appRoute('library-albums')`) click: () => utils.getWindow().webContents.executeJavaScript(`app.appRoute('library-albums')`)
}, },
{type: 'separator'}, {type: 'separator'},
{ {
label: 'Cast To Devices', label: utils.getLocale(utils.getStoreValue('general.language'), 'menubar.options.cast'),
accelerator: utils.getStoreValue("general.keybindings.castToDevices").join('+'), accelerator: utils.getStoreValue("general.keybindings.castToDevices").join('+'),
click: () => utils.getWindow().webContents.executeJavaScript(`app.modals.castMenu = true`) click: () => utils.getWindow().webContents.executeJavaScript(`app.modals.castMenu = true`)
} }
] ]
}, },
{ {
label: 'Account', label: utils.getLocale(utils.getStoreValue('general.language'), 'menubar.options.account'),
submenu: [ submenu: [
{ {
label: 'Account Settings', label: utils.getLocale(utils.getStoreValue('general.language'), 'menubar.options.accountsettings'),
click: () => utils.getWindow().webContents.executeJavaScript(`app.appRoute('apple-account-settings')`) click: () => utils.getWindow().webContents.executeJavaScript(`app.appRoute('apple-account-settings')`)
}, },
{ {
label: 'Sign Out', label: utils.getLocale(utils.getStoreValue('general.language'), 'menubar.options.signout'),
click: () => utils.getWindow().webContents.executeJavaScript(`app.unauthorize()`) click: () => utils.getWindow().webContents.executeJavaScript(`app.unauthorize()`)
} }
] ]
}, },
{ {
label: 'Support', label: utils.getLocale(utils.getStoreValue('general.language'), 'menubar.options.support'),
role: 'help', role: 'help',
submenu: [ submenu: [
{ {
label: 'Discord', label: utils.getLocale('Discord', 'menubar.options.discord'),
click: () => shell.openExternal("https://discord.gg/AppleMusic").catch(console.error) click: () => shell.openExternal("https://discord.gg/AppleMusic").catch(console.error)
}, },
{ {
label: 'GitHub Wiki', label: utils.getLocale('GitHub Wiki', 'menubar.options.github'),
click: () => shell.openExternal("https://github.com/ciderapp/Cider/wiki/Troubleshooting").catch(console.error) click: () => shell.openExternal("https://github.com/ciderapp/Cider/wiki/Troubleshooting").catch(console.error)
}, },
{type: 'separator'}, {type: 'separator'},
{ {
label: 'Report a...', label: utils.getLocale(utils.getStoreValue('general.language'), 'menubar.options.report'),
submenu: [ submenu: [
{ {
label: 'Bug', label: utils.getLocale(utils.getStoreValue('general.language'), 'menubar.options.bug'),
click: () => shell.openExternal("https://github.com/ciderapp/Cider/issues/new?assignees=&labels=bug%2Ctriage&template=bug_report.yaml&title=%5BBug%5D%3A+").catch(console.error) click: () => shell.openExternal("https://github.com/ciderapp/Cider/issues/new?assignees=&labels=bug%2Ctriage&template=bug_report.yaml&title=%5BBug%5D%3A+").catch(console.error)
}, },
{ {
label: 'Feature Request', label: utils.getLocale(utils.getStoreValue('general.language'), 'menubar.options.feature'),
click: () => shell.openExternal("https://github.com/ciderapp/Cider/discussions/new?category=feature-request").catch(console.error) click: () => shell.openExternal("https://github.com/ciderapp/Cider/discussions/new?category=feature-request").catch(console.error)
}, },
{ {
label: 'Translation Report/Request', label: utils.getLocale(utils.getStoreValue('general.language'), 'menubar.options.trans'),
click: () => shell.openExternal("https://github.com/ciderapp/Cider/issues/new?assignees=&labels=%F0%9F%8C%90+Translations&template=translation.yaml&title=%5BTranslation%5D%3A+").catch(console.error) click: () => shell.openExternal("https://github.com/ciderapp/Cider/issues/new?assignees=&labels=%F0%9F%8C%90+Translations&template=translation.yaml&title=%5BTranslation%5D%3A+").catch(console.error)
}, },
] ]
}, },
{type: 'separator'}, {type: 'separator'},
{ {
label: 'View License', label: utils.getLocale(utils.getStoreValue('general.language'), 'menubar.options.license'),
click: () => shell.openExternal("https://github.com/ciderapp/Cider/blob/main/LICENSE").catch(console.error) click: () => shell.openExternal("https://github.com/ciderapp/Cider/blob/main/LICENSE").catch(console.error)
}, },
{type: 'separator'}, {type: 'separator'},
{ {
label: 'Toggle Developer Tools', label: utils.getLocale(utils.getStoreValue('general.language'), 'menubar.options.toggledevtools'),
accelerator: utils.getStoreValue("general.keybindings.openDeveloperTools").join('+'), accelerator: utils.getStoreValue("general.keybindings.openDeveloperTools").join('+'),
click: () => utils.getWindow().webContents.openDevTools() click: () => utils.getWindow().webContents.openDevTools()
}, },
{ {
label: 'Open Configuration File in Editor', label: utils.getLocale(utils.getStoreValue('general.language'), 'menubar.options.conf'),
click: () => utils.getStoreInstance().openInEditor() click: () => utils.getStoreInstance().openInEditor()
} }
] ]

View file

@ -42,9 +42,7 @@ const app = new Vue({
listennow: [], listennow: [],
madeforyou: [], madeforyou: [],
radio: { radio: {
personal: {}, personal: []
recent: {},
amlive: {},
}, },
mklang: 'en', mklang: 'en',
webview: { webview: {
@ -237,6 +235,7 @@ const app = new Vue({
pages: [], pages: [],
}, },
moreinfodata: [], moreinfodata: [],
notyf: notyf
}, },
watch: { watch: {
cfg: { cfg: {
@ -323,7 +322,6 @@ const app = new Vue({
try { try {
this.listennow.timestamp = 0; this.listennow.timestamp = 0;
this.browsepage.timestamp = 0; this.browsepage.timestamp = 0;
this.radio.timestamp = 0;
} catch (e) { } } catch (e) { }
}, },
/** /**
@ -2534,33 +2532,15 @@ const app = new Vue({
} }
}, },
async getRadioStations(attempt = 0) { async getRadioStations(attempt = 0) {
if (this.radio.timestamp > Date.now() - 120000) {
return
}
if (attempt > 3) { if (attempt > 3) {
return return
} }
try { try {
this.radio.personal.title = app.getLz('term.personalStations') this.radio.personal = (await app.mk.api.v3.music(`/v1/me/recent/radio-stations`, {
this.radio.recent.title = app.getLz('term.recentStations')
this.radio.amlive.title = app.getLz('term.amLive')
this.radio.personal.data = await app.mk.api.v3.music(`/v1/catalog/${app.mk.api.v3.storefrontId}/stations`, {
"filter[identity]": "personal",
}).data.data
this.radio.recent.data = await app.mk.api.v3.music(`/v1/me/recent/radio-stations`, {
"platform": "web", "platform": "web",
"art[url]": "f", "art[url]": "f",
l: this.mklang l: this.mklang
}).data.data })).data.data;
this.radio.amlive.data = await app.mk.api.v3.music(`/v1/catalog/${app.mk.api.v3.storefrontId}/stations`, {
"filter[featured]": "apple-music-live-radio",
}).data.data
this.radio.timestamp = Date.now()
console.debug(this.radio)
} catch (e) { } catch (e) {
console.log(e) console.log(e)
this.getRadioStations(attempt + 1) this.getRadioStations(attempt + 1)

View file

@ -25,6 +25,15 @@
</transition> </transition>
<% } %> <% } %>
<transition v-on:enter="getRadioStations()" :name="chrome.desiredPageTransition">
<template v-if="page == 'radio'" @created="console.log('radio')">
<div class="content-inner">
<h1 class="header-text">{{$root.getLz('term.radio')}}</h1>
<h3>{{$root.getLz('term.recentStations')}}</h3>
<mediaitem-square :item="item" v-for="item in radio.personal"></mediaitem-square>
</div>
</template>
</transition>
<!-- Library - Recently Added --> <!-- Library - Recently Added -->
<transition :name="chrome.desiredPageTransition" v-on:enter="getLibraryAlbumsFull(null, 0); searchLibraryAlbums(0);"> <transition :name="chrome.desiredPageTransition" v-on:enter="getLibraryAlbumsFull(null, 0); searchLibraryAlbums(0);">
<%- include('../pages/library-recentlyadded') %>'); <%- include('../pages/library-recentlyadded') %>');

View file

@ -39,8 +39,8 @@
<sidebar-library-item :name="$root.getLz('term.browse')" svg-icon="./assets/feather/globe.svg" <sidebar-library-item :name="$root.getLz('term.browse')" svg-icon="./assets/feather/globe.svg"
page="browse"> page="browse">
</sidebar-library-item> </sidebar-library-item>
<sidebar-library-item :name="$root.getLz('term.radio')" svg-icon="./assets/feather/radio.svg" <sidebar-library-item :name="$root.getLz('term.radio')" svg-icon="./assets/feather/radio.svg" page="radio">
page="radio"></sidebar-library-item> </sidebar-library-item>
</template> </template>
<div class="app-sidebar-header-text" <div class="app-sidebar-header-text"
@ -142,13 +142,13 @@
</span> </span>
<span class="usermenu-item-name">{{$root.getLz('action.showWebRemoteQR')}}</span> <span class="usermenu-item-name">{{$root.getLz('action.showWebRemoteQR')}}</span>
</button> </button>
<button class="usermenu-item" v-if="cfg.advanced.AudioContext" @click="modals.castMenu = true"> <button class="usermenu-item" @click="cfg.advanced.AudioContext ? modals.castMenu = true : $root.notyf.error($root.getLz('settings.warn.enableAdvancedFunctionality'))">
<span class="usermenu-item-icon"> <span class="usermenu-item-icon">
<%- include("../svg/cast.svg") %> <%- include("../svg/cast.svg") %>
</span> </span>
<span class="usermenu-item-name">{{$root.getLz('term.cast')}}</span> <span class="usermenu-item-name">{{$root.getLz('term.cast')}}</span>
</button> </button>
<button class="usermenu-item" v-if="cfg.advanced.AudioContext" @click="modals.audioSettings = true"> <button class="usermenu-item" @click="cfg.advanced.AudioContext ? modals.audioSettings = true : $root.notyf.error($root.getLz('settings.warn.enableAdvancedFunctionality'))">
<span class="usermenu-item-icon"> <span class="usermenu-item-icon">
<%- include("../svg/headphones.svg") %> <%- include("../svg/headphones.svg") %>
</span> </span>

View file

@ -1,31 +0,0 @@
<script type="text/x-template" id="radio-child">
<div>
<div class="row">
<div class="col">
<h3>{{ item.title }}</h3>
</div>
</div>
<mediaitem-square :item="station" v-for="station in item.data"></mediaitem-square>
<!-- <mediaitem-scroller-horizontal-sp-->
<!-- :withReason="index==0"-->
<!-- :items="recom.relationships.contents.data.limit(10)"></mediaitem-scroller-horizontal-sp>-->
</div>
</script>
<script>
Vue.component('radio-child', {
template: "#radio-child",
props: ["item"],
data: function () {
return {
isVisible: true,
app: this.$root
}
},
methods: {
visibilityChanged: function (isVisible, entry) {
// this.isVisible = isVisible
},
}
})
</script>

View file

@ -1,23 +0,0 @@
<script type="text/x-template" id="cider-radio">
<div class="content-inner">
<h1 class="header-text">{{app.getLz('term.radio')}}</h1>
<template v-for="item in data">
<radio-child :item="item"></radio-child>
</template>
</div>
</script>
<script>
Vue.component('cider-radio', {
template: "#cider-radio",
props: ["data"],
data: function () {
return {
app: this.$root
}
},
mounted() {
this.$root.getRadioStations()
}
})
</script>