1.1.3 - Autocompletion fixes, crossfade fixes, more languages

This commit is contained in:
exttex 2020-11-03 21:41:28 +01:00
parent b5771b8a25
commit 7eb047bae1
37 changed files with 354 additions and 172 deletions

View File

@ -252,6 +252,16 @@
</v-row>
</v-footer>
<!-- Global snackbar -->
<v-snackbar timeout='2000' v-model='globalSnackbar'>
{{this.$root.globalSnackbar}}
<template v-slot:action='{attrs}'>
<v-btn text v-bind="attrs" @click='globalSnackbar = false' color='primary'>
{{$t("Dismiss")}}
</v-btn>
</template>
</v-snackbar>
</v-app>
</template>
@ -287,7 +297,10 @@ export default {
searchLoading: false,
searchInput: null,
suggestions: [],
preventDoubleEnter: false
preventDoubleEnter: false,
cancelSuggestions: false,
globalSnackbar: false
}
},
methods: {
@ -355,6 +368,8 @@ export default {
this.searchLoading = false;
} else {
//Normal search
this.cancelSuggestions = true;
this.suggestions = [];
this.$router.push({path: '/search', query: {q: query}});
}
},
@ -417,6 +432,14 @@ export default {
'$root.position'() {
this.position = (this.$root.position / this.$root.duration()) * 100;
},
//Global snackbar
'$root.globalSnackbar'() {
if (!this.$root.globalSnackbar) return;
this.globalSnackbar = true;
setTimeout(() => {
this.$root.globalSnackbar = null;
}, 2000);
},
//Autofill
searchInput(query) {
//Filters
@ -437,6 +460,12 @@ export default {
if (query != this.searchInput) return;
this.$axios.get('/suggestions/' + encodeURIComponent(query)).then((res) => {
if (query != this.searchInput) return;
//Cancel suggestions to prevent autocompletion when already searched
if (this.cancelSuggestions) {
this.cancelSuggestions = false;
this.searchLoading = false;
return;
}
this.suggestions = res.data;
this.searchLoading = false;
});

View File

@ -134,8 +134,9 @@ export default {
});
this.$emit('clicked')
},
addLibrary() {
this.$axios.put(`/library/album?id=${this.album.id}`);
async addLibrary() {
await this.$axios.put(`/library/album?id=${this.album.id}`);
this.$root.globalSnackbar = this.$t('Added to library!');
},
//Add to downloads
async download() {

View File

@ -67,8 +67,9 @@ export default {
}
},
methods: {
addLibrary() {
this.$axios.put(`/library/artist&id=${this.artist.id}`);
async addLibrary() {
await this.$axios.put(`/library/artist&id=${this.artist.id}`);
this.$root.globalSnackbar = this.$t('Added to library!');
},
click() {
//Navigate to details

View File

@ -96,12 +96,9 @@ export default {
if (this.currentLyricIndex == this.currentLyric()) return;
this.currentLyricIndex = this.currentLyric();
//Roughly middle
let offset = window.innerHeight / 2 - 500;
if (!this.$refs["l"+this.currentLyricIndex]) return;
this.$refs.content.scrollTo({
top: this.$refs["l"+this.currentLyricIndex][0].offsetTop + offset,
top: this.$refs["l"+this.currentLyricIndex][0].offsetTop - (window.innerHeight / 2.42),
behavior: 'smooth'
});
},

View File

@ -42,6 +42,7 @@
</v-card-text>
</v-card>
</div>
</template>
@ -58,7 +59,7 @@ export default {
type: 'Private',
types: ['Private', 'Public'],
createLoading: false,
loading: false,
playlists: []
}
@ -84,11 +85,13 @@ export default {
this.createLoading = false;
this.$emit('created');
this.$emit('close');
this.$root.globalSnackbar = this.$t('Added to playlist!');
},
//Add track to playlist
async addTrack(playlist) {
await this.$axios.post(`/playlist/${playlist.id}/tracks`, {track: this.track.id});
this.$emit('close');
this.$root.globalSnackbar = this.$t('Added to playlist!');
}
},
async mounted() {

View File

@ -140,11 +140,13 @@ export default {
//Delete own playlist
if (this.playlist.user.id == this.$root.profile.id) {
await this.$axios.delete(`/playlist/${this.playlist.id}`);
this.$root.globalSnackbar = this.$t('Playlist deleted!');
} else {
//Remove from library
await this.$axios.get('/library/playlist&id=' + this.playlist.id);
this.$root.globalSnackbar = this.$t('Removed from library!');
}
this.$emit('remove');
},
async download() {

View File

@ -187,6 +187,7 @@ export default {
this.isLibrary = true;
this.$root.libraryTracks.push(this.track.id);
this.$axios.put(`/library/track?id=${this.track.id}`);
this.$root.globalSnackbar = this.$t('Added to library!');
},
goAlbum() {
this.$emit('redirect')
@ -206,6 +207,7 @@ export default {
this.isLibrary = false;
this.$root.libraryTracks.splice(this.$root.libraryTracks.indexOf(this.track.id), 1);
await this.$axios.delete(`/library/track?id=${this.track.id}`);
this.$root.globalSnackbar = this.$t('Removed from library!');
this.$emit('remove');
},
//Remove from playlist
@ -213,6 +215,7 @@ export default {
await this.$axios.delete(`/playlist/${this.playlistId}/tracks`, {
data: {track: this.track.id}
});
this.$root.globalSnackbar = this.$t('Removed from playlist!');
this.$emit('remove');
},
//Download track

View File

@ -120,5 +120,11 @@
"Discord": "دسكورد",
"Telegram Android Group": "مجموعة تيليجرام (أندرويد)",
"Credits:": "المساهمون:",
"Agree": "قبول"
"Agree": "قبول",
"Dismiss": "تجاهل",
"Added to playlist!": "تمت الإضافة إلى قائمة التشغيل!",
"Added to library!": "تمت الاضافة الى المكتبة!",
"Removed from library!": "الإزالة من المكتبة!",
"Removed from playlist!": "تمت الإزالة من قائمة التشغيل!",
"Playlist deleted!": "تم حذف قائمة التشغيل!"
}

View File

@ -120,5 +120,11 @@
"Discord": "Discord",
"Telegram Android Group": "Telegram Android-Gruppe",
"Credits:": "Credits:",
"Agree": "Einverstanden"
"Agree": "Einverstanden",
"Dismiss": "Verwerfen",
"Added to playlist!": "Zur Wiedergabeliste hinzugefügt!",
"Added to library!": "Zur Mediathek hinzufügen!",
"Removed from library!": "Aus der Mediathek entfernen!",
"Removed from playlist!": "Aus der Wiedergabeliste entfernt!",
"Playlist deleted!": "Wiedergabeliste gelöscht!"
}

View File

@ -109,16 +109,22 @@
"Close on exit": "Κλείσιμο κατά την έξοδο",
"Settings saved!": "Οι ρυθμίσεις αποθηκεύτηκαν!",
"Available only in Electron version!": "Διαθέσιμο μόνο στην έκδοση Electron!",
"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",
"Crossfade (ms)": "Μίξη ομαλής μετάβασης (ms)",
"Select primary color": "Επιλογή κύριου χρώματος",
"Light theme": "Φωτεινό θέμα",
"Create folders for playlists": "Δημιουργία φακέλων για λίστες αναπαραγωγής",
"About": "Σχετικά",
"Links:": "Σύνδεσμοι:",
"Telegram Releases": "Κυκλοφορίες Telegram",
"Telegram Group": "Ομάδα Telegram",
"Discord": "Discord",
"Telegram Android Group": "Telegram Android Group",
"Credits:": "Credits:",
"Agree": "Agree"
"Telegram Android Group": "Ομάδα Android Telegram",
"Credits:": "Συντελεστές:",
"Agree": "Αποδοχή",
"Dismiss": "Απόρριψη",
"Added to playlist!": "Προστέθηκε σε λίστα αναπαραγωγής!",
"Added to library!": "Προστέθηκε στη βιβλιοθήκη!",
"Removed from library!": "Καταργήθηκε από τη βιβλιοθήκη!",
"Removed from playlist!": "Καταργήθηκε από τη λίστα αναπαραγωγής!",
"Playlist deleted!": "Η λίστα αναπαραγωγής διαγράφηκε!"
}

View File

@ -120,6 +120,11 @@
"Discord": "Discord",
"Telegram Android Group": "Telegram Android Group",
"Credits:": "Credits:",
"Agree": "Agree"
"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!"
}

View File

@ -1,44 +1,44 @@
{
"Home": "Inicio",
"Browse": "Browse",
"Browse": "Explorar",
"Library": "Biblioteca",
"Tracks": "Canciones",
"Tracks": "Pistas",
"Playlists": "Listas de reproducción",
"Albums": "Álbumes",
"Artists": "Artistas",
"More": "Más",
"Settings": "Configuración",
"Settings": "Ajustes",
"Downloads": "Descargas",
"Search or paste Deezer URL. Use / to quickly focus.": "Search or paste Deezer URL. Use \"/\" to quickly focus.",
"Search or paste Deezer URL. Use / to quickly focus.": "Busca o pega la URL de Deezer. Usa \"/\" para empezar a buscar.",
"Play": "Reproducir",
"Add to library": "Add to library",
"Add to library": "Añadir a la biblioteca",
"Download": "Descargar",
"fans": "seguidores",
"tracks": "canciones",
"tracks": "pistas",
"Quality": "Calidad",
"Estimated size:": "Tamaño estimado:",
"Start downloading": "Start downloading",
"Start downloading": "Comenzar descarga",
"Cancel": "Cancelar",
"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.",
"Stream logging is disabled!": "¡El registro de reproducción está deshabilitado!",
"Enable it in settings for history to work properly.": "Habilítalo en los ajustes para que el historial funcione correctamente.",
"History": "Historial",
"Create new playlist": "Create new playlist",
"TRACKS": "CANCIONES",
"Create new playlist": "Crear nueva lista de reproducción",
"TRACKS": "PISTAS",
"Sort by": "Ordenar por",
"Date Added": "Fecha de adición",
"Name (A-Z)": "Nombre (A-Z)",
"Artist (A-Z)": "Artista (A-Z)",
"Album (A-Z)": "Álbum (A-Z)",
"Error loading lyrics or lyrics not found!": "Error loading lyrics or lyrics not found!",
"Error loading lyrics or lyrics not found!": "¡Error al cargar letras o no encontradas!",
"Create playlist": "Crear lista de reproducción",
"Create": "Crear",
"Add to playlist": "Agregar a la lista de reproducción",
"Create new": "Crear nuevo",
"Remove": "Quitar",
"Play next": "Reproducir siguiente",
"Add to queue": "Add to queue",
"Remove from library": "Remove from library",
"Remove from playlist": "Remove from playlist",
"Add to queue": "Añadir a la cola de reproducción",
"Remove from library": "Eliminar de la biblioteca",
"Remove from playlist": "Quitar de la lista de reproducción",
"Play track mix": "Reproducir mezcla de canciones",
"Go to": "Ir a",
"Track Mix": "Mezcla de canciones",
@ -49,7 +49,7 @@
"Play top": "Reproducir top",
"Radio": "Radio",
"Show all albums": "Mostrar todos los álbumes",
"Show all singles": "Show all singles",
"Show all singles": "Mostrar todos los singles",
"Show more": "Mostrar más",
"Downloaded": "Descargadas",
"Queue": "Cola",
@ -57,59 +57,59 @@
"Stop": "Parar",
"Start": "Iniciar",
"Show folder": "Mostrar carpeta",
"Clear queue": "Limpiar cola",
"Playing from": "Playing from",
"Info": "Información",
"Clear queue": "Limpiar lista",
"Playing from": "Reproduciendo desde",
"Info": "Info",
"Lyrics": "Letras",
"Track number": "Número de la canción",
"Disk number": "Número del disco",
"Explicit": "Explícito",
"Source": "Fuente",
"ID": "ID",
"Error logging in!": "Error logging in!",
"Please try again later, or try another account.": "Please try again later, or try another account.",
"Error logging in!": "¡Error al iniciar sesión!",
"Please try again later, or try another account.": "Por favor, inténtalo de nuevo más tarde, o prueba con otra cuenta.",
"Logout": "Cerrar sesión",
"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:",
"Login using browser": "Iniciar sesión con navegador",
"Please login using your Deezer account:": "Por favor, inicia sesión con tu cuenta de Deezer:",
"...or paste your ARL/Token below:": "...o pega tu ARL/Token a continuación:",
"ARL/Token": "ARL/Token",
"Login": "Ingresar",
"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!",
"Login": "Iniciar sesión",
"By using this program, you disagree with Deezer's ToS.": "Al usar este programa, usted no está de acuerdo con los Términos de Servicio de Deezer.",
"Only in Electron version!": "¡Sólo en la versión Electron!",
"Search results for:": "Resultados de la búsqueda para:",
"Error loading data!": "¡Error al cargar datos!",
"Try again later!": "¡Inténtalo más tarde!",
"Search": "Buscar",
"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",
"Streaming Quality": "Calidad de reproducción",
"Download Quality": "Calidad de descarga",
"Downloads Directory": "Carpeta de descargas",
"Simultaneous downloads": "Descargas simultaneas máximas",
"Always show download confirm dialog before downloading.": "Mostrar siempre una confirmación de descarga antes de descargar.",
"Show download dialog": "Mostrar diálogo de descargas",
"Create folders for artists": "Crear carpetas por artistas",
"Create folders for albums": "Crear carpetas por álbumes",
"Download lyrics": "Descargar letras",
"Variables": "Variables",
"UI": "IU",
"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": "Registrar la canción que escucha a Deezer",
"Connect your LastFM account to allow scrobbling.": "Connect your LastFM account to allow scrobbling.",
"UI": "Interfaz de Usuario",
"Show autocomplete in search": "Mostrar autocompletado al buscar",
"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.",
"Log track listens to Deezer": "Enviar registro de reproducción a Deezer",
"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",
"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",
"Disconnect LastFM": "Desconectar LastFM",
"Requires restart to apply!": "¡Requiere reiniciar para aplicar!",
"Enable Discord Rich Presence, requires restart to toggle!": "¡Activar Rich Presence de Discord requiere reiniciar para cambiar!",
"Discord Rich Presence": "Rich Presence de Discord",
"Enable Discord join button for syncing tracks, requires restart to toggle!": "Activar el botón de unión de Discord para sincronizar las canciones, ¡requiere reiniciar para cambiarlo!",
"Discord Join Button": "Discord Join Button",
"Discord Join Button": "Botón Unirse en Discord",
"Other": "Otro",
"Minimize to tray": "Minimize to tray",
"Don't minimize to tray": "Don't minimize to tray",
"Close on exit": "Close on exit",
"Minimize to tray": "Minimizar a la bandeja del sistema",
"Don't minimize to tray": "No minimizar a la bandeja del sistema",
"Close on exit": "Cerrar al salir",
"Settings saved!": "¡Configuraciones guardadas!",
"Available only in Electron version!": "Available only in Electron version!",
"Crossfade (ms)": "Desvanecimiento (ms)",
"Available only in Electron version!": "¡Disponible sólo en la versión Electron!",
"Crossfade (ms)": "Transición (ms)",
"Select primary color": "Seleccionar color primario",
"Light theme": "Tema claro",
"Create folders for playlists": "Crear carpetas para listas de reproducción",
@ -120,5 +120,11 @@
"Discord": "Discord",
"Telegram Android Group": "Grupo de Android en Telegram",
"Credits:": "Créditos:",
"Agree": "Acepto"
"Agree": "Acepto",
"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!"
}

View File

@ -120,5 +120,11 @@
"Discord": "Discord",
"Telegram Android Group": "Telegram Android Group",
"Credits:": "Credits:",
"Agree": "Agree"
"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!"
}

View File

@ -120,5 +120,11 @@
"Discord": "Discord",
"Telegram Android Group": "Telegram Android Group",
"Credits:": "Credits:",
"Agree": "Agree"
"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!"
}

View File

@ -120,5 +120,11 @@
"Discord": "Discord",
"Telegram Android Group": "Telegram Android Group",
"Credits:": "Credits:",
"Agree": "Agree"
"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!"
}

