1.1.11 - UI changes, volume curve etc

This commit is contained in:
exttex 2020-12-13 19:24:25 +01:00
parent 74f049ac71
commit 5c40db1242
35 changed files with 537 additions and 168 deletions

View File

@ -139,7 +139,7 @@
</v-list> </v-list>
</v-navigation-drawer> </v-navigation-drawer>
<v-app-bar app dense> <v-app-bar app dense color='#1e1e1e'>
<v-btn icon @click='previous'> <v-btn icon @click='previous'>
<v-icon>mdi-arrow-left</v-icon> <v-icon>mdi-arrow-left</v-icon>
@ -478,7 +478,6 @@ export default {
}, },
watch: { watch: {
volume() { volume() {
if (this.$root.audio) this.$root.audio.volume = this.volume;
this.$root.volume = this.volume; this.$root.volume = this.volume;
}, },
'$root.volume'() { '$root.volume'() {

View File

@ -79,11 +79,12 @@
</v-list-item-action> </v-list-item-action>
</v-list-item> </v-list-item>
<v-card v-if='card' max-width='175px' max-height='210px' @click='click'> <!-- Card version -->
<v-card v-if='card' max-width='175px' max-height='230px' @click='click' color='transparent' elevation='0'>
<v-hover v-slot:default='{hover}'> <v-hover v-slot:default='{hover}'>
<div> <div>
<v-img :src='album.art.thumb'> <v-img :src='album.art.thumb' class='rounded-lg'>
</v-img> </v-img>
<v-overlay absolute :value='hover' opacity='0.5'> <v-overlay absolute :value='hover' opacity='0.5'>
@ -95,8 +96,8 @@
</div> </div>
</v-hover> </v-hover>
<div class='px-2 pt-2 pb-1 text-subtitle-2 text-center text-truncate'>{{album.title}}</div>
<div class='pa-2 text-subtitle-2 text-center text-truncate'>{{album.title}}</div> <div class='pb-1 px-2 text-caption text-center text-truncate'>{{album.artistString}}</div>
</v-card> </v-card>

View File

@ -51,7 +51,7 @@
</v-list-item> </v-list-item>
<!-- Card version --> <!-- Card version -->
<v-card max-height='200px' max-width='200px' v-if='card' @click='click'> <v-card max-height='200px' width='180px' v-if='card' @click='click' color='transparent' elevation='0'>
<div class='d-flex justify-center'> <div class='d-flex justify-center'>
<v-avatar size='150' class='ma-1'> <v-avatar size='150' class='ma-1'>
<v-img :src='artist.picture.thumb'> <v-img :src='artist.picture.thumb'>
@ -82,7 +82,7 @@ export default {
tiny: { tiny: {
type: Boolean, type: Boolean,
default: false default: false
} },
}, },
methods: { methods: {
async library() { async library() {

View File

@ -20,11 +20,21 @@
<v-icon v-if='!isReversed'>mdi-sort-variant</v-icon> <v-icon v-if='!isReversed'>mdi-sort-variant</v-icon>
</v-btn> </v-btn>
</div> </div>
<!-- Search -->
<v-text-field
dense
:label='$t("Search")'
solo
class='mx-2 mt-1'
v-model='searchQuery'
></v-text-field>
</div> </div>
<v-lazy max-height="100" v-for='(album, index) in albums' :key='album.id'> <div class='d-flex justify-center flex-wrap'>
<AlbumTile :album='album' @remove='removed(index)'></AlbumTile> <v-lazy max-height="230" v-for='album in filtered' :key='album.id' class='ma-2'>
<AlbumTile :album='album' @remove='removed(album.id)' card></AlbumTile>
</v-lazy> </v-lazy>
</div>
</v-list> </v-list>
</template> </template>
@ -34,6 +44,9 @@ import AlbumTile from '@/components/AlbumTile.vue';
export default { export default {
name: 'LibraryAlbums', name: 'LibraryAlbums',
components: {
AlbumTile
},
data() { data() {
return { return {
albums: [], albums: [],
@ -46,7 +59,8 @@ export default {
this.$t('Name (A-Z)'), this.$t('Name (A-Z)'),
this.$t('Artist (A-Z)') this.$t('Artist (A-Z)')
], ],
unsorted: null unsorted: null,
searchQuery: null
} }
}, },
methods: { methods: {
@ -59,8 +73,8 @@ export default {
} }
this.loading = false; this.loading = false;
}, },
removed(index) { removed(id) {
this.albums.splice(index, 1); this.albums.splice(this.albums.findIndex(a => a.id == id), 1);
}, },
//Sort changed //Sort changed
async sort(type) { async sort(type) {
@ -91,12 +105,18 @@ export default {
this.albums.reverse(); this.albums.reverse();
}, },
}, },
components: {
AlbumTile
},
mounted() { mounted() {
//Initial load //Initial load
this.load(); this.load();
},
computed: {
//Search
filtered() {
if (!this.searchQuery)
return this.albums;
return this.albums.filter(a => a.title.toLowerCase().includes(this.searchQuery.toLowerCase()));
}
} }
} }
</script> </script>

View File

@ -20,11 +20,21 @@
<v-icon v-if='!isReversed'>mdi-sort-variant</v-icon> <v-icon v-if='!isReversed'>mdi-sort-variant</v-icon>
</v-btn> </v-btn>
</div> </div>
<!-- Search -->
<v-text-field
dense
:label='$t("Search")'
solo
class='mx-2 mt-1'
v-model='searchQuery'
></v-text-field>
</div> </div>
<v-lazy max-height="100" v-for='(artist, index) in artists' :key='artist.id'> <div class='d-flex flex-wrap justify-center'>
<ArtistTile :artist='artist' @remove='removed(index)'></ArtistTile> <v-lazy max-height="200" v-for='artist in filtered' :key='artist.id' class='my-2 ml-3'>
<ArtistTile :artist='artist' @remove='removed(artist.id)' card></ArtistTile>
</v-lazy> </v-lazy>
</div>
</v-list> </v-list>
</template> </template>
@ -48,7 +58,8 @@ export default {
this.$t('Date Added'), this.$t('Date Added'),
this.$t('Name (A-Z)') this.$t('Name (A-Z)')
], ],
unsorted: null unsorted: null,
searchQuery: null
} }
}, },
methods: { methods: {
@ -61,8 +72,8 @@ export default {
} }
this.loading = false; this.loading = false;
}, },
removed(index) { removed(id) {
this.artists.splice(index, 1); this.artists.splice(this.artists.findIndex(a => a.id == id), 1);
}, },
//Sort changed //Sort changed
async sort(type) { async sort(type) {
@ -92,6 +103,15 @@ export default {
mounted() { mounted() {
//Initial load //Initial load
this.load(); this.load();
},
computed: {
//Search
filtered() {
if (!this.searchQuery)
return this.artists;
return this.artists.filter(a => a.name.toLowerCase().includes(this.searchQuery.toLowerCase()));
}
} }
} }
</script> </script>

View File

@ -6,12 +6,6 @@
</v-overlay> </v-overlay>
<div class='d-flex'> <div class='d-flex'>
<!-- Create playlist -->
<v-btn class='ma-2 ml-3' color='primary' @click='popup = true'>
<v-icon left>mdi-playlist-plus</v-icon>
{{$t("Create new playlist")}}
</v-btn>
<!-- Sort --> <!-- Sort -->
<div class='mt-1 px-2 d-flex'> <div class='mt-1 px-2 d-flex'>
<div class='text-overline pt-1 mx-2'> <div class='text-overline pt-1 mx-2'>
@ -28,16 +22,34 @@
</v-btn> </v-btn>
</div> </div>
</div> </div>
<!-- Search -->
<v-text-field
dense
:label='$t("Search")'
solo
class='mx-2 mt-1'
v-model='searchQuery'
></v-text-field>
</div> </div>
<v-dialog max-width="400px" v-model='popup'> <v-dialog max-width="400px" v-model='popup'>
<PlaylistPopup @created='playlistCreated'></PlaylistPopup> <PlaylistPopup @created='playlistCreated'></PlaylistPopup>
</v-dialog> </v-dialog>
<v-lazy max-height="100" v-for='(playlist, index) in playlists' :key='playlist.id'> <div class='d-flex justify-center flex-wrap'>
<PlaylistTile :playlist='playlist' @remove='removed(index)'></PlaylistTile> <!-- Add playlist card -->
<v-card width='175px' height='175px' class='ma-2 d-flex justify-center align-center flex-column text-center rounded-lg' outlined @click='popup = true'>
<v-icon large>
mdi-playlist-plus
</v-icon>
<br>
<p class='text-h6 font-weight-bold'>{{$t("Create new playlist")}}</p>
</v-card>
<v-lazy max-height="220" v-for='playlist in filtered' :key='playlist.id' class='ma-2'>
<PlaylistTile :playlist='playlist' @remove='removed(playlist.id)' card cardTitle></PlaylistTile>
</v-lazy> </v-lazy>
</div>
</v-list> </v-list>
</template> </template>
@ -63,7 +75,8 @@ export default {
this.$t('Date Added'), this.$t('Date Added'),
this.$t('Name (A-Z)'), this.$t('Name (A-Z)'),
], ],
unsorted: null unsorted: null,
searchQuery: null
} }
}, },
methods: { methods: {
@ -84,8 +97,8 @@ export default {
this.load(); this.load();
}, },
//On playlist remove //On playlist remove
removed(i) { removed(id) {
this.playlists.splice(i, 1); this.playlists.splice(this.playlists.findIndex(p => p.id == id), 1);
}, },
//Sort changed //Sort changed
async sort(type) { async sort(type) {
@ -115,6 +128,15 @@ export default {
mounted() { mounted() {
//Initial load //Initial load
this.load(); this.load();
},
computed: {
//Search playlists
filtered() {
if (!this.searchQuery)
return this.playlists;
return this.playlists.filter(p => p.title.toLowerCase().includes(this.searchQuery.toLowerCase()));
}
} }
} }
</script> </script>

View File

@ -14,14 +14,22 @@
<v-icon v-if='!isReversed'>mdi-sort-variant</v-icon> <v-icon v-if='!isReversed'>mdi-sort-variant</v-icon>
</v-btn> </v-btn>
</div> </div>
<!-- Search -->
<v-text-field
dense
:label='$t("Search")'
solo
class='mx-2 mt-1'
v-model='searchQuery'
></v-text-field>
</div> </div>
<v-list :height='height' class='overflow-y-auto'> <v-list :height='height' class='overflow-y-auto'>
<v-lazy <v-lazy
v-for='(track, index) in tracks' v-for='(track, index) in filtered'
:key='index + "t" + track.id' :key='index + "t" + track.id'
max-height="100" max-height="100"
><TrackTile :track='track' @click='play(index)' @remove='removedTrack(index)'> ><TrackTile :track='track' @click='play(track.id)' @remove='removedTrack(track.id)'>
</TrackTile> </TrackTile>
</v-lazy> </v-lazy>
@ -52,7 +60,8 @@ export default {
this.$t('Album (A-Z)') this.$t('Album (A-Z)')
], ],
tracksUnsorted: null, tracksUnsorted: null,
isReversed: false isReversed: false,
searchQuery: null
} }
}, },
props: { props: {
@ -97,14 +106,14 @@ export default {
this.loading = false; this.loading = false;
}, },
//Play track //Play track
async play(index) { async play(id) {
this.$root.queue.source = { this.$root.queue.source = {
text: 'Loved tracks', text: 'Loved tracks',
source: 'playlist', source: 'playlist',
data: this.$root.profile.favoritesPlaylist data: this.$root.profile.favoritesPlaylist
}; };
this.$root.replaceQueue(this.tracks); this.$root.replaceQueue(this.tracks);
this.$root.playIndex(index); this.$root.playIndex(this.tracks.findIndex(t => t.id == id));
//Load all tracks //Load all tracks
if (this.tracks.length < this.count) { if (this.tracks.length < this.count) {
@ -151,12 +160,22 @@ export default {
this.isReversed = !this.isReversed; this.isReversed = !this.isReversed;
this.tracks.reverse(); this.tracks.reverse();
}, },
removedTrack(index) { removedTrack(id) {
this.tracks.splice(index, 1); this.tracks.splice(this.tracks.findIndex(t => t.id == id), 1);
this.$root.libraryTracks.splice(this.$root.libraryTracks.indexOf(id), 1);
} }
}, },
mounted() { mounted() {
this.initialLoad(); this.initialLoad();
},
computed: {
//Search
filtered() {
if (!this.searchQuery)
return this.tracks;
return this.tracks.filter(t => t.title.toLowerCase().includes(this.searchQuery.toLowerCase()));
}
} }
} }

