Merge pull request #190 from kveld9/feat/playlist-csv-import

feature: spotify CSV playlist import
This commit is contained in:
Psychotoxical
2026-04-15 18:09:27 +02:00
committed by GitHub
15 changed files with 867 additions and 21 deletions
+16
View File
@@ -992,6 +992,22 @@ export const deTranslation = {
addToPlaylistError: 'Fehler beim Hinzufügen zur Playlist',
removeSuccess: 'Song aus Playlist entfernt',
removeError: 'Fehler beim Entfernen aus der Playlist',
importCSV: 'CSV importieren',
importCSVTooltip: 'Aus Spotify-CSV importieren',
csvImportReport: 'CSV-Importbericht',
csvImportTotal: 'Gesamt',
csvImportAdded: 'Hinzugefügt',
csvImportDuplicates: 'Duplikate',
csvImportNotFound: 'Nicht gefunden',
csvImportNetworkErrors: 'Netzwerkfehler',
csvImportDuplicatesTitle: 'Doppelte Titel (bereits in Playlist):',
csvImportNotFoundTitle: 'Nicht gefundene Titel:',
csvImportNetworkErrorsTitle: 'Netzwerkfehler (Import kann wiederholt werden):',
csvImportDownloadReport: 'Bericht herunterladen',
csvImportClose: 'Schließen',
csvImportNoValidTracks: 'Keine gültigen Titel in CSV-Datei gefunden',
csvImportFailed: 'CSV-Import fehlgeschlagen',
csvImportToast: '{{added}} hinzugefügt, {{notFound}} nicht gefunden, {{duplicates}} Duplikate',
},
mostPlayed: {
title: 'Meistgehört',
+16
View File
@@ -994,6 +994,22 @@ export const enTranslation = {
addToPlaylistError: 'Error adding to playlist',
removeSuccess: 'Song removed from playlist',
removeError: 'Error removing song from playlist',
importCSV: 'Import CSV',
importCSVTooltip: 'Import from Spotify CSV',
csvImportReport: 'CSV Import Report',
csvImportTotal: 'Total',
csvImportAdded: 'Added',
csvImportDuplicates: 'Duplicates',
csvImportNotFound: 'Not Found',
csvImportNetworkErrors: 'Network Errors',
csvImportDuplicatesTitle: 'Duplicate Tracks (Already in Playlist):',
csvImportNotFoundTitle: 'Tracks Not Found:',
csvImportNetworkErrorsTitle: 'Network Errors (may retry import):',
csvImportDownloadReport: 'Download Report',
csvImportClose: 'Close',
csvImportNoValidTracks: 'No valid tracks found in CSV file',
csvImportFailed: 'Failed to import CSV file',
csvImportToast: '{{added}} added, {{notFound}} not found, {{duplicates}} duplicates',
},
mostPlayed: {
title: 'Most Played',
+16
View File
@@ -995,6 +995,22 @@ export const esTranslation = {
addToPlaylistError: 'Error al agregar a la lista',
removeSuccess: 'Canción quitada de la playlist',
removeError: 'Error al quitar la canción de la playlist',
importCSV: 'Importar CSV',
importCSVTooltip: 'Importar desde CSV de Spotify',
csvImportReport: 'Reporte de Importación CSV',
csvImportTotal: 'Total',
csvImportAdded: 'Agregadas',
csvImportDuplicates: 'Duplicadas',
csvImportNotFound: 'No Encontradas',
csvImportNetworkErrors: 'Errores de Red',
csvImportDuplicatesTitle: 'Canciones Duplicadas (Ya en la Lista):',
csvImportNotFoundTitle: 'Canciones No Encontradas:',
csvImportNetworkErrorsTitle: 'Errores de Red (puede reintentar la importación):',
csvImportDownloadReport: 'Descargar Reporte',
csvImportClose: 'Cerrar',
csvImportNoValidTracks: 'No se encontraron canciones válidas en el archivo CSV',
csvImportFailed: 'Error al importar el archivo CSV',
csvImportToast: '{{added}} agregadas, {{notFound}} no encontradas, {{duplicates}} duplicadas',
},
mostPlayed: {
title: 'Más Reproducidos',
+16
View File
@@ -990,6 +990,22 @@ export const frTranslation = {
addToPlaylistError: 'Erreur lors de l\'ajout à la playlist',
removeSuccess: 'Morceau retiré de la playlist',
removeError: 'Erreur lors du retrait de la playlist',
importCSV: 'Importer CSV',
importCSVTooltip: 'Importer depuis CSV Spotify',
csvImportReport: 'Rapport d\'Import CSV',
csvImportTotal: 'Total',
csvImportAdded: 'Ajoutés',
csvImportDuplicates: 'Doublons',
csvImportNotFound: 'Non Trouvés',
csvImportNetworkErrors: 'Erreurs Réseau',
csvImportDuplicatesTitle: 'Titres en Doublon (Déjà dans la Playlist):',
csvImportNotFoundTitle: 'Titres Non Trouvés:',
csvImportNetworkErrorsTitle: 'Erreurs Réseau (peut réessayer l\'import):',
csvImportDownloadReport: 'Télécharger le Rapport',
csvImportClose: 'Fermer',
csvImportNoValidTracks: 'Aucun titre valide trouvé dans le fichier CSV',
csvImportFailed: 'Échec de l\'import CSV',
csvImportToast: '{{added}} ajoutés, {{notFound}} non trouvés, {{duplicates}} doublons',
},
mostPlayed: {
title: 'Les plus joués',
+16
View File
@@ -989,6 +989,22 @@ export const nbTranslation = {
addToPlaylistError: 'Feil ved å legge til i spilleliste',
removeSuccess: 'Sang fjernet fra spilleliste',
removeError: 'Feil ved fjerning fra spilleliste',
importCSV: 'Importer CSV',
importCSVTooltip: 'Importer fra Spotify CSV',
csvImportReport: 'CSV-importrapport',
csvImportTotal: 'Totalt',
csvImportAdded: 'Lagt til',
csvImportDuplicates: 'Duplikater',
csvImportNotFound: 'Ikke funnet',
csvImportNetworkErrors: 'Nettverksfeil',
csvImportDuplicatesTitle: 'Duplikater (allerede i spillelisten):',
csvImportNotFoundTitle: 'Ikke funnet spor:',
csvImportNetworkErrorsTitle: 'Nettverksfeil (kan prøve import på nytt):',
csvImportDownloadReport: 'Last ned rapport',
csvImportClose: 'Lukk',
csvImportNoValidTracks: 'Ingen gyldige spor funnet i CSV-filen',
csvImportFailed: 'Kunne ikke importere CSV-fil',
csvImportToast: '{{added}} lagt til, {{notFound}} ikke funnet, {{duplicates}} duplikater',
},
mostPlayed: {
title: 'Mest spilt',
+18
View File
@@ -987,6 +987,24 @@ export const nlTranslation = {
addToPlaylistSuccess: '{{count}} nummers toegevoegd aan {{playlist}}',
addToPlaylistNoNew: 'Geen nieuwe nummers voor {{playlist}}',
addToPlaylistError: 'Fout bij toevoegen aan playlist',
removeSuccess: 'Nummer verwijderd van playlist',
removeError: 'Fout bij verwijderen uit playlist',
importCSV: 'CSV Importeren',
importCSVTooltip: 'Importeren vanuit Spotify CSV',
csvImportReport: 'CSV-importrapport',
csvImportTotal: 'Totaal',
csvImportAdded: 'Toegevoegd',
csvImportDuplicates: 'Duplicaten',
csvImportNotFound: 'Niet Gevonden',
csvImportNetworkErrors: 'Netwerkfouten',
csvImportDuplicatesTitle: 'Dubbele nummers (al in playlist):',
csvImportNotFoundTitle: 'Niet gevonden nummers:',
csvImportNetworkErrorsTitle: 'Netwerkfouten (import kan opnieuw proberen):',
csvImportDownloadReport: 'Rapport downloaden',
csvImportClose: 'Sluiten',
csvImportNoValidTracks: 'Geen geldige nummers gevonden in CSV-bestand',
csvImportFailed: 'CSV-import mislukt',
csvImportToast: '{{added}} toegevoegd, {{notFound}} niet gevonden, {{duplicates}} duplicaten',
},
mostPlayed: {
title: 'Meest gespeeld',
+16
View File
@@ -1048,6 +1048,22 @@ export const ruTranslation = {
addToPlaylistError: 'Ошибка при добавлении в плейлист',
removeSuccess: 'Трек убран из плейлиста',
removeError: 'Ошибка при удалении из плейлиста',
importCSV: 'Импорт CSV',
importCSVTooltip: 'Импорт из CSV Spotify',
csvImportReport: 'Отчёт об импорте CSV',
csvImportTotal: 'Всего',
csvImportAdded: 'Добавлено',
csvImportDuplicates: 'Дубликаты',
csvImportNotFound: 'Не найдено',
csvImportNetworkErrors: 'Ошибки сети',
csvImportDuplicatesTitle: 'Дубликаты (уже в плейлисте):',
csvImportNotFoundTitle: 'Не найденные треки:',
csvImportNetworkErrorsTitle: 'Ошибки сети (можно повторить импорт):',
csvImportDownloadReport: 'Скачать отчёт',
csvImportClose: 'Закрыть',
csvImportNoValidTracks: 'В CSV-файле не найдено действительных треков',
csvImportFailed: 'Не удалось импортировать CSV-файл',
csvImportToast: '{{added}} добавлено, {{notFound}} не найдено, {{duplicates}} дубликатов',
},
mostPlayed: {
title: 'Популярное',
+16
View File
@@ -983,6 +983,22 @@ export const zhTranslation = {
addToPlaylistSuccess: '{{count}} 首歌曲已添加到 {{playlist}}',
addToPlaylistNoNew: '{{playlist}} 没有新歌曲',
addToPlaylistError: '添加到播放列表时出错',
importCSV: '导入 CSV',
importCSVTooltip: '从 Spotify CSV 导入',
csvImportReport: 'CSV 导入报告',
csvImportTotal: '总计',
csvImportAdded: '已添加',
csvImportDuplicates: '重复项',
csvImportNotFound: '未找到',
csvImportNetworkErrors: '网络错误',
csvImportDuplicatesTitle: '重复曲目(已在播放列表中):',
csvImportNotFoundTitle: '未找到的曲目:',
csvImportNetworkErrorsTitle: '网络错误(可重试导入):',
csvImportDownloadReport: '下载报告',
csvImportClose: '关闭',
csvImportNoValidTracks: 'CSV 文件中未找到有效曲目',
csvImportFailed: 'CSV 文件导入失败',
csvImportToast: '{{added}} 已添加,{{notFound}} 未找到,{{duplicates}} 重复项',
},
mostPlayed: {
title: '最常播放',