View File

@ -120,5 +120,11 @@
"Discord": "Discord",
"Telegram Android Group": "Telegram Android Group",
"Credits:": "Credits:",
"Agree": "Agree"
"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!"
}

View File

@ -120,5 +120,11 @@
"Discord": "Discord",
"Telegram Android Group": "Telegram Android Group",
"Credits:": "Credits:",
"Agree": "Agree"
"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!"
}

View File

@ -120,5 +120,11 @@
"Discord": "Discord",
"Telegram Android Group": "Telegram Android Group",
"Credits:": "Credits:",
"Agree": "Agree"
"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!"
}

View File

@ -120,5 +120,11 @@
"Discord": "Discord",
"Telegram Android Group": "Telegram Android Group",
"Credits:": "Credits:",
"Agree": "Agree"
"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!"
}

View File

@ -110,15 +110,21 @@
"Settings saved!": "Pengaturan tersimpan!",
"Available only in Electron version!": "Hanya tersedia di versi Electron!",
"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",
"Select primary color": "Pilih warna utama",
"Light theme": "Tema cerah",
"Create folders for playlists": "Buat folder untuk daftar putar",
"About": "Tentang",
"Links:": "Tautan:",
"Telegram Releases": "Telegram Rilis",
"Telegram Group": "Telegram Grub",
"Discord": "Discord",
"Telegram Android Group": "Telegram Android Group",
"Credits:": "Credits:",
"Agree": "Agree"
"Telegram Android Group": "Telegram Grub Android",
"Credits:": "Kredit:",
"Agree": "Setuju",
"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!"
}