View File

@ -82,11 +82,11 @@
</v-list-item> </v-list-item>
<!-- Card --> <!-- Card -->
<v-card v-if='card' max-width='175px' max-height='175px' @click='click' rounded> <v-card v-if='card' max-width='175px' max-height='220px' @click='click' color='transparent' elevation='0'>
<v-hover v-slot:default='{hover}'> <v-hover v-slot:default='{hover}'>
<div> <div>
<v-img :src='playlist.image.thumb'> <v-img :src='playlist.image.thumb' class='rounded-lg'>
</v-img> </v-img>
<v-overlay absolute :value='hover' opacity='0.5'> <v-overlay absolute :value='hover' opacity='0.5'>
@ -95,6 +95,8 @@
</v-btn> </v-btn>
</v-overlay> </v-overlay>
<div v-if='cardTitle' class='px-2 pt-2 pb-1 text-subtitle-2 text-center text-truncate'>{{playlist.title}}</div>
</div> </div>
</v-hover> </v-hover>
</v-card> </v-card>
@ -124,6 +126,10 @@ export default {
card: { card: {
type: Boolean, type: Boolean,
default: false default: false
},
cardTitle: {
type: Boolean,
default: false
} }
}, },
methods: { methods: {

View File

@ -1,7 +1,7 @@
<template> <template>
<div> <div>
<v-card max-width='175px' max-height='210px' @click='play' :loading='loading'> <v-card max-width='175px' max-height='210px' @click='play' :loading='loading' elevation='0' color='transparent'>
<v-img :src='stl.cover.thumb'> <v-img :src='stl.cover.thumb'>
</v-img> </v-img>

View File

@ -255,6 +255,11 @@ export default {
document.body.removeChild(copyElem); document.body.removeChild(copyElem);
this.$root.globalSnackbar = this.$t('Link copied!'); this.$root.globalSnackbar = this.$t('Link copied!');
} }
},
watch: {
'$root.libraryTracks'() {
this.isLibrary = this.$root.libraryTracks.includes(this.track.id);
}
} }
} }
</script> </script>

View File