View File

@ -120,5 +120,11 @@
"Discord": "Discord",
"Telegram Android Group": "Telegram Android Group",
"Credits:": "Credits:",
"Agree": "Agree"
"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!"
}

View File

@ -120,5 +120,11 @@
"Discord": "Discord",
"Telegram Android Group": "Telegram Android Group",
"Credits:": "Credits:",
"Agree": "Agree"
"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!"
}

View File

@ -39,7 +39,7 @@
"Add to queue": "Dodaj do kolejki",
"Remove from library": "Usuń z biblioteki",
"Remove from playlist": "Usuń z playlisty",
"Play track mix": "Odtwórz mieszane utwory",
"Play track mix": "Odtwarzaj losowo",
"Go to": "Przejdź do",
"Track Mix": "Mieszaj utwory",
"Duration": "Czas trwania",
@ -102,7 +102,7 @@
"Enable Discord Rich Presence, requires restart to toggle!": "Włącz Szczegółowy Widok Discord, wymaga ponownego uruchomienia!",
"Discord Rich Presence": "Discord Rich Presence",
"Enable Discord join button for syncing tracks, requires restart to toggle!": "Włącz w Discordzie przycisk dołączenia, aby synchronizować utwory, wymaga ponownego uruchomienia!",
"Discord Join Button": "Przycisk dołączenia Discord",
"Discord Join Button": "Pokaż przycisk dołączenia do Discord",
"Other": "Inne",
"Minimize to tray": "Minimalizuj do zasobnika",
"Don't minimize to tray": "Nie minimalizuj do zasobnika",
@ -110,15 +110,21 @@
"Settings saved!": "Ustawienia zapisane!",
"Available only in Electron version!": "Dostępne tylko w wersji Electron!",
"Crossfade (ms)": "Przejście (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",
"Select primary color": "Wybierz podstawowy kolor",
"Light theme": "Wybierz jasny motyw",
"Create folders for playlists": "Utwórz folder dla playlist",
"About": "O programie",
"Links:": "Adresy:",
"Telegram Releases": "Nowe wydania w Telegram",
"Telegram Group": "Grupa w Telegramie",
"Discord": "Discord",
"Telegram Android Group": "Telegram Android Group",
"Credits:": "Credits:",
"Agree": "Agree"
"Telegram Android Group": "Grupa Telegram dla wydań na Android",
"Credits:": "Twórcy:",
"Agree": "Akceptuję",
"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!"
}