@ -2,46 +2,46 @@
"Home": "Start", "Home": "Start",
"Browse": "Durchsuchen", "Browse": "Durchsuchen",
"Library": "Mediathek", "Library": "Mediathek",
"Tracks": "Titel", "Tracks": "Songs",
"Playlists": "Wiedergabelisten", "Playlists": "Playlists",
"Albums": "Alben", "Albums": "Alben",
"Artists": "Künstler", "Artists": "Künstler*innen",
"More": "Mehr", "More": "Mehr",
"Settings": "Einstellungen", "Settings": "Einstellungen",
"Downloads": "Downloads", "Downloads": "Downloads",
"Search or paste Deezer URL. Use / to quickly focus.": "Suche oder füge Deezer URL ein. Benutze \"/\" um schnell zu fokussieren.", "Search or paste Deezer URL. Use / to quickly focus.": "Suche oder füge eine Deezer URL ein. Benutze \"/\" um schnell zu fokussieren.",
"Play": "Wiedergeben", "Play": "Wiedergeben",
"Add to library": "Zur Mediathek hinzufügen", "Add to library": "Zur Mediathek hinzufügen",
"Download": "Download", "Download": "Download",
"fans": "Fans", "fans": "Fans",
"tracks": "Titel", "tracks": "Titel",
"Quality": "Qualität", "Quality": "Qualität",
"Estimated size:": "Geschätzte Zeit:", "Estimated size:": "Geschätzte Größe:",
"Start downloading": "Download beginnen", "Start downloading": "Download beginnen",
"Cancel": "Abbrechen", "Cancel": "Abbrechen",
"Stream logging is disabled!": "Streamprotokollierung ist deaktiviert!", "Stream logging is disabled!": "Streamprotokollierung ist deaktiviert!",
"Enable it in settings for history to work properly.": "Aktiviere es in den Einstellungen, damit der Verlauf korrekt funktioniert.", "Enable it in settings for history to work properly.": "Aktiviere es in den Einstellungen, damit der Verlauf korrekt funktioniert.",
"History": "Verlauf", "History": "Verlauf",
"Create new playlist": "Neue Playlist erstellen", "Create new playlist": "Neue Playlist erstellen",
"TRACKS": "Titel", "TRACKS": "SONGS",
"Sort by": "Sortieren nach", "Sort by": "Sortieren nach",
"Date Added": "Hinzugefügt am", "Date Added": "Hinzugefügt am",
"Name (A-Z)": "Name (A-Z)", "Name (A-Z)": "Name (A-Z)",
"Artist (A-Z)": "Künstler (A-Z)", "Artist (A-Z)": "Künstler*innen (A-Z)",
"Album (A-Z)": "Album (A-Z)", "Album (A-Z)": "Album (A-Z)",
"Error loading lyrics or lyrics not found!": "Fehler beim Laden der Songtexte oder Songtexte nicht gefunden!", "Error loading lyrics or lyrics not found!": "Fehler beim Laden der Songtexte bzw. Songtexte nicht gefunden!",
"Create playlist": "Playlist erstellen", "Create playlist": "Playlist erstellen",
"Create": "Erstellen", "Create": "Erstellen",
"Add to playlist": "Zur Playlist hinzufügen", "Add to playlist": "Zur Playlist hinzufügen",
"Create new": "Neu erstellen", "Create new": "Neu erstellen",
"Remove": "Entfernen", "Remove": "Entfernen",
"Play next": "Als nächstes spielen", "Play next": "Als Nächstes abspielen",
"Add to queue": "Zur Warteschleife hinzufügen", "Add to queue": "Zur Warteschleife hinzufügen",
"Remove from library": "Aus der Mediathek entfernen", "Remove from library": "Aus der Mediathek entfernen",
"Remove from playlist": "Aus Playlist entfernen", "Remove from playlist": "Aus Playlist entfernen",
"Play track mix": "Track Mix abspielen", "Play track mix": "Songmix abspielen",
"Go to": "Gehe zu", "Go to": "Gehe zu",
"Track Mix": "Track Mix", "Track Mix": "Songmix",
"Duration": "Dauer", "Duration": "Dauer",
"Released": "Veröffentlicht", "Released": "Veröffentlicht",
"Disk": "Disk", "Disk": "Disk",
@ -61,7 +61,7 @@
"Playing from": "Wiedergabe von", "Playing from": "Wiedergabe von",
"Info": "Info", "Info": "Info",
"Lyrics": "Lyrics", "Lyrics": "Lyrics",
"Track number": "Titelnummer", "Track number": "Songnummer",
"Disk number": "Disk-Nummer", "Disk number": "Disk-Nummer",
"Explicit": "Explizit", "Explicit": "Explizit",
"Source": "Quelle", "Source": "Quelle",
@ -74,28 +74,28 @@
"...or paste your ARL/Token below:": "...oder füge dein ARL/Token unten ein:", "...or paste your ARL/Token below:": "...oder füge dein ARL/Token unten ein:",
"ARL/Token": "ARL/Token", "ARL/Token": "ARL/Token",
"Login": "Anmeldung", "Login": "Anmeldung",
"By using this program, you disagree with Deezer's ToS.": "Durch die Verwendung dieses Programms lehnen Sie Deezer's ToS ab.", "By using this program, you disagree with Deezer's ToS.": "Durch die Verwendung dieses Programms lehnst du die Nutzungsbedingungen von Deezer ab.",
"Only in Electron version!": "Nur in der Electron-Version!", "Only in Electron version!": "Nur in der Electron-Version!",
"Search results for:": "Suchergebnisse für:", "Search results for:": "Suchergebnisse für:",
"Error loading data!": "Fehler beim Laden der Daten!", "Error loading data!": "Fehler beim Laden der Daten!",
"Try again later!": "Versuch's später nochmal!", "Try again later!": "Versuch's später nochmal!",
"Search": "Suche", "Search": "Suche",
"Streaming Quality": "Streamqualität", "Streaming Quality": "Streamqualität",
"Download Quality": "Download-Qualität", "Download Quality": "Downloadqualität",
"Downloads Directory": "Downloadverzeichnis", "Downloads Directory": "Downloadverzeichnis",
"Simultaneous downloads": "Gleichzeitige Downloads", "Simultaneous downloads": "Gleichzeitige Downloads",
"Always show download confirm dialog before downloading.": "Downloadbestätigungsdialog immer vor dem Download anzeigen.", "Always show download confirm dialog before downloading.": "Downloadbestätigungsdialog immer vor dem Download anzeigen.",
"Show download dialog": "Download-Dialog anzeigen", "Show download dialog": "Download-Dialog anzeigen",
"Create folders for artists": "Ordner für Künstler erstellen", "Create folders for artists": "Ordner für Künstler*innen erstellen",
"Create folders for albums": "Ordner für Alben erstellen", "Create folders for albums": "Ordner für Alben erstellen",
"Download lyrics": "Download Lyrics", "Download lyrics": "Download Lyrics",
"Variables": "Variablen", "Variables": "Variablen",
"UI": "Benutzeroberfläche", "UI": "Benutzeroberfläche",
"Show autocomplete in search": "Auto-Vervollständigung in der Suche anzeigen", "Show autocomplete in search": "Auto-Vervollständigung in der Suche anzeigen",
"Integrations": "Integrationen", "Integrations": "Integrationen",
"This allows listening history, flow and recommendations to work properly.": "Dies ermöglicht das korrekte Arbeiten von Wiedergabeverlauf, Flow und Empfehlungen.", "This allows listening history, flow and recommendations to work properly.": "Dies ermöglicht, dass der Wiedergabeverlauf, Flow und Empfehlungen korrekt funktionieren.",
"Log track listens to Deezer": "Prokotolliere gehörte Titel auf Deezer", "Log track listens to Deezer": "Prokotolliere gehörte Titel auf Deezer",
"Connect your LastFM account to allow scrobbling.": "Verbinde dein LastFM-Konto, um das Scrobbing zu erlauben.", "Connect your LastFM account to allow scrobbling.": "Verbinde dein LastFM-Konto, um das Scrobbling zu erlauben.",
"Login with LastFM": "Anmelden mit LastFM", "Login with LastFM": "Anmelden mit LastFM",
"Disconnect LastFM": "Disconnect LastFM", "Disconnect LastFM": "Disconnect LastFM",
"Requires restart to apply!": "Erfordert einen Neustart der App!", "Requires restart to apply!": "Erfordert einen Neustart der App!",
@ -110,9 +110,9 @@
"Settings saved!": "Einstellungen gespeichert!", "Settings saved!": "Einstellungen gespeichert!",
"Available only in Electron version!": "Nur in der Electron-Version verfügbar!", "Available only in Electron version!": "Nur in der Electron-Version verfügbar!",
"Crossfade (ms)": "Überblendung (ms)", "Crossfade (ms)": "Überblendung (ms)",
"Select primary color": "Primärfarbe auswählen", "Select primary color": "Hauptfarbe auswählen",
"Light theme": "Helles Thema", "Light theme": "Helles Thema",
"Create folders for playlists": "Ordner für Wiedergabelisten erstellen", "Create folders for playlists": "Ordner für Playlists erstellen",
"About": "Über", "About": "Über",
"Links:": "Links:", "Links:": "Links:",
"Telegram Releases": "Telegram-Releases", "Telegram Releases": "Telegram-Releases",
@ -122,18 +122,18 @@
"Credits:": "Credits:", "Credits:": "Credits:",
"Agree": "Einverstanden", "Agree": "Einverstanden",
"Dismiss": "Verwerfen", "Dismiss": "Verwerfen",
"Added to playlist!": "Zur Wiedergabeliste hinzugefügt!", "Added to playlist!": "Zur Playlist hinzugefügt!",
"Added to library!": "Zur Mediathek hinzufügen!", "Added to library!": "Zur Mediathek hinzufügt!",
"Removed from library!": "Aus der Mediathek entfernen!", "Removed from library!": "Aus der Mediathek entfernt!",
"Removed from playlist!": "Aus der Wiedergabeliste entfernt!", "Removed from playlist!": "Aus der Playlist entfernt!",
"Playlist deleted!": "Wiedergabeliste gelöscht!", "Playlist deleted!": "Playlist gelöscht!",
"Delete": "Löschen", "Delete": "Löschen",
"Are you sure you want to delete this playlist?": "Bist du sicher, dass du diese Wiedergabeliste löschen willst?", "Are you sure you want to delete this playlist?": "Bist du sicher, dass du diese Playlist löschen willst?",
"Force white tray icon": "Erzwinge weißes Tray-Icon", "Force white tray icon": "Erzwinge weißes Tray-Icon",
"Force default (white) tray icon if theme incorrectly detected. Requires restart.": "Standardsymbol (weiß) in der Kontrollleiste erzwingen, wenn Design falsch erkannt wurde. Neustart erforderlich.", "Force default (white) tray icon if theme incorrectly detected. Requires restart.": "Standardsymbol (weiß) in der Kontrollleiste erzwingen, wenn Design falsch erkannt wurde. Neustart erforderlich.",
"Share": "Teilen", "Share": "Teilen",
"Settings quality": "Audioqualität-Einstellungen", "Settings quality": "Audioqualität-Einstellungen",
"Content language": "Sprache des Inhalts", "Content language": "Sprache der Inhalte",
"Content country": "Land des Inhalts", "Content country": "Land des Inhalts",
"Website": "Webseite", "Website": "Webseite",
"Visit website": "Webseite besuchen", "Visit website": "Webseite besuchen",

View File

@ -135,7 +135,7 @@
"Settings quality": "Επιλογή ρυθμίσεων ποιότητας", "Settings quality": "Επιλογή ρυθμίσεων ποιότητας",
"Content language": "Γλώσσα περιεχομένου", "Content language": "Γλώσσα περιεχομένου",
"Content country": "Χώρα περιεχομένου", "Content country": "Χώρα περιεχομένου",
"Website": "Website", "Website": "Ιστοσελίδα",
"Visit website": "Visit website", "Visit website": "Μετάβαση στην Ιστοσελίδα",
"New update available:": "New update available:" "New update available:": "Διαθέσιμη νέα ενημέρωση:"
} }

View File