View File

@ -49,34 +49,34 @@
"Play top": "Reproduzir no topo",
"Radio": "Rádio",
"Show all albums": "Mostrar todos os álbuns",
"Show all singles": "Show all singles",
"Show more": "Show more",
"Downloaded": "Downloaded",
"Queue": "Queue",
"Show all singles": "Mostrar todas as músicas",
"Show more": "Mostrar mais",
"Downloaded": "Baixados",
"Queue": "Fila de Reprodução",
"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:",
"Stop": "Parar",
"Start": "Começar",
"Show folder": "Mostrar pastas",
"Clear queue": "Limpar lista",
"Playing from": "Reproduzindo de",
"Info": "Informações",
"Lyrics": "Letras",
"Track number": "Número de faixa",
"Disk number": "Numero de disco",
"Explicit": "Explicito",
"Source": "Fonte",
"ID": "Identificação",
"Error logging in!": "Erro de login!",
"Please try again later, or try another account.": "Por favor, tente novamente mais tarde ou tente outra conta.",
"Logout": "Encerrar sessão",
"Login using browser": "Login usando o navegador",
"Please login using your Deezer account:": "Faça login usando sua conta do Deezer:",
"...or paste your ARL/Token below:": "...ou cole seu ARL/Token abaixo:",
"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:",
"By using this program, you disagree with Deezer's ToS.": "Ao usar este programa, você discorda do Acordo de Assinatura do Deezer.",
"Only in Electron version!": "Apenas na versão do Electron!",
"Search results for:": "Buscar resultados para:",
"Error loading data!": "Error loading data!",
"Try again later!": "Try again later!",
"Search": "Search",
@ -98,7 +98,7 @@
"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!",
"Requires restart to apply!": "Requer reinicialização do aplicativo para aplicar!",
"Enable Discord Rich Presence, requires restart to toggle!": "Ativar o Rich Presence do Discord, requer reiniciar para alternar!",
"Discord Rich Presence": "Habilitar o Discord",
"Enable Discord join button for syncing tracks, requires restart to toggle!": "Ativar o botão de adesão do Discord para sincronizar faixas requer reinicialização para alternar!",
@ -120,5 +120,11 @@
"Discord": "Discord",
"Telegram Android Group": "Grupo Android do Telegram",
"Credits:": "Créditos:",
"Agree": "Concordo"
"Agree": "Concordo",
"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!"
}

View File

@ -120,5 +120,11 @@
"Discord": "Discord",
"Telegram Android Group": "Telegram Android Group",
"Credits:": "Credits:",
"Agree": "Agree"
"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!"
}

View File

@ -120,5 +120,11 @@
"Discord": "Discord",
"Telegram Android Group": "Telegram Android Group",
"Credits:": "Credits:",
"Agree": "Agree"
"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!"
}

View File

@ -120,5 +120,11 @@
"Discord": "Discord",
"Telegram Android Group": "Telegram Android Group",
"Credits:": "Credits:",
"Agree": "Agree"
"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!"
}

View File

@ -63,7 +63,7 @@
"Lyrics": "Текст",
"Track number": "Номер треку",
"Disk number": "Номер диску",
"Explicit": "Явний",
"Explicit": "Докладно",
"Source": "Джерело",
"ID": "ID",
"Error logging in!": "Помилка входу!",
@ -75,7 +75,7 @@
"ARL/Token": "ARL/токен",
"Login": "Увійти",
"By using this program, you disagree with Deezer's ToS.": "Використовуючи цю програму, ви не погоджуєтесь із умовами використання Deezer.",
"Only in Electron version!": "Тільки в Electron версії!",
"Only in Electron version!": "Тільки в версії Electron!",
"Search results for:": "Результати пошуку для:",
"Error loading data!": "Помилка завантаження даних!",
"Try again later!": "Повторіть спробу пізніше!",
@ -90,18 +90,18 @@
"Create folders for albums": "Створити теки для альбомів",
"Download lyrics": "Завантажити тексти пісень",
"Variables": "Змінні",
"UI": "UI",
"Show autocomplete in search": "Показувати автозаповнення при пошуку",
"UI": "Інтерфейс користувача",
"Show autocomplete in search": "Автозаповнення при пошуку",
"Integrations": "Інтеграція",
"This allows listening history, flow and recommendations to work properly.": "Це дозволяє слухати історію, потік та рекомендації для правильної роботи.",
"Log track listens to Deezer": "Реєстр треків Deezer",
"Connect your LastFM account to allow scrobbling.": "Підключіть обліковий запис LastFM, щоб дозволити скроблінг.",
"This allows listening history, flow and recommendations to work properly.": "Для правильної роботи Flow, рекомендацій та історії.",
"Log track listens to Deezer": "Відправляти статистику",
"Connect your LastFM account to allow scrobbling.": "Підключити обліковий запис LastFM, щоб дозволити scrobbling.",
"Login with LastFM": "Увійти через LastFM",
"Disconnect LastFM": "Від'єднати LastFM",
"Requires restart to apply!": "Необхідно перезапустити для застосування!",
"Enable Discord Rich Presence, requires restart to toggle!": "Увімкнути Discord Rich Presence, для використання необхідний перезапуск!",
"Enable Discord Rich Presence, requires restart to toggle!": "Увімкнути Discord Rich Presence, для застосування потрібен перезапуск!",
"Discord Rich Presence": "Discord Rich Presence",
"Enable Discord join button for syncing tracks, requires restart to toggle!": "Увімкніть кнопку приєднання Discord для синхронізації треків, для застосування потрібен перезапуск!",
"Enable Discord join button for syncing tracks, requires restart to toggle!": "Увімкнути приєднання до Discord для синхронізації треків, для застосування потрібен перезапуск!",
"Discord Join Button": "Кнопка приєднання до Discord",
"Other": "Інше",
"Minimize to tray": "Згорнути в трей",
@ -110,15 +110,21 @@
"Settings saved!": "Налаштування збережено!",
"Available only in Electron version!": "Доступно лише в Electron версії!",
"Crossfade (ms)": "Перехресне затухання (мс)",
"Select primary color": "Виберіть основний колір",
"Select primary color": "Вибрати основний колір",
"Light theme": "Світла тема",
"Create folders for playlists": "Створити теки для плейлистів",
"About": "Про додаток",
"Links:": "Посилання:",
"Links:": "Лінки:",
"Telegram Releases": "Telegram релізи",
"Telegram Group": "Група в Telegram",
"Discord": "Discord",
"Telegram Android Group": "Група Андроїд Telegram",
"Telegram Android Group": "Група Android в Telegram",
"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!"
}