@ -2,7 +2,7 @@
"Home": "Inicio", "Home": "Inicio",
"Browse": "Explorar", "Browse": "Explorar",
"Library": "Biblioteca", "Library": "Biblioteca",
"Tracks": "Pistas", "Tracks": "Canciones",
"Playlists": "Listas de reproducción", "Playlists": "Listas de reproducción",
"Albums": "Álbumes", "Albums": "Álbumes",
"Artists": "Artistas", "Artists": "Artistas",
@ -14,7 +14,7 @@
"Add to library": "Añadir a la biblioteca", "Add to library": "Añadir a la biblioteca",
"Download": "Descargar", "Download": "Descargar",
"fans": "seguidores", "fans": "seguidores",
"tracks": "pistas", "tracks": "canciones",
"Quality": "Calidad", "Quality": "Calidad",
"Estimated size:": "Tamaño estimado:", "Estimated size:": "Tamaño estimado:",
"Start downloading": "Comenzar descarga", "Start downloading": "Comenzar descarga",
@ -23,7 +23,7 @@
"Enable it in settings for history to work properly.": "Habilítalo en los ajustes para que el historial funcione correctamente.", "Enable it in settings for history to work properly.": "Habilítalo en los ajustes para que el historial funcione correctamente.",
"History": "Historial", "History": "Historial",
"Create new playlist": "Crear nueva lista de reproducción", "Create new playlist": "Crear nueva lista de reproducción",
"TRACKS": "PISTAS", "TRACKS": "CANCIONES",
"Sort by": "Ordenar por", "Sort by": "Ordenar por",
"Date Added": "Fecha de adición", "Date Added": "Fecha de adición",
"Name (A-Z)": "Nombre (A-Z)", "Name (A-Z)": "Nombre (A-Z)",
@ -94,7 +94,7 @@
"Show autocomplete in search": "Mostrar autocompletado al buscar", "Show autocomplete in search": "Mostrar autocompletado al buscar",
"Integrations": "Integraciones", "Integrations": "Integraciones",
"This allows listening history, flow and recommendations to work properly.": "Esto permite registrar el historial, para que flow y las recomendaciones funcionen correctamente.", "This allows listening history, flow and recommendations to work properly.": "Esto permite registrar el historial, para que flow y las recomendaciones funcionen correctamente.",
"Log track listens to Deezer": "Enviar registro de reproducción a Deezer", "Log track listens to Deezer": "Registrar la canción que escucha a Deezer",
"Connect your LastFM account to allow scrobbling.": "Conecta tu cuenta de LastFM para permitir sincronizar tus canciones.", "Connect your LastFM account to allow scrobbling.": "Conecta tu cuenta de LastFM para permitir sincronizar tus canciones.",
"Login with LastFM": "Iniciar sesión con LastFM", "Login with LastFM": "Iniciar sesión con LastFM",
"Disconnect LastFM": "Desconectar LastFM", "Disconnect LastFM": "Desconectar LastFM",

View File

@ -24,9 +24,9 @@
"History": "History", "History": "History",
"Create new playlist": "Gumawa ng bagong playlist", "Create new playlist": "Gumawa ng bagong playlist",
"TRACKS": "TRACKS", "TRACKS": "TRACKS",
"Sort by": "Sort by", "Sort by": "Ayusin ayon sa",
"Date Added": "Petsa kung kailan idinagdag", "Date Added": "Petsa kung kailan idinagdag",
"Name (A-Z)": "Name (A-Z)", "Name (A-Z)": "Pangalan (A-Z)",
"Artist (A-Z)": "Artista (A-Z)", "Artist (A-Z)": "Artista (A-Z)",
"Album (A-Z)": "Album (A-Z)", "Album (A-Z)": "Album (A-Z)",
"Error loading lyrics or lyrics not found!": "Error loading lyrics or lyrics not found!", "Error loading lyrics or lyrics not found!": "Error loading lyrics or lyrics not found!",
@ -42,7 +42,7 @@
"Play track mix": "Play track mix", "Play track mix": "Play track mix",
"Go to": "Pumunta sa", "Go to": "Pumunta sa",
"Track Mix": "Track Mix", "Track Mix": "Track Mix",
"Duration": "Duration", "Duration": "Tagal",
"Released": "Released", "Released": "Released",
"Disk": "Disk", "Disk": "Disk",
"albums": "Mga album", "albums": "Mga album",
@ -64,7 +64,7 @@
"Track number": "Track number", "Track number": "Track number",
"Disk number": "Disk number", "Disk number": "Disk number",
"Explicit": "Explicit", "Explicit": "Explicit",
"Source": "Source", "Source": "Pinagmulan",
"ID": "ID", "ID": "ID",
"Error logging in!": "Error logging in!", "Error logging in!": "Error logging in!",
"Please try again later, or try another account.": "Paki-subukan ulit mamaya, o mag-try ng ibang account.", "Please try again later, or try another account.": "Paki-subukan ulit mamaya, o mag-try ng ibang account.",
@ -120,12 +120,12 @@
"Discord": "Discord", "Discord": "Discord",
"Telegram Android Group": "Telegram Android Group", "Telegram Android Group": "Telegram Android Group",
"Credits:": "Credits:", "Credits:": "Credits:",
"Agree": "Agree", "Agree": "Sumang-ayon",
"Dismiss": "Dismiss", "Dismiss": "Dismiss",
"Added to playlist!": "Added to playlist!", "Added to playlist!": "Added to playlist!",
"Added to library!": "Added to library!", "Added to library!": "Idinagdag na sa library!",
"Removed from library!": "Removed from library!", "Removed from library!": "Tinanggal sa library!",
"Removed from playlist!": "Removed from playlist!", "Removed from playlist!": "Tinanggal sa playlist!",
"Playlist deleted!": "Playlist deleted!", "Playlist deleted!": "Playlist deleted!",
"Delete": "Delete", "Delete": "Delete",
"Are you sure you want to delete this playlist?": "Are you sure you want to delete this playlist?", "Are you sure you want to delete this playlist?": "Are you sure you want to delete this playlist?",
@ -136,6 +136,6 @@
"Content language": "Wika ng nilalaman", "Content language": "Wika ng nilalaman",
"Content country": "Bansa ng nilalaman", "Content country": "Bansa ng nilalaman",
"Website": "Website", "Website": "Website",
"Visit website": "Visit website", "Visit website": "Bisitahin ang website",
"New update available:": "New update available:" "New update available:": "May bagong update na:"
} }

View File

@ -88,7 +88,7 @@
"Show download dialog": "Afficher une boîte de dialogue pour chaque téléchargement", "Show download dialog": "Afficher une boîte de dialogue pour chaque téléchargement",
"Create folders for artists": "Générer des dossiers par artiste", "Create folders for artists": "Générer des dossiers par artiste",
"Create folders for albums": "Générer des dossiers par album", "Create folders for albums": "Générer des dossiers par album",
"Download lyrics": "Télécharger les paroles", "Download lyrics": "Télécharger les paroles (.LRC)",
"Variables": "Variables", "Variables": "Variables",
"UI": "Interface", "UI": "Interface",
"Show autocomplete in search": "Afficher la saisie automatique dans la recherche", "Show autocomplete in search": "Afficher la saisie automatique dans la recherche",

View File

@ -135,7 +135,7 @@
"Settings quality": "Pengaturan kualitas", "Settings quality": "Pengaturan kualitas",
"Content language": "Bahasa konten", "Content language": "Bahasa konten",
"Content country": "Wilayah konten", "Content country": "Wilayah konten",
"Website": "Website", "Website": "Situs",
"Visit website": "Visit website", "Visit website": "Kunjungi situs web",
"New update available:": "New update available:" "New update available:": "Pembaruan tersedia:"
} }

View File

@ -84,17 +84,17 @@
"Download Quality": "Qualità Download", "Download Quality": "Qualità Download",
"Downloads Directory": "Cartella Download", "Downloads Directory": "Cartella Download",
"Simultaneous downloads": "Download simultanei", "Simultaneous downloads": "Download simultanei",
"Always show download confirm dialog before downloading.": "Mostra sempre la conferma di download prima di scaricare.", "Always show download confirm dialog before downloading.": "Mostra sempre la finestra di conferma download prima di scaricare.",
"Show download dialog": "Mostra finestra di download", "Show download dialog": "Mostra finestra di download",
"Create folders for artists": "Crea cartelle per gli artisti", "Create folders for artists": "Crea cartelle per gli artisti",
"Create folders for albums": "Crea cartelle per gli album", "Create folders for albums": "Crea cartelle per gli album",
"Download lyrics": "Scarica testo", "Download lyrics": "Scarica testi .LRC",
"Variables": "Variabili", "Variables": "Variabili",
"UI": "Interfaccia", "UI": "Interfaccia",
"Show autocomplete in search": "Mostra elenco autocompletamento", "Show autocomplete in search": "Mostra elenco autocompletamento",
"Integrations": "Integrazioni", "Integrations": "Integrazioni",
"This allows listening history, flow and recommendations to work properly.": "Questo permette di usare la cronologia, il Flow e le raccomandazioni per funzionare correttamente.", "This allows listening history, flow and recommendations to work properly.": "Abilitalo se vuoi che la cronologia, il Flow e i raccomandazioni funzionino correttamente.",
"Log track listens to Deezer": "Registra gli ascolti delle tracce a Deezer", "Log track listens to Deezer": "Logging cronologia degli ascolti",
"Connect your LastFM account to allow scrobbling.": "Collega il tuo account LastFM per consentire lo scrobbling.", "Connect your LastFM account to allow scrobbling.": "Collega il tuo account LastFM per consentire lo scrobbling.",
"Login with LastFM": "Accedi con LastFM", "Login with LastFM": "Accedi con LastFM",
"Disconnect LastFM": "Disconnetti LastFM", "Disconnect LastFM": "Disconnetti LastFM",
@ -115,10 +115,10 @@
"Create folders for playlists": "Crea cartelle per le playlist", "Create folders for playlists": "Crea cartelle per le playlist",
"About": "Informazioni", "About": "Informazioni",
"Links:": "Link:", "Links:": "Link:",
"Telegram Releases": "Rilasci su Telegram", "Telegram Releases": "Canale Telegram (releases)",
"Telegram Group": "Gruppo Telegram", "Telegram Group": "Gruppo Telegram",
"Discord": "Discord", "Discord": "Discord",
"Telegram Android Group": "Gruppo Telegram Android", "Telegram Android Group": "Gruppo Telegram per Android",
"Credits:": "Crediti:", "Credits:": "Crediti:",
"Agree": "Accetta", "Agree": "Accetta",
"Dismiss": "Rifiuta", "Dismiss": "Rifiuta",
@ -129,13 +129,13 @@
"Playlist deleted!": "Playlist eliminata!", "Playlist deleted!": "Playlist eliminata!",
"Delete": "Elimina", "Delete": "Elimina",
"Are you sure you want to delete this playlist?": "Sei sicuro di voler eliminare questa playlist?", "Are you sure you want to delete this playlist?": "Sei sicuro di voler eliminare questa playlist?",
"Force white tray icon": "Forza icona bianca nel vassoio", "Force white tray icon": "Forza icona bianca nell'area notifiche",
"Force default (white) tray icon if theme incorrectly detected. Requires restart.": "Forza l'icona predefinita (bianca) nel vassoio se il tema è stato rilevato in modo errato. Richiede il riavvio.", "Force default (white) tray icon if theme incorrectly detected. Requires restart.": "Forza l'icona predefinita (bianca) nell'area notifiche se il tema è stato rilevato in modo errato. Richiede il riavvio.",
"Share": "Condividi", "Share": "Condividi",
"Settings quality": "Qualità delle Impostazioni", "Settings quality": "Qualità delle Impostazioni",
"Content language": "Lingua dei contenuti", "Content language": "Lingua dei contenuti",
"Content country": "Contenuto del Paese", "Content country": "Paese dei contenuti",
"Website": "Website", "Website": "Sito Web",
"Visit website": "Visit website", "Visit website": "Visita il sito",
"New update available:": "New update available:" "New update available:": "Nuovo aggiornamento disponibile:"
} }

View File

@ -39,7 +39,7 @@
"Add to queue": "Adicionar à fila", "Add to queue": "Adicionar à fila",
"Remove from library": "Remover da biblioteca", "Remove from library": "Remover da biblioteca",
"Remove from playlist": "Remover da playlist", "Remove from playlist": "Remover da playlist",
"Play track mix": "Reproduzir mistura de trilha", "Play track mix": "Reproduzir mix da faixa",
"Go to": "Ir para", "Go to": "Ir para",
"Track Mix": "Faixa Mix", "Track Mix": "Faixa Mix",
"Duration": "Duração", "Duration": "Duração",

View File

@ -119,11 +119,11 @@
"Telegram Group": "Группа в Telegram", "Telegram Group": "Группа в Telegram",
"Discord": "Discord", "Discord": "Discord",
"Telegram Android Group": "Обсуждение Freezer Android", "Telegram Android Group": "Обсуждение Freezer Android",
"Credits:": "Благодарность:", "Credits:": "Благодарности:",
"Agree": "Согласен", "Agree": "Принять",
"Dismiss": "Отмена", "Dismiss": "Отмена",
"Added to playlist!": "Добавлено в плейлист!", "Added to playlist!": "Добавлено в плейлист!",
"Added to library!": "Добавлено в избранное!", "Added to library!": "Добавлено в Избранное!",
"Removed from library!": "Удалено из Избранного!", "Removed from library!": "Удалено из Избранного!",
"Removed from playlist!": "Удалено из плейлиста!", "Removed from playlist!": "Удалено из плейлиста!",
"Playlist deleted!": "Плейлист удален!", "Playlist deleted!": "Плейлист удален!",
@ -135,7 +135,7 @@
"Settings quality": "Качество настроек", "Settings quality": "Качество настроек",
"Content language": "Язык контента", "Content language": "Язык контента",
"Content country": "Страна контента", "Content country": "Страна контента",
"Website": "Website", "Website": "Веб-сайт",
"Visit website": "Visit website", "Visit website": "Посетить веб-сайт",
"New update available:": "New update available:" "New update available:": "Доступна новая версия:"
} }

View File

@ -110,11 +110,11 @@
"Settings saved!": "Nastavenia uložené!", "Settings saved!": "Nastavenia uložené!",
"Available only in Electron version!": "Iba vo verzii Electron!", "Available only in Electron version!": "Iba vo verzii Electron!",
"Crossfade (ms)": "Prelínanie (ms)", "Crossfade (ms)": "Prelínanie (ms)",
"Select primary color": "Vybrať primárnu farbu", "Select primary color": "Hlavná farba",
"Light theme": "Svetlá téma", "Light theme": "Svetlá téma",
"Create folders for playlists": "Vytvoriť priečinky pre playlisty", "Create folders for playlists": "Vytvoriť priečinky pre playlisty",
"About": "O aplikácii", "About": "O aplikácii",
"Links:": "Linky:", "Links:": "Odkazy:",
"Telegram Releases": "Telegram vydania", "Telegram Releases": "Telegram vydania",
"Telegram Group": "Telegram skupina", "Telegram Group": "Telegram skupina",
"Discord": "Discord", "Discord": "Discord",

View File

@ -106,7 +106,7 @@
"Other": "Diğer", "Other": "Diğer",
"Minimize to tray": "Sistem tray'e küçülsün", "Minimize to tray": "Sistem tray'e küçülsün",
"Don't minimize to tray": "Sistem tray'e küçülmesin tamamen kapansın", "Don't minimize to tray": "Sistem tray'e küçülmesin tamamen kapansın",
"Close on exit": "Programı kapattığınızda", "Close on exit": "Programı kapattığınızda tamamen kapansın",
"Settings saved!": "Ayarlar kaydedildi!", "Settings saved!": "Ayarlar kaydedildi!",
"Available only in Electron version!": "Sadece Electron versiyonunda mevcuttur!", "Available only in Electron version!": "Sadece Electron versiyonunda mevcuttur!",
"Crossfade (ms)": "Crossfade (ms)", "Crossfade (ms)": "Crossfade (ms)",
@ -135,7 +135,7 @@
"Settings quality": "Kalite ayarları", "Settings quality": "Kalite ayarları",
"Content language": "İçerik dili", "Content language": "İçerik dili",
"Content country": "İçerik ülkesi", "Content country": "İçerik ülkesi",
"Website": "Website", "Website": "İnternet sitesi",
"Visit website": "Visit website", "Visit website": "İnternet sitesini ziyaret et",
"New update available:": "New update available:" "New update available:": "Yeni güncelleme mevcut:"
} }

View File