View File

@ -120,5 +120,11 @@
"Discord": "Discord",
"Telegram Android Group": "Telegram Android Group",
"Credits:": "Credits:",
"Agree": "Agree"
"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!"
}

View File

@ -108,7 +108,9 @@ new Vue({
},
//Used to prevent double listen logging
logListenId: null
logListenId: null,
globalSnackbar: null
},
methods: {
@ -241,25 +243,30 @@ new Vue({
if (this.settings.crossfadeDuration > 0 && this.position >= (this.duration() - this.settings.crossfadeDuration) && this.state == 2 && this.gapless.audio && !this.gapless.crossfade) {
this.gapless.crossfade = true;
let currentVolume = this.audio.volume;
this.gapless.audio.play();
let volumeStep = currentVolume / (this.settings.crossfadeDuration / 50);
for (let i=0; i<(this.settings.crossfadeDuration / 50); i++) {
if ((this.audio.volume - volumeStep) > 0)
this.audio.volume -= volumeStep;
this.gapless.audio.volume += volumeStep;
await new Promise((res) => setTimeout(() => res(), 50));
}
this.audio.pause();
//Update audio
let oldAudio = this.audio;
this.audio = this.gapless.audio;
this.audio.play();
//Update meta
this.playbackInfo = this.gapless.info;
this.track = this.gapless.track;
this.queue.index = this.gapless.index;
this.resetGapless();
this.configureAudio();
this.updateMediaSession();
let volumeStep = currentVolume / (this.settings.crossfadeDuration / 50);
for (let i=0; i<(this.settings.crossfadeDuration / 50); i++) {
if ((oldAudio.volume - volumeStep) > 0)
oldAudio.volume -= volumeStep;
this.audio.volume += volumeStep;
await new Promise((res) => setTimeout(() => res(), 50));
}
oldAudio.pause();
this.resetGapless();
//Save
await this.savePlaybackInfo();
}

View File

@ -105,6 +105,7 @@ export default {
this.libraryLoading = true;
await this.$axios.put(`/library/album?id=${this.album.id}`);
this.libraryLoading = false;
this.$root.globalSnackbar = this.$t('Added to library!');
},
async download() {
this.downloadDialog = true;

View File

@ -151,6 +151,7 @@ export default {
async library() {
this.libraryLoading = true;
await this.$axios.put(`/library/artist?id=${this.artist.id}`);
this.$root.globalSnackbar = this.$t('Added to library!');
this.libraryLoading = false;
},
async load() {

View File

@ -270,11 +270,13 @@ export default {
this.inLibrary = false;
//Remove from cache
this.$root.libraryTracks.splice(this.$root.libraryTracks.indexOf(this.$root.track.id), 1);
this.$root.globalSnackbar = this.$t('Removed from library!');
return;
}
await this.$axios.put('/library/track?id=' + this.$root.track.id);
this.$root.libraryTracks.push(this.$root.track.id);
this.inLibrary = true;
this.$root.globalSnackbar = this.$t('Added to library!');
},
//Download current track
async download() {

View File

@ -141,6 +141,7 @@ export default {
this.libraryLoading = true;
await this.$axios.put(`/library/playlist?id=${this.playlist.id}`);
this.libraryLoading = false;
this.$root.globalSnackbar = this.$t('Added to library!');
},
async initialLoad() {

View File

@ -292,13 +292,16 @@ export default {
languages: [
{code: 'en', name: 'English'},
{code: 'ar', name: 'Arabic'},
{code: 'fr', name: 'French'},
{code: 'de', name: 'German'},
{code: 'el', name: 'Greek'},
{code: 'id', name: 'Indonesian'},
{code: 'it', name: 'Italian'},
{code: 'pl', name: 'Polish'},
{code: 'pt', name: 'Portuguese'},
{code: 'ro', name: 'Romanian'},
{code: 'ru', name: 'Russian'},
{code: 'es', name: 'Spanish'},
{code: 'tr', name: 'Turkish'},
{code: 'uk', name: 'Ukrainian'}
],

View File

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

View File

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