@ -39,14 +39,14 @@
"Add to queue": "Додати до черги", "Add to queue": "Додати до черги",
"Remove from library": "Видалити з бібліотеки", "Remove from library": "Видалити з бібліотеки",
"Remove from playlist": "Видалити з плейлиста", "Remove from playlist": "Видалити з плейлиста",
"Play track mix": "Відтворити трек мікс", "Play track mix": "Відтворити мікс треків",
"Go to": "Перейти до", "Go to": "Перейти до",
"Track Mix": "Трек Мікс", "Track Mix": "Трек Мікс",
"Duration": "Тривалість", "Duration": "Тривалість",
"Released": "Реліз", "Released": "Реліз",
"Disk": "Диск", "Disk": "Диск",
"albums": "альбоми", "albums": "альбоми",
"Play top": "Відтворити top", "Play top": "Відтворити топ",
"Radio": "Радіо", "Radio": "Радіо",
"Show all albums": "Показати всі альбоми", "Show all albums": "Показати всі альбоми",
"Show all singles": "Показати всі композиції", "Show all singles": "Показати всі композиції",
@ -71,7 +71,7 @@
"Logout": "Вийти", "Logout": "Вийти",
"Login using browser": "Вхід через браузер", "Login using browser": "Вхід через браузер",
"Please login using your Deezer account:": "Будь ласка, увійдіть, використовуючи свій обліковий запис Deezer:", "Please login using your Deezer account:": "Будь ласка, увійдіть, використовуючи свій обліковий запис Deezer:",
"...or paste your ARL/Token below:": "...або вставте свій ARL/Token нижче:", "...or paste your ARL/Token below:": "...або вставте свій ARL/токен нижче:",
"ARL/Token": "ARL/токен", "ARL/Token": "ARL/токен",
"Login": "Увійти", "Login": "Увійти",
"By using this program, you disagree with Deezer's ToS.": "Використовуючи цю програму, ви не погоджуєтесь із умовами використання Deezer.", "By using this program, you disagree with Deezer's ToS.": "Використовуючи цю програму, ви не погоджуєтесь із умовами використання Deezer.",
@ -85,7 +85,7 @@
"Downloads Directory": "Тека для завантажень", "Downloads Directory": "Тека для завантажень",
"Simultaneous downloads": "Одночасних завантажень", "Simultaneous downloads": "Одночасних завантажень",
"Always show download confirm dialog before downloading.": "Завжди показувати вікно підтвердження перед завантаженням.", "Always show download confirm dialog before downloading.": "Завжди показувати вікно підтвердження перед завантаженням.",
"Show download dialog": "Показувати діалогове вікно звантаження", "Show download dialog": "Показувати діалогове вікно завантаження",
"Create folders for artists": "Створити теки для виконавців", "Create folders for artists": "Створити теки для виконавців",
"Create folders for albums": "Створити теки для альбомів", "Create folders for albums": "Створити теки для альбомів",
"Download lyrics": "Завантажити тексти пісень", "Download lyrics": "Завантажити тексти пісень",
@ -130,8 +130,8 @@
"Delete": "Видалити", "Delete": "Видалити",
"Are you sure you want to delete this playlist?": "Ви впевнені, що хочете видалити цей плейлист?", "Are you sure you want to delete this playlist?": "Ви впевнені, що хочете видалити цей плейлист?",
"Force white tray icon": "Примусово використовувати білий значок трею", "Force white tray icon": "Примусово використовувати білий значок трею",
"Force default (white) tray icon if theme incorrectly detected. Requires restart.": "Примусово використовувати (білий) значок, якщо тема визначена неправильно. Необхідне перезавантаження.", "Force default (white) tray icon if theme incorrectly detected. Requires restart.": "Примусово використовувати стандартний (білий) значок, якщо тема визначена неправильно. Необхідне перезавантаження.",
"Share": "Поширити", "Share": "Поділитись",
"Settings quality": "Налаштування якості", "Settings quality": "Налаштування якості",
"Content language": "Мова контенту", "Content language": "Мова контенту",
"Content country": "Країна контенту", "Content country": "Країна контенту",

View File

@ -0,0 +1,141 @@
{
"Home": "Home",
"Browse": "Bwowse",
"Library": "Wibwawy",
"Tracks": "Twacks",
"Playlists": "Pwaywists",
"Albums": "Awbums",
"Artists": "Awtists",
"More": "Mowe",
"Settings": "Settings",
"Downloads": "Downwoads",
"Search or paste Deezer URL. Use / to quickly focus.": "Seawch ow paste Deezew URL. Use \"/\" t-to quickwy focus.",
"Play": "Pway",
"Add to library": "Add t-to wibwawy",
"Download": "Downwoad",
"fans": "fams",
"tracks": "twacks",
"Quality": "Quawity >w<",
"Estimated size:": "Estimated size uwu:",
"Start downloading": "Stawt downwoading",
"Cancel": "Cancew :<",
"Stream logging is disabled!": "Stweam wogging is d-disabwed?!?",
"Enable it in settings for history to work properly.": "Enyabwe i-it in settings fow histowy t-to wowk (・`ω´・) pwopewwy.",
"History": "Histowy :>",
"Create new playlist": "Cweate nyew pwaywist",
"TRACKS": "TWACKS",
"Sort by": "Sowt by",
"Date Added": "Date Added",
"Name (A-Z)": "Name (A-Z)",
"Artist (A-Z)": "Awtist (A-Z)",
"Album (A-Z)": "Awbum (A-Z)",
"Error loading lyrics or lyrics not found!": "Ewwow woading lywics ow (・`ω´・) lywics nyot found!!11",
"Create playlist": "Cweate pwaywist",
"Create": "Cweate",
"Add to playlist": "Add t-to pwaywist",
"Create new": "Cweate nyew",
"Remove": "Wemove",
"Play next": "Pway nyext",
"Add to queue": "Add t-to queue",
"Remove from library": "Wemuv fwom wibwawy",
"Remove from playlist": "Wemuv fwom pwaywist",
"Play track mix": "Pway twack mix",
"Go to": "Go t-to",
"Track Mix": "Twack Mix",
"Duration": "Duwation",
"Released": "Reweased",
"Disk": "Disk",
"albums": "awbums",
"Play top": "Pway t-top",
"Radio": "Wadio",
"Show all albums": "Show aww awbums",
"Show all singles": "Show aww singwes",
"Show more": "Show mowe",
"Downloaded": "Downwoaded",
"Queue": "Quewe",
"Total": "Totaw",
"Stop": "Stop >*<",
"Start": "Start :3",
"Show folder": "Show fowdew",
"Clear queue": "Cweaw quewe",
"Playing from": "Pwaying fwom",
"Info": "Info",
"Lyrics": "Lywics",
"Track number": "twack nyumbew",
"Disk number": "Disk nyumbew",
"Explicit": "Expwicit :<",
"Source": "Souwce",
"ID": "ID",
"Error logging in!": "Ewwow wogging in!!",
"Please try again later, or try another account.": "Pwease twy again Latew, ow (・`ω´・) twy anyothew account.",
"Logout": "Wogout",
"Login using browser": "wogin ;;w;; u-using bwowsew",
"Please login using your Deezer account:": "Pwease wogin u-using youw Deezew account:",
"...or paste your ARL/Token below:": "...ow paste youw ARL/Token below:",
"ARL/Token": "ARL/Token",
"Login": "wogin ;;w;;",
"By using this program, you disagree with Deezer's ToS.": "By u-using this pwogwam, you disagwee with Deezew's ToS.",
"Only in Electron version!": "Onwy in Ewectwon vewsion?!?",
"Search results for:": "Seawch wesuwts for:",
"Error loading data!": "Ewwow w-w-woading data?!?!",
"Try again later!": "Twy again watew!!11",
"Search": "Seawch",
"Streaming Quality": "S-Stweaming Quawity >w<",
"Download Quality": "Downwoad Quawity >w<",
"Downloads Directory": "Downwoads Diwectowy",
"Simultaneous downloads": "Simuwtanyeous downwoads",
"Always show download confirm dialog before downloading.": "Awways show downwoad confiwm diawog befowe downwoading. UwU",
"Show download dialog": "Show downwoad diawog",
"Create folders for artists": "Cweate fowdews fow awtists",
"Create folders for albums": "Cweate fowdews fow awbums",
"Download lyrics": "Downwoad wywics",
"Variables": "Vawiabwes",
"UI": "UI",
"Show autocomplete in search": "Show autocompwete in seawch",
"Integrations": "Integwations",
"This allows listening history, flow and recommendations to work properly.": "This awwows wistenying histowy, flow and wecommendations t-to wowk (・`ω´・) pwopewwy.",
"Log track listens to Deezer": "Log twack wistens t-to Deezew",
"Connect your LastFM account to allow scrobbling.": "Connyect youw LastFM account t-to awwow scwobbwing.",
"Login with LastFM": "wogin ;;w;; with LastFM",
"Disconnect LastFM": "Disconnyect LastFM",
"Requires restart to apply!": "Requiwes restawt t-to appwy?!?! ;;w;;",
"Enable Discord Rich Presence, requires restart to toggle!": "Enyabwe Discowd Rich Pwesence, requiwes restawt t-to toggwe!!11",
"Discord Rich Presence": "discowd Rich Pwesence",
"Enable Discord join button for syncing tracks, requires restart to toggle!": "Enyabwe Discowd join button (・`ω´・) fow syncing twacks, requires restaw t-to toggwe!!11",
"Discord Join Button": "discowd Join Button",
"Other": "Othew",
"Minimize to tray": "Minyimize t-to tway",
"Don't minimize to tray": "Don't minyimize t-to tway",
"Close on exit": "Cwose on exit",
"Settings saved!": "Settings saved!",
"Available only in Electron version!": "avaiwabwe onwy in Ewectwon vewsion?!?",
"Crossfade (ms)": "cwossfade (ms)",
"Select primary color": "Sewect pwimawy c-cowow",
"Light theme": "Shit theme",
"Create folders for playlists": "Cweate fowdews fow pwaywists",
"About": "About owo",
"Links:": "Links:",
"Telegram Releases": "Tewegwam ÚwÚ Reweases",
"Telegram Group": "Tewegwam ÚwÚ Gwoup",
"Discord": "Discowd",
"Telegram Android Group": "Tewegwam ÚwÚ Andwoid Gwoup",
"Credits:": "Credits:",
"Agree": "Agwee",
"Dismiss": "D-Dismiss",
"Added to playlist!": "Added t-to pwaywist!",
"Added to library!": "Added t-to Libwawy!",
"Removed from library!": "Remuvd fwom wibwawy!",
"Removed from playlist!": "Remuvd fwom pwaywist!",
"Playlist deleted!": "Pwaywist deweted!",
"Delete": "Dewete",
"Are you sure you want to delete this playlist?": "Awe you suwe you w-want t-to dewete this p-p-pwaywist?",
"Force white tray icon": "Fowce white tway icon",
"Force default (white) tray icon if theme incorrectly detected. Requires restart.": "Fowce defauwt (white) tway icon if theme incowwectwy detected. ^w^ Wequiwes westawt.",
"Share": "Shawe",
"Settings quality": "Settings quawity",
"Content language": "Content wanguage",
"Content country": "Content countwy",
"Website": "Website",
"Visit website": "Visit website",
"New update available:": "Nyew update available:"
}

View File

@ -0,0 +1,141 @@
{
"Home": "Trang chủ",
"Browse": "Duyệt",
"Library": "Thư viện",
"Tracks": "Bài hát",
"Playlists": "Danh sách phát",
"Albums": "Album",
"Artists": "Nghệ sĩ",
"More": "Thêm",
"Settings": "Cài đặt",
"Downloads": "Danh sách tải",
"Search or paste Deezer URL. Use / to quickly focus.": "Search or paste Deezer URL. Use \"/\" to quickly focus.",
"Play": "Play",
"Add to library": "Add to library",
"Download": "Download",
"fans": "fans",
"tracks": "tracks",
"Quality": "Quality",
"Estimated size:": "Estimated size:",
"Start downloading": "Start downloading",
"Cancel": "Cancel",
"Stream logging is disabled!": "Stream logging is disabled!",
"Enable it in settings for history to work properly.": "Enable it in settings for history to work properly.",
"History": "History",
"Create new playlist": "Create new playlist",
"TRACKS": "TRACKS",
"Sort by": "Sort by",
"Date Added": "Date Added",
"Name (A-Z)": "Name (A-Z)",
"Artist (A-Z)": "Artist (A-Z)",
"Album (A-Z)": "Album (A-Z)",
"Error loading lyrics or lyrics not found!": "Error loading lyrics or lyrics not found!",
"Create playlist": "Create playlist",
"Create": "Create",
"Add to playlist": "Add to playlist",
"Create new": "Create new",
"Remove": "Remove",
"Play next": "Play next",
"Add to queue": "Add to queue",
"Remove from library": "Remove from library",
"Remove from playlist": "Remove from playlist",
"Play track mix": "Play track mix",
"Go to": "Go to",
"Track Mix": "Track Mix",
"Duration": "Duration",
"Released": "Released",
"Disk": "Disk",
"albums": "albums",
"Play top": "Play top",
"Radio": "Radio",
"Show all albums": "Show all albums",
"Show all singles": "Show all singles",
"Show more": "Show more",
"Downloaded": "Downloaded",
"Queue": "Queue",
"Total": "Total",
"Stop": "Stop",
"Start": "Start",
"Show folder": "Show folder",
"Clear queue": "Clear queue",
"Playing from": "Playing from",
"Info": "Info",
"Lyrics": "Lyrics",
"Track number": "Track number",
"Disk number": "Disk number",
"Explicit": "Explicit",
"Source": "Source",
"ID": "ID",
"Error logging in!": "Error logging in!",
"Please try again later, or try another account.": "Please try again later, or try another account.",
"Logout": "Logout",
"Login using browser": "Login using browser",
"Please login using your Deezer account:": "Please login using your Deezer account:",
"...or paste your ARL/Token below:": "...or paste your ARL/Token below:",
"ARL/Token": "ARL/Token",
"Login": "Login",
"By using this program, you disagree with Deezer's ToS.": "By using this program, you disagree with Deezer's ToS.",
"Only in Electron version!": "Only in Electron version!",
"Search results for:": "Search results for:",
"Error loading data!": "Error loading data!",
"Try again later!": "Try again later!",
"Search": "Search",
"Streaming Quality": "Streaming Quality",
"Download Quality": "Download Quality",
"Downloads Directory": "Downloads Directory",
"Simultaneous downloads": "Simultaneous downloads",
"Always show download confirm dialog before downloading.": "Always show download confirm dialog before downloading.",
"Show download dialog": "Show download dialog",
"Create folders for artists": "Create folders for artists",
"Create folders for albums": "Create folders for albums",
"Download lyrics": "Download lyrics",
"Variables": "Variables",
"UI": "UI",
"Show autocomplete in search": "Show autocomplete in search",
"Integrations": "Integrations",
"This allows listening history, flow and recommendations to work properly.": "This allows listening history, flow and recommendations to work properly.",
"Log track listens to Deezer": "Log track listens to Deezer",
"Connect your LastFM account to allow scrobbling.": "Connect your LastFM account to allow scrobbling.",
"Login with LastFM": "Login with LastFM",
"Disconnect LastFM": "Disconnect LastFM",
"Requires restart to apply!": "Requires restart to apply!",
"Enable Discord Rich Presence, requires restart to toggle!": "Enable Discord Rich Presence, requires restart to toggle!",
"Discord Rich Presence": "Discord Rich Presence",
"Enable Discord join button for syncing tracks, requires restart to toggle!": "Enable Discord join button for syncing tracks, requires restart to toggle!",
"Discord Join Button": "Discord Join Button",
"Other": "Other",
"Minimize to tray": "Minimize to tray",
"Don't minimize to tray": "Don't minimize to tray",
"Close on exit": "Close on exit",
"Settings saved!": "Settings saved!",
"Available only in Electron version!": "Available only in Electron version!",
"Crossfade (ms)": "Crossfade (ms)",
"Select primary color": "Select primary color",
"Light theme": "Light theme",
"Create folders for playlists": "Create folders for playlists",
"About": "About",
"Links:": "Links:",
"Telegram Releases": "Telegram Releases",
"Telegram Group": "Telegram Group",
"Discord": "Discord",
"Telegram Android Group": "Telegram Android Group",
"Credits:": "Credits:",
"Agree": "Agree",
"Dismiss": "Dismiss",
"Added to playlist!": "Added to playlist!",
"Added to library!": "Added to library!",
"Removed from library!": "Removed from library!",
"Removed from playlist!": "Removed from playlist!",
"Playlist deleted!": "Playlist deleted!",
"Delete": "Delete",
"Are you sure you want to delete this playlist?": "Are you sure you want to delete this playlist?",
"Force white tray icon": "Force white tray icon",
"Force default (white) tray icon if theme incorrectly detected. Requires restart.": "Force default (white) tray icon if theme incorrectly detected. Requires restart.",
"Share": "Share",
"Settings quality": "Settings quality",
"Content language": "Content language",
"Content country": "Content country",
"Website": "Website",
"Visit website": "Visit website",
"New update available:": "New update available:"
}

View File

@ -286,7 +286,6 @@ new Vue({
} }
//Restore original volume //Restore original volume
this.audio.voume = currentVolume; this.audio.voume = currentVolume;
this.volume = currentVolume;
oldAudio.pause(); oldAudio.pause();
@ -303,7 +302,8 @@ new Vue({
} }
}); });
this.audio.muted = this.muted; this.audio.muted = this.muted;
this.audio.volume = this.volume; //Set volume
this.audio.volume = this.volume * this.volume;
this.audio.addEventListener('ended', async () => { this.audio.addEventListener('ended', async () => {
if (this.gapless.crossfade) return; if (this.gapless.crossfade) return;
@ -518,11 +518,6 @@ new Vue({
let res = await this.$axios.get('/settings'); let res = await this.$axios.get('/settings');
this.settings = res.data; this.settings = res.data;
this.$vuetify.theme.themes.dark.primary = this.settings.primaryColor; this.$vuetify.theme.themes.dark.primary = this.settings.primaryColor;
this.$vuetify.theme.themes.light.primary = this.settings.primaryColor;
if (this.settings.lightTheme) {
this.$vuetify.theme.dark = false;
this.$vuetify.theme.light = true;
}
i18n.locale = this.settings.language; i18n.locale = this.settings.language;
this.volume = this.settings.volume; this.volume = this.settings.volume;
@ -621,23 +616,19 @@ new Vue({
//<- -5s (from YT) //<- -5s (from YT)
if (e.code == "ArrowLeft") this.$root.seek((this.position - 5000)); if (e.code == "ArrowLeft") this.$root.seek((this.position - 5000));
// ^ v - Volume // ^ v - Volume
if (e.code == 'ArrowUp' && this.audio) { if (e.code == 'ArrowUp') {
if ((this.audio.volume + 0.05) > 1) { if ((this.volume + 0.05) > 1) {
this.audio.volume = 1.00;
this.volume = 1.00; this.volume = 1.00;
return; return;
} }
this.audio.volume += 0.05; this.volume += 0.05;
this.volume = this.audio.volume;
} }
if (e.code == 'ArrowDown' && this.audio) { if (e.code == 'ArrowDown') {
if ((this.audio.volume - 0.05) < 0) { if ((this.volume - 0.05) < 0) {
this.audio.volume = 0.00;
this.volume = 0.00; this.volume = 0.00;
return; return;
} }
this.audio.volume -= 0.05; this.volume -= 0.05;
this.volume = this.audio.volume;
} }
}); });
}, },
@ -647,6 +638,11 @@ new Vue({
state() { state() {
this.updateMediaSession(); this.updateMediaSession();
this.updateState(); this.updateState();
},
//Update volume with curve
volume() {
if (this.audio)
this.audio.volume = this.volume * this.volume;
} }
}, },

View File

@ -102,9 +102,8 @@
<v-dialog v-model='xandarDialog' max-width='512'> <v-dialog v-model='xandarDialog' max-width='512'>
<v-card elevation='2'> <v-card elevation='2'>
<v-card-title class="headline"> <v-card-title class="headline">
You have been judged by Xandar f
</v-card-title> </v-card-title>
<v-card-text>Linux good, Windows bad</v-card-text>
<v-card-actions> <v-card-actions>
<v-spacer></v-spacer> <v-spacer></v-spacer>
<v-btn color="red darken-1" text @click="xandarDialog = false"> <v-btn color="red darken-1" text @click="xandarDialog = false">

View File

@ -15,9 +15,9 @@
<h1 class='py-2'>{{section.title}}</h1> <h1 class='py-2'>{{section.title}}</h1>
<div class='d-flex' style='overflow-x: auto; overflow-y: hidden;'> <div class='d-flex' style='overflow-x: auto; overflow-y: hidden;'>
<div v-for='(item, index) in section.items' :key='"item"+index' class='mr-4 my-2'> <div v-for='(item, index) in section.items' :key='"item"+index' class='mr-4 my-2'>
<PlaylistTile v-if='item.type == "playlist"' :playlist='item.data' card></PlaylistTile> <PlaylistTile v-if='item.type == "playlist"' :playlist='item.data' card class='mb-4'></PlaylistTile>
<ArtistTile v-if='item.type == "artist"' :artist='item.data' card></ArtistTile> <ArtistTile v-if='item.type == "artist"' :artist='item.data' card></ArtistTile>
<DeezerChannel v-if='item.type == "channel"' :channel='item.data'></DeezerChannel> <DeezerChannel v-if='item.type == "channel"' :channel='item.data' class='mb-2'></DeezerChannel>
<AlbumTile v-if='item.type == "album"' :album='item.data' card></AlbumTile> <AlbumTile v-if='item.type == "album"' :album='item.data' card></AlbumTile>
<SmartTrackList v-if='item.type == "smarttracklist" || item.type == "flow"' :stl='item.data'></SmartTrackList> <SmartTrackList v-if='item.type == "smarttracklist" || item.type == "flow"' :stl='item.data'></SmartTrackList>
</div> </div>

View File

@ -294,6 +294,7 @@ export default {
await this.$axios.put('/library/track?id=' + this.$root.track.id); await this.$axios.put('/library/track?id=' + this.$root.track.id);
this.$root.libraryTracks.push(this.$root.track.id); this.$root.libraryTracks.push(this.$root.track.id);
this.inLibrary = true; this.inLibrary = true;
this.$root.globalSnackbar = this.$t('Added to library!'); this.$root.globalSnackbar = this.$t('Added to library!');
}, },
//Download current track //Download current track
@ -302,7 +303,6 @@ export default {
}, },
//Save volume //Save volume
updateVolume(v) { updateVolume(v) {
if (this.$root.audio) this.$root.audio.volume = v;
this.$root.volume = v; this.$root.volume = v;
}, },
//Repeat button click //Repeat button click

View File

@ -143,17 +143,6 @@
</v-list-item-content> </v-list-item-content>
</v-list-item> </v-list-item>
<!-- Light theme -->
<v-list-item>
<v-list-item-action>
<v-checkbox class='pl-2' v-model='$root.settings.lightTheme' @change='changeLightTheme'></v-checkbox>
</v-list-item-action>
<v-list-item-content>
<v-list-item-title>{{$t("Light theme")}}</v-list-item-title>
</v-list-item-content>
</v-list-item>
<!-- Accounts --> <!-- Accounts -->
<v-subheader>{{$t("Integrations")}}</v-subheader> <v-subheader>{{$t("Integrations")}}</v-subheader>
<v-divider></v-divider> <v-divider></v-divider>
@ -320,6 +309,8 @@ export default {
languages: [ languages: [
{code: 'en', name: 'English'}, {code: 'en', name: 'English'},
{code: 'ar', name: 'Arabic'}, {code: 'ar', name: 'Arabic'},
{code: 'hr', name: 'Croatian'},
{code: 'fil', name: 'Filipino'},
{code: 'fr', name: 'French'}, {code: 'fr', name: 'French'},
{code: 'de', name: 'German'}, {code: 'de', name: 'German'},
{code: 'el', name: 'Greek'}, {code: 'el', name: 'Greek'},
@ -332,7 +323,8 @@ export default {
{code: 'sk', name: 'Slovak'}, {code: 'sk', name: 'Slovak'},
{code: 'es', name: 'Spanish'}, {code: 'es', name: 'Spanish'},
{code: 'tr', name: 'Turkish'}, {code: 'tr', name: 'Turkish'},
{code: 'uk', name: 'Ukrainian'} {code: 'uk', name: 'Ukrainian'},
{code: 'vi', name: 'Vietnamese'}
], ],
colorPicker: false, colorPicker: false,
primaryColorIndex: 0, primaryColorIndex: 0,

View File

@ -11,11 +11,19 @@
border-radius: 5px; border-radius: 5px;
} }
// ::-webkit-scrollbar-track:hover {
// background-color: #080808;
// }
::-webkit-scrollbar-thumb { ::-webkit-scrollbar-thumb {
border-radius: 5px; border-radius: 5px;
background-color: #363636; background-color: #363636;
} }
::-webkit-scrollbar-thumb:hover {
background-color: #404040;
}
::-webkit-scrollbar-thumb:horizontal {
background-color: #36363690;
}
::-webkit-scrollbar-thumb:horizontal:hover {
background-color: #404040;
}

View File

@ -1,7 +1,7 @@
{ {
"name": "freezer", "name": "freezer",
"private": true, "private": true,
"version": "1.1.10", "version": "1.1.11",
"description": "", "description": "",
"main": "background.js", "main": "background.js",
"scripts": { "scripts": {

View File

@ -89,7 +89,7 @@ class Playlist {
this.id = json.PLAYLIST_ID.toString(), this.id = json.PLAYLIST_ID.toString(),
this.title = json.TITLE, this.title = json.TITLE,
this.trackCount = json.NB_SONG ? json.NB_SONG : tracksJson.total; this.trackCount = json.NB_SONG ? json.NB_SONG : tracksJson.total;
this.image = new DeezerImage(json.PLAYLIST_PICTURE, 'playlist'); this.image = new DeezerImage(json.PLAYLIST_PICTURE, json.PICTURE_TYPE);
this.fans = json.NB_FAN; this.fans = json.NB_FAN;
this.duration = parseInt((json.DURATION ? json.DURATION : 0).toString(), 10) * 1000; this.duration = parseInt((json.DURATION ? json.DURATION : 0).toString(), 10) * 1000;
this.description = json.DESCRIPTION; this.description = json.DESCRIPTION;

View File

@ -69,8 +69,9 @@ app.post('/settings', async (req, res) => {
app.post('/authorize', async (req, res) => { app.post('/authorize', async (req, res) => {
if (!req.body.arl || req.body.arl.length < 100) return res.status(500).send('Invalid ARL'); if (!req.body.arl || req.body.arl.length < 100) return res.status(500).send('Invalid ARL');
//Check if arl valid //Check if ARL valid
deezer.arl = req.body.arl; let electron = deezer.electron;
deezer = new DeezerAPI(req.body.arl, electron);
settings.arl = req.body.arl; settings.arl = req.body.arl;
if (await (deezer.authorize())) { if (await (deezer.authorize())) {

View File

@ -36,7 +36,6 @@ class Settings {
this.language = 'en'; this.language = 'en';
this.crossfadeDuration = 3000; this.crossfadeDuration = 3000;
this.lightTheme = false;
this.playlistFolder = false; this.playlistFolder = false;
this.forceWhiteTrayIcon = false; this.forceWhiteTrayIcon = false;

View File

@ -1,7 +1,7 @@
{ {
"name": "freezer", "name": "freezer",
"private": true, "private": true,
"version": "1.1.10", "version": "1.1.11",
"description": "", "description": "",
"scripts": { "scripts": {
"pack": "electron-builder --dir", "pack": "electron-builder --dir",