1.1.20 - self describing code (jk read telegram changelog)
|
@ -117,13 +117,14 @@ async function createWindow() {
|
||||||
minHeight: 600,
|
minHeight: 600,
|
||||||
resizable: true,
|
resizable: true,
|
||||||
autoHideMenuBar: true,
|
autoHideMenuBar: true,
|
||||||
frame: false,
|
frame: settings.nativeTopBar,
|
||||||
icon: assetPath("icon.png"),
|
icon: assetPath("icon.png"),
|
||||||
title: 'Freezer',
|
title: 'Freezer',
|
||||||
webPreferences: {
|
webPreferences: {
|
||||||
enableRemoteModule: true,
|
enableRemoteModule: true,
|
||||||
nodeIntegration: true,
|
nodeIntegration: true,
|
||||||
devTools: true
|
devTools: true,
|
||||||
|
contextIsolation: false
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
|
@ -13,13 +13,13 @@
|
||||||
"@mdi/font": "^5.9.55",
|
"@mdi/font": "^5.9.55",
|
||||||
"axios": "^0.21.1",
|
"axios": "^0.21.1",
|
||||||
"roboto-fontface": "*",
|
"roboto-fontface": "*",
|
||||||
|
"socket.io-client": "^4.1.2",
|
||||||
"vue": "^2.6.12",
|
"vue": "^2.6.12",
|
||||||
"vue-esc": "^3.0.1",
|
"vue-esc": "^3.0.1",
|
||||||
"vue-i18n": "^8.22.4",
|
"vue-i18n": "^8.22.4",
|
||||||
"vue-router": "^3.4.9",
|
"vue-router": "^3.4.9",
|
||||||
"vue-socket.io": "^3.0.10",
|
|
||||||
"vuedraggable": "^2.24.3",
|
"vuedraggable": "^2.24.3",
|
||||||
"vuetify": "^2.4.2"
|
"vuetify": "^2.5.1"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@intlify/vue-i18n-loader": "^1.0.0",
|
"@intlify/vue-i18n-loader": "^1.0.0",
|
||||||
|
@ -33,7 +33,7 @@
|
||||||
"vue-cli-plugin-i18n": "~1.0.1",
|
"vue-cli-plugin-i18n": "~1.0.1",
|
||||||
"vue-cli-plugin-vuetify": "^2.0.9",
|
"vue-cli-plugin-vuetify": "^2.0.9",
|
||||||
"vue-template-compiler": "^2.6.12",
|
"vue-template-compiler": "^2.6.12",
|
||||||
"vuetify-loader": "^1.3.0"
|
"vuetify-loader": "^1.7.2"
|
||||||
},
|
},
|
||||||
"eslintConfig": {
|
"eslintConfig": {
|
||||||
"root": true,
|
"root": true,
|
||||||
|
|
|
@ -3,10 +3,11 @@
|
||||||
<v-app v-esc='closePlayer'>
|
<v-app v-esc='closePlayer'>
|
||||||
|
|
||||||
<v-system-bar
|
<v-system-bar
|
||||||
:color='$root.settings.lightTheme ? "#f5f5f5" : "#121212"'
|
:color='$root.settings.lgbtMode ? null : $root.settings.lightTheme ? "#f5f5f5" : "#121212"'
|
||||||
app
|
app
|
||||||
class='topbar'
|
class='topbar'
|
||||||
v-if='$root.settings.electron'
|
:class='{"lgbt-header": $root.settings.lgbtMode}'
|
||||||
|
v-if='$root.settings.electron && !$root.settings.nativeTopBar'
|
||||||
height='28'>
|
height='28'>
|
||||||
|
|
||||||
<v-spacer></v-spacer>
|
<v-spacer></v-spacer>
|
||||||
|
@ -192,11 +193,11 @@
|
||||||
<v-main>
|
<v-main>
|
||||||
<img :src='backgroundSrc' class='wallpaper' v-if='$root.settings.backgroundImage'>
|
<img :src='backgroundSrc' class='wallpaper' v-if='$root.settings.backgroundImage'>
|
||||||
<v-container
|
<v-container
|
||||||
class='overflow-y-auto'
|
class='overflow-y-auto'
|
||||||
fluid
|
:class='{"main-container": $root.topBar, "main-container-notop": !$root.topBar}'
|
||||||
style='height: calc(100vh - 140px);'>
|
:fluid='fluidContainer'>
|
||||||
<keep-alive include='Search,PlaylistPage,HomeScreen,DeezerPage'>
|
<keep-alive include='Search,PlaylistPage,HomeScreen,DeezerPage'>
|
||||||
<router-view class='router-wiev'></router-view>
|
<router-view></router-view>
|
||||||
</keep-alive>
|
</keep-alive>
|
||||||
</v-container>
|
</v-container>
|
||||||
</v-main>
|
</v-main>
|
||||||
|
@ -340,6 +341,30 @@
|
||||||
position: absolute;
|
position: absolute;
|
||||||
object-fit: fill;
|
object-fit: fill;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.main-container {
|
||||||
|
height: calc(100vh - 140px);
|
||||||
|
}
|
||||||
|
|
||||||
|
.main-container-notop {
|
||||||
|
height: calc(100vh - 118px);
|
||||||
|
}
|
||||||
|
|
||||||
|
.lgbt-header {
|
||||||
|
background-image: linear-gradient(135deg,
|
||||||
|
#FE0000FF 16.66%,
|
||||||
|
#FD8C00FF 16.66%, 33.32%,
|
||||||
|
#FFE500FF 33.32%, 49.98%,
|
||||||
|
#119F0BFF 49.98%, 66.64%,
|
||||||
|
#0644B3FF 66.64%, 83.3%,
|
||||||
|
#C22EDCFF 83.3%);
|
||||||
|
color: #000 !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
.lgbt-header button {
|
||||||
|
color: #000 !important;
|
||||||
|
}
|
||||||
|
|
||||||
</style>
|
</style>
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
|
@ -363,7 +388,8 @@ export default {
|
||||||
cancelSuggestions: false,
|
cancelSuggestions: false,
|
||||||
globalSnackbar: false,
|
globalSnackbar: false,
|
||||||
version: null,
|
version: null,
|
||||||
updateAvailable: false
|
updateAvailable: false,
|
||||||
|
fluidContainer: window.innerWidth < 1300
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
methods: {
|
methods: {
|
||||||
|
@ -485,7 +511,7 @@ export default {
|
||||||
if (this.$root.settings.backgroundImage && this.$root.settings.backgroundImage.startsWith("http"))
|
if (this.$root.settings.backgroundImage && this.$root.settings.backgroundImage.startsWith("http"))
|
||||||
return this.$root.settings.backgroundImage;
|
return this.$root.settings.backgroundImage;
|
||||||
return process.env.NODE_ENV === 'development' ? "http://localhost:10069/background" : "/background";
|
return process.env.NODE_ENV === 'development' ? "http://localhost:10069/background" : "/background";
|
||||||
}
|
},
|
||||||
},
|
},
|
||||||
async mounted() {
|
async mounted() {
|
||||||
//Scroll on volume
|
//Scroll on volume
|
||||||
|
@ -523,6 +549,11 @@ export default {
|
||||||
if (this.$root.loadingPromise) await this.$root.loadingPromise;
|
if (this.$root.loadingPromise) await this.$root.loadingPromise;
|
||||||
this.volume = this.$root.volume;
|
this.volume = this.$root.volume;
|
||||||
|
|
||||||
|
//Limit content width on large displays
|
||||||
|
window.addEventListener('resize', () => {
|
||||||
|
this.fluidContainer = window.innerWidth < 1300;
|
||||||
|
});
|
||||||
|
|
||||||
//Check for update
|
//Check for update
|
||||||
this.checkUpdate();
|
this.checkUpdate();
|
||||||
},
|
},
|
||||||
|
|
|
@ -164,5 +164,8 @@
|
||||||
"Download Filename": "تنزيل اسم الملف",
|
"Download Filename": "تنزيل اسم الملف",
|
||||||
"Language": "اللغة",
|
"Language": "اللغة",
|
||||||
"Background Image": "Background Image",
|
"Background Image": "Background Image",
|
||||||
"Enter URL or absolute path. WARNING: Requires reload!": "Enter URL or absolute path. WARNING: Requires reload!"
|
"Enter URL or absolute path. WARNING: Requires reload!": "Enter URL or absolute path. WARNING: Requires reload!",
|
||||||
}
|
"LGBT Mode": "LGBT Mode",
|
||||||
|
"Native top bar": "Native top bar",
|
||||||
|
"Requires restart of Freezer!": "Requires restart of Freezer!"
|
||||||
|
}
|
|
@ -163,6 +163,9 @@
|
||||||
"No": "Non",
|
"No": "Non",
|
||||||
"Download Filename": "Nome de les descargues",
|
"Download Filename": "Nome de les descargues",
|
||||||
"Language": "Llingua",
|
"Language": "Llingua",
|
||||||
"Background Image": "Background Image",
|
"Background Image": "Imaxe del fondu",
|
||||||
"Enter URL or absolute path. WARNING: Requires reload!": "Enter URL or absolute path. WARNING: Requires reload!"
|
"Enter URL or absolute path. WARNING: Requires reload!": "Introduz una URL o un camín absolutu. ALVERTENCIA: ¡Ha reaniciase l'aplicación!",
|
||||||
}
|
"LGBT Mode": "LGBT Mode",
|
||||||
|
"Native top bar": "Native top bar",
|
||||||
|
"Requires restart of Freezer!": "Requires restart of Freezer!"
|
||||||
|
}
|
|
@ -164,5 +164,8 @@
|
||||||
"Download Filename": "Download Filename",
|
"Download Filename": "Download Filename",
|
||||||
"Language": "Language",
|
"Language": "Language",
|
||||||
"Background Image": "Background Image",
|
"Background Image": "Background Image",
|
||||||
"Enter URL or absolute path. WARNING: Requires reload!": "Enter URL or absolute path. WARNING: Requires reload!"
|
"Enter URL or absolute path. WARNING: Requires reload!": "Enter URL or absolute path. WARNING: Requires reload!",
|
||||||
}
|
"LGBT Mode": "LGBT Mode",
|
||||||
|
"Native top bar": "Native top bar",
|
||||||
|
"Requires restart of Freezer!": "Requires restart of Freezer!"
|
||||||
|
}
|
|
@ -163,6 +163,9 @@
|
||||||
"No": "Nein",
|
"No": "Nein",
|
||||||
"Download Filename": "Dateiname herunterladen",
|
"Download Filename": "Dateiname herunterladen",
|
||||||
"Language": "Sprache",
|
"Language": "Sprache",
|
||||||
"Background Image": "Background Image",
|
"Background Image": "Hintergrundbild",
|
||||||
"Enter URL or absolute path. WARNING: Requires reload!": "Enter URL or absolute path. WARNING: Requires reload!"
|
"Enter URL or absolute path. WARNING: Requires reload!": "URL oder absoluten Pfad eingeben. WARNUNG: Neuladen erforderlich!",
|
||||||
}
|
"LGBT Mode": "LGBT Mode",
|
||||||
|
"Native top bar": "Native top bar",
|
||||||
|
"Requires restart of Freezer!": "Requires restart of Freezer!"
|
||||||
|
}
|
|
@ -163,6 +163,9 @@
|
||||||
"No": "Όχι",
|
"No": "Όχι",
|
||||||
"Download Filename": "Όνομα Αρχείου Λήψης",
|
"Download Filename": "Όνομα Αρχείου Λήψης",
|
||||||
"Language": "Γλώσσα",
|
"Language": "Γλώσσα",
|
||||||
"Background Image": "Background Image",
|
"Background Image": "Εικόνα Φόντου",
|
||||||
"Enter URL or absolute path. WARNING: Requires reload!": "Enter URL or absolute path. WARNING: Requires reload!"
|
"Enter URL or absolute path. WARNING: Requires reload!": "Εισάγετε URL ή απόλυτη διαδρομή. ΠΡΟΕΙΔΟΠΟΙΗΣΗ: Απαιτείται επαναφόρτωση!",
|
||||||
}
|
"LGBT Mode": "LGBT Mode",
|
||||||
|
"Native top bar": "Native top bar",
|
||||||
|
"Requires restart of Freezer!": "Requires restart of Freezer!"
|
||||||
|
}
|
|
@ -164,5 +164,8 @@
|
||||||
"Download Filename": "Download Filename",
|
"Download Filename": "Download Filename",
|
||||||
"Language": "Language",
|
"Language": "Language",
|
||||||
"Background Image": "Background Image",
|
"Background Image": "Background Image",
|
||||||
"Enter URL or absolute path. WARNING: Requires reload!": "Enter URL or absolute path. WARNING: Requires reload!"
|
"Enter URL or absolute path. WARNING: Requires reload!": "Enter URL or absolute path. WARNING: Requires reload!",
|
||||||
|
"LGBT Mode": "LGBT Mode",
|
||||||
|
"Native top bar": "Native top bar",
|
||||||
|
"Requires restart of Freezer!": "Requires restart of Freezer!"
|
||||||
}
|
}
|
|
@ -163,6 +163,9 @@
|
||||||
"No": "No",
|
"No": "No",
|
||||||
"Download Filename": "Nombre del archivo de descarga",
|
"Download Filename": "Nombre del archivo de descarga",
|
||||||
"Language": "Idioma",
|
"Language": "Idioma",
|
||||||
"Background Image": "Background Image",
|
"Background Image": "Imagen de fondo",
|
||||||
"Enter URL or absolute path. WARNING: Requires reload!": "Enter URL or absolute path. WARNING: Requires reload!"
|
"Enter URL or absolute path. WARNING: Requires reload!": "Introducir la URL o ruta absoluta. ADVERTENCIA: ¡Necesita reiniciar!",
|
||||||
}
|
"LGBT Mode": "LGBT Mode",
|
||||||
|
"Native top bar": "Native top bar",
|
||||||
|
"Requires restart of Freezer!": "Requires restart of Freezer!"
|
||||||
|
}
|
|
@ -164,5 +164,8 @@
|
||||||
"Download Filename": "بارگیری اسم فایل",
|
"Download Filename": "بارگیری اسم فایل",
|
||||||
"Language": "زبان",
|
"Language": "زبان",
|
||||||
"Background Image": "Background Image",
|
"Background Image": "Background Image",
|
||||||
"Enter URL or absolute path. WARNING: Requires reload!": "Enter URL or absolute path. WARNING: Requires reload!"
|
"Enter URL or absolute path. WARNING: Requires reload!": "Enter URL or absolute path. WARNING: Requires reload!",
|
||||||
}
|
"LGBT Mode": "LGBT Mode",
|
||||||
|
"Native top bar": "Native top bar",
|
||||||
|
"Requires restart of Freezer!": "Requires restart of Freezer!"
|
||||||
|
}
|
|
@ -164,5 +164,8 @@
|
||||||
"Download Filename": "Download Filename",
|
"Download Filename": "Download Filename",
|
||||||
"Language": "Wika",
|
"Language": "Wika",
|
||||||
"Background Image": "Background Image",
|
"Background Image": "Background Image",
|
||||||
"Enter URL or absolute path. WARNING: Requires reload!": "Enter URL or absolute path. WARNING: Requires reload!"
|
"Enter URL or absolute path. WARNING: Requires reload!": "Enter URL or absolute path. WARNING: Requires reload!",
|
||||||
}
|
"LGBT Mode": "LGBT Mode",
|
||||||
|
"Native top bar": "Native top bar",
|
||||||
|
"Requires restart of Freezer!": "Requires restart of Freezer!"
|
||||||
|
}
|
|
@ -152,7 +152,7 @@
|
||||||
"Currently only Spotify is supported and limited to 100 tracks.": "Actuellement, seul Spotify est pris en charge et limité à 100 titres.",
|
"Currently only Spotify is supported and limited to 100 tracks.": "Actuellement, seul Spotify est pris en charge et limité à 100 titres.",
|
||||||
"Import into playlist": "Importer dans la playlist",
|
"Import into playlist": "Importer dans la playlist",
|
||||||
"Keep sidebar open": "Garder le panneau latéral ouvert",
|
"Keep sidebar open": "Garder le panneau latéral ouvert",
|
||||||
"WARNING: Might require reload to work properly!": "AVERTISSEMENT : Il peut être nécessaire de recharger pour fonctionner correctement !",
|
"WARNING: Might require reload to work properly!": "AVERTISSEMENT : Il peut être nécessaire de redémarrer pour fonctionner correctement !",
|
||||||
"An error occured, URL might be invalid or unsupported.": "Une erreur est survenue, l'URL est peut-être invalide ou non prise en charge.",
|
"An error occured, URL might be invalid or unsupported.": "Une erreur est survenue, l'URL est peut-être invalide ou non prise en charge.",
|
||||||
"Top tracks": "Titres populaires",
|
"Top tracks": "Titres populaires",
|
||||||
"Show all top tracks": "Afficher tous les titres populaires",
|
"Show all top tracks": "Afficher tous les titres populaires",
|
||||||
|
@ -163,6 +163,9 @@
|
||||||
"No": "Non",
|
"No": "Non",
|
||||||
"Download Filename": "Nom du fichier à télécharger",
|
"Download Filename": "Nom du fichier à télécharger",
|
||||||
"Language": "Langue",
|
"Language": "Langue",
|
||||||
"Background Image": "Background Image",
|
"Background Image": "Image d'arrière-plan",
|
||||||
"Enter URL or absolute path. WARNING: Requires reload!": "Enter URL or absolute path. WARNING: Requires reload!"
|
"Enter URL or absolute path. WARNING: Requires reload!": "Entrez l'URL ou le chemin absolu. ATTENTION : Nécessite un redémarrage !",
|
||||||
}
|
"LGBT Mode": "LGBT Mode",
|
||||||
|
"Native top bar": "Native top bar",
|
||||||
|
"Requires restart of Freezer!": "Requires restart of Freezer!"
|
||||||
|
}
|
|
@ -163,6 +163,9 @@
|
||||||
"No": "לא",
|
"No": "לא",
|
||||||
"Download Filename": "הורד/י את שם הקובץ",
|
"Download Filename": "הורד/י את שם הקובץ",
|
||||||
"Language": "שפה",
|
"Language": "שפה",
|
||||||
"Background Image": "Background Image",
|
"Background Image": "תמונת רקע",
|
||||||
"Enter URL or absolute path. WARNING: Requires reload!": "Enter URL or absolute path. WARNING: Requires reload!"
|
"Enter URL or absolute path. WARNING: Requires reload!": "הזן כתובת אתר או נתיב מוחלט. אזהרה: מחייב טעינה מחדש!",
|
||||||
}
|
"LGBT Mode": "LGBT Mode",
|
||||||
|
"Native top bar": "Native top bar",
|
||||||
|
"Requires restart of Freezer!": "Requires restart of Freezer!"
|
||||||
|
}
|
|
@ -164,5 +164,8 @@
|
||||||
"Download Filename": "Download Filename",
|
"Download Filename": "Download Filename",
|
||||||
"Language": "Language",
|
"Language": "Language",
|
||||||
"Background Image": "Background Image",
|
"Background Image": "Background Image",
|
||||||
"Enter URL or absolute path. WARNING: Requires reload!": "Enter URL or absolute path. WARNING: Requires reload!"
|
"Enter URL or absolute path. WARNING: Requires reload!": "Enter URL or absolute path. WARNING: Requires reload!",
|
||||||
}
|
"LGBT Mode": "LGBT Mode",
|
||||||
|
"Native top bar": "Native top bar",
|
||||||
|
"Requires restart of Freezer!": "Requires restart of Freezer!"
|
||||||
|
}
|
|
@ -163,6 +163,9 @@
|
||||||
"No": "Ne",
|
"No": "Ne",
|
||||||
"Download Filename": "Naziv datoteke preuzimanja",
|
"Download Filename": "Naziv datoteke preuzimanja",
|
||||||
"Language": "Jezik",
|
"Language": "Jezik",
|
||||||
"Background Image": "Background Image",
|
"Background Image": "Pozadinska slika",
|
||||||
"Enter URL or absolute path. WARNING: Requires reload!": "Enter URL or absolute path. WARNING: Requires reload!"
|
"Enter URL or absolute path. WARNING: Requires reload!": "Unesire URL ili apsolutnu putanju. UPOZORENJE: Zahtijeva ponovno pokretanje!",
|
||||||
}
|
"LGBT Mode": "LGBT Mode",
|
||||||
|
"Native top bar": "Native top bar",
|
||||||
|
"Requires restart of Freezer!": "Requires restart of Freezer!"
|
||||||
|
}
|
|
@ -9,7 +9,7 @@
|
||||||
"More": "Továbbiak",
|
"More": "Továbbiak",
|
||||||
"Settings": "Beállítások",
|
"Settings": "Beállítások",
|
||||||
"Downloads": "Letöltések",
|
"Downloads": "Letöltések",
|
||||||
"Search or paste Deezer URL. Use / to quickly focus.": "Keressen, vagy illesszen be Deezer URL linket. Használja a \"/\" karaktert, hogy gyorsan ősszpontosítson.",
|
"Search or paste Deezer URL. Use / to quickly focus.": "Keressen, vagy illesszen be Deezer URL linket. Használja a \"/\" karaktert, hogy megfelelően rámutasson.",
|
||||||
"Play": "Lejátszás",
|
"Play": "Lejátszás",
|
||||||
"Add to library": "Hozzáadás a könyvtárhoz",
|
"Add to library": "Hozzáadás a könyvtárhoz",
|
||||||
"Download": "Letöltés",
|
"Download": "Letöltés",
|
||||||
|
@ -19,7 +19,7 @@
|
||||||
"Estimated size:": "Becsült fájl méret:",
|
"Estimated size:": "Becsült fájl méret:",
|
||||||
"Start downloading": "Letöltés indítása",
|
"Start downloading": "Letöltés indítása",
|
||||||
"Cancel": "Mégse",
|
"Cancel": "Mégse",
|
||||||
"Stream logging is disabled!": "Stream naplózás le van tiltva!",
|
"Stream logging is disabled!": "A stream naplózás le van tiltva!",
|
||||||
"Enable it in settings for history to work properly.": "Engedélyezze a beállításokban, hogy az előzmények megfelelően működjenek.",
|
"Enable it in settings for history to work properly.": "Engedélyezze a beállításokban, hogy az előzmények megfelelően működjenek.",
|
||||||
"History": "Előzmények",
|
"History": "Előzmények",
|
||||||
"Create new playlist": "Új lejátszási lista létrehozása",
|
"Create new playlist": "Új lejátszási lista létrehozása",
|
||||||
|
@ -36,14 +36,14 @@
|
||||||
"Create new": "Új létrehozása",
|
"Create new": "Új létrehozása",
|
||||||
"Remove": "Eltávolítás",
|
"Remove": "Eltávolítás",
|
||||||
"Play next": "Következő lejátszása",
|
"Play next": "Következő lejátszása",
|
||||||
"Add to queue": "Hozzáadás a várólistához",
|
"Add to queue": "Hozzáadás a listához",
|
||||||
"Remove from library": "Eltávolítás a könyvtárból",
|
"Remove from library": "Eltávolítás a könyvtárból",
|
||||||
"Remove from playlist": "Eltávolítás a lejátszási listáról",
|
"Remove from playlist": "Eltávolítás a lejátszási listáról",
|
||||||
"Play track mix": "Dal Mix lejátszása",
|
"Play track mix": "Dal Mix lejátszása",
|
||||||
"Go to": "Menjen",
|
"Go to": "Ugrás",
|
||||||
"Track Mix": "Dal Mix",
|
"Track Mix": "Dal Mix",
|
||||||
"Duration": "Időtartam",
|
"Duration": "Időtartam",
|
||||||
"Released": "Kiadva",
|
"Released": "Megjelent",
|
||||||
"Disk": "Lemez",
|
"Disk": "Lemez",
|
||||||
"albums": "albumok",
|
"albums": "albumok",
|
||||||
"Play top": "Legfelső lejátszása",
|
"Play top": "Legfelső lejátszása",
|
||||||
|
@ -163,6 +163,9 @@
|
||||||
"No": "Nem",
|
"No": "Nem",
|
||||||
"Download Filename": "Letöltött fájlnév",
|
"Download Filename": "Letöltött fájlnév",
|
||||||
"Language": "Nyelv",
|
"Language": "Nyelv",
|
||||||
"Background Image": "Background Image",
|
"Background Image": "Háttérkép",
|
||||||
"Enter URL or absolute path. WARNING: Requires reload!": "Enter URL or absolute path. WARNING: Requires reload!"
|
"Enter URL or absolute path. WARNING: Requires reload!": "Adjon meg URL címet vagy teljes elérési utat. FIGYELEM: Újraindítás szükséges!",
|
||||||
}
|
"LGBT Mode": "LGBT Mode",
|
||||||
|
"Native top bar": "Native top bar",
|
||||||
|
"Requires restart of Freezer!": "Requires restart of Freezer!"
|
||||||
|
}
|
|
@ -164,5 +164,8 @@
|
||||||
"Download Filename": "Unduh Nama File",
|
"Download Filename": "Unduh Nama File",
|
||||||
"Language": "Bahasa",
|
"Language": "Bahasa",
|
||||||
"Background Image": "Background Image",
|
"Background Image": "Background Image",
|
||||||
"Enter URL or absolute path. WARNING: Requires reload!": "Enter URL or absolute path. WARNING: Requires reload!"
|
"Enter URL or absolute path. WARNING: Requires reload!": "Enter URL or absolute path. WARNING: Requires reload!",
|
||||||
}
|
"LGBT Mode": "LGBT Mode",
|
||||||
|
"Native top bar": "Native top bar",
|
||||||
|
"Requires restart of Freezer!": "Requires restart of Freezer!"
|
||||||
|
}
|
|
@ -163,6 +163,9 @@
|
||||||
"No": "No",
|
"No": "No",
|
||||||
"Download Filename": "Nome del file scaricato",
|
"Download Filename": "Nome del file scaricato",
|
||||||
"Language": "Lingua",
|
"Language": "Lingua",
|
||||||
"Background Image": "Background Image",
|
"Background Image": "Immagine di sfondo",
|
||||||
"Enter URL or absolute path. WARNING: Requires reload!": "Enter URL or absolute path. WARNING: Requires reload!"
|
"Enter URL or absolute path. WARNING: Requires reload!": "Inserisci l'URL o il percorso assoluto. ATTENZIONE: Richiede il ricaricamento!",
|
||||||
}
|
"LGBT Mode": "LGBT Mode",
|
||||||
|
"Native top bar": "Native top bar",
|
||||||
|
"Requires restart of Freezer!": "Requires restart of Freezer!"
|
||||||
|
}
|
|
@ -164,5 +164,8 @@
|
||||||
"Download Filename": "Download Filename",
|
"Download Filename": "Download Filename",
|
||||||
"Language": "Language",
|
"Language": "Language",
|
||||||
"Background Image": "Background Image",
|
"Background Image": "Background Image",
|
||||||
"Enter URL or absolute path. WARNING: Requires reload!": "Enter URL or absolute path. WARNING: Requires reload!"
|
"Enter URL or absolute path. WARNING: Requires reload!": "Enter URL or absolute path. WARNING: Requires reload!",
|
||||||
}
|
"LGBT Mode": "LGBT Mode",
|
||||||
|
"Native top bar": "Native top bar",
|
||||||
|
"Requires restart of Freezer!": "Requires restart of Freezer!"
|
||||||
|
}
|
|
@ -164,5 +164,8 @@
|
||||||
"Download Filename": "Bestandsnaam Downloaden",
|
"Download Filename": "Bestandsnaam Downloaden",
|
||||||
"Language": "Taal",
|
"Language": "Taal",
|
||||||
"Background Image": "Background Image",
|
"Background Image": "Background Image",
|
||||||
"Enter URL or absolute path. WARNING: Requires reload!": "Enter URL or absolute path. WARNING: Requires reload!"
|
"Enter URL or absolute path. WARNING: Requires reload!": "Enter URL or absolute path. WARNING: Requires reload!",
|
||||||
}
|
"LGBT Mode": "LGBT Mode",
|
||||||
|
"Native top bar": "Native top bar",
|
||||||
|
"Requires restart of Freezer!": "Requires restart of Freezer!"
|
||||||
|
}
|
|
@ -164,5 +164,8 @@
|
||||||
"Download Filename": "Nazwa pobieranego pliku",
|
"Download Filename": "Nazwa pobieranego pliku",
|
||||||
"Language": "Język",
|
"Language": "Język",
|
||||||
"Background Image": "Background Image",
|
"Background Image": "Background Image",
|
||||||
"Enter URL or absolute path. WARNING: Requires reload!": "Enter URL or absolute path. WARNING: Requires reload!"
|
"Enter URL or absolute path. WARNING: Requires reload!": "Enter URL or absolute path. WARNING: Requires reload!",
|
||||||
}
|
"LGBT Mode": "LGBT Mode",
|
||||||
|
"Native top bar": "Native top bar",
|
||||||
|
"Requires restart of Freezer!": "Requires restart of Freezer!"
|
||||||
|
}
|
|
@ -163,6 +163,9 @@
|
||||||
"No": "Não",
|
"No": "Não",
|
||||||
"Download Filename": "Nomenclatura de download",
|
"Download Filename": "Nomenclatura de download",
|
||||||
"Language": "Idioma",
|
"Language": "Idioma",
|
||||||
"Background Image": "Background Image",
|
"Background Image": "Imagem de Fundo",
|
||||||
"Enter URL or absolute path. WARNING: Requires reload!": "Enter URL or absolute path. WARNING: Requires reload!"
|
"Enter URL or absolute path. WARNING: Requires reload!": "Digite URL ou caminho absoluto. ATENÇÃO: Requer recarregar!",
|
||||||
}
|
"LGBT Mode": "LGBT Mode",
|
||||||
|
"Native top bar": "Native top bar",
|
||||||
|
"Requires restart of Freezer!": "Requires restart of Freezer!"
|
||||||
|
}
|
|
@ -163,6 +163,9 @@
|
||||||
"No": "Nu",
|
"No": "Nu",
|
||||||
"Download Filename": "Denumirea Descărcării",
|
"Download Filename": "Denumirea Descărcării",
|
||||||
"Language": "Limba",
|
"Language": "Limba",
|
||||||
"Background Image": "Background Image",
|
"Background Image": "Imagine de fundal",
|
||||||
"Enter URL or absolute path. WARNING: Requires reload!": "Enter URL or absolute path. WARNING: Requires reload!"
|
"Enter URL or absolute path. WARNING: Requires reload!": "Introduceţi URL-ul sau calea completă. ATENŢIE: Necesită reîncărcare!",
|
||||||
}
|
"LGBT Mode": "LGBT Mode",
|
||||||
|
"Native top bar": "Native top bar",
|
||||||
|
"Requires restart of Freezer!": "Requires restart of Freezer!"
|
||||||
|
}
|
|
@ -164,5 +164,8 @@
|
||||||
"Download Filename": "Скачать шаблон для названия",
|
"Download Filename": "Скачать шаблон для названия",
|
||||||
"Language": "Язык",
|
"Language": "Язык",
|
||||||
"Background Image": "Background Image",
|
"Background Image": "Background Image",
|
||||||
"Enter URL or absolute path. WARNING: Requires reload!": "Enter URL or absolute path. WARNING: Requires reload!"
|
"Enter URL or absolute path. WARNING: Requires reload!": "Enter URL or absolute path. WARNING: Requires reload!",
|
||||||
}
|
"LGBT Mode": "LGBT Mode",
|
||||||
|
"Native top bar": "Native top bar",
|
||||||
|
"Requires restart of Freezer!": "Requires restart of Freezer!"
|
||||||
|
}
|
|
@ -163,6 +163,9 @@
|
||||||
"No": "Nie",
|
"No": "Nie",
|
||||||
"Download Filename": "Stiahnuť názov súboru",
|
"Download Filename": "Stiahnuť názov súboru",
|
||||||
"Language": "Jazyk",
|
"Language": "Jazyk",
|
||||||
"Background Image": "Background Image",
|
"Background Image": "Obrázok pozadia",
|
||||||
"Enter URL or absolute path. WARNING: Requires reload!": "Enter URL or absolute path. WARNING: Requires reload!"
|
"Enter URL or absolute path. WARNING: Requires reload!": "Vložte URL alebo cestu. VAROVANIE: Vyžaduje obnovenie!",
|
||||||
}
|
"LGBT Mode": "LGBT Mode",
|
||||||
|
"Native top bar": "Native top bar",
|
||||||
|
"Requires restart of Freezer!": "Requires restart of Freezer!"
|
||||||
|
}
|
|
@ -164,5 +164,8 @@
|
||||||
"Download Filename": "Imena prenosa",
|
"Download Filename": "Imena prenosa",
|
||||||
"Language": "Jezik",
|
"Language": "Jezik",
|
||||||
"Background Image": "Background Image",
|
"Background Image": "Background Image",
|
||||||
"Enter URL or absolute path. WARNING: Requires reload!": "Enter URL or absolute path. WARNING: Requires reload!"
|
"Enter URL or absolute path. WARNING: Requires reload!": "Enter URL or absolute path. WARNING: Requires reload!",
|
||||||
}
|
"LGBT Mode": "LGBT Mode",
|
||||||
|
"Native top bar": "Native top bar",
|
||||||
|
"Requires restart of Freezer!": "Requires restart of Freezer!"
|
||||||
|
}
|
|
@ -163,6 +163,9 @@
|
||||||
"No": "Hayır",
|
"No": "Hayır",
|
||||||
"Download Filename": "Adlandırma taslağı indir",
|
"Download Filename": "Adlandırma taslağı indir",
|
||||||
"Language": "Dil",
|
"Language": "Dil",
|
||||||
"Background Image": "Background Image",
|
"Background Image": "Arka plan resmi",
|
||||||
"Enter URL or absolute path. WARNING: Requires reload!": "Enter URL or absolute path. WARNING: Requires reload!"
|
"Enter URL or absolute path. WARNING: Requires reload!": "URL'yi veya mutlak yolu girin. UYARI: yeniden yükleme gerektirir!",
|
||||||
}
|
"LGBT Mode": "LGBT Mode",
|
||||||
|
"Native top bar": "Native top bar",
|
||||||
|
"Requires restart of Freezer!": "Requires restart of Freezer!"
|
||||||
|
}
|
|
@ -161,8 +161,11 @@
|
||||||
"Artists:": "Виконавці:",
|
"Artists:": "Виконавці:",
|
||||||
"Yes": "Так",
|
"Yes": "Так",
|
||||||
"No": "Ні",
|
"No": "Ні",
|
||||||
"Download Filename": "Download Filename",
|
"Download Filename": "Ім'я файлу завантаження",
|
||||||
"Language": "Мова",
|
"Language": "Мова",
|
||||||
"Background Image": "Background Image",
|
"Background Image": "Фонове зображення",
|
||||||
"Enter URL or absolute path. WARNING: Requires reload!": "Enter URL or absolute path. WARNING: Requires reload!"
|
"Enter URL or absolute path. WARNING: Requires reload!": "Введіть URL або абсолютний шлях. УВАГА: необхідне перезавантаження!",
|
||||||
}
|
"LGBT Mode": "LGBT Mode",
|
||||||
|
"Native top bar": "Native top bar",
|
||||||
|
"Requires restart of Freezer!": "Requires restart of Freezer!"
|
||||||
|
}
|
|
@ -164,5 +164,8 @@
|
||||||
"Download Filename": "Download Filename",
|
"Download Filename": "Download Filename",
|
||||||
"Language": "Language",
|
"Language": "Language",
|
||||||
"Background Image": "Background Image",
|
"Background Image": "Background Image",
|
||||||
"Enter URL or absolute path. WARNING: Requires reload!": "Enter URL or absolute path. WARNING: Requires reload!"
|
"Enter URL or absolute path. WARNING: Requires reload!": "Enter URL or absolute path. WARNING: Requires reload!",
|
||||||
}
|
"LGBT Mode": "LGBT Mode",
|
||||||
|
"Native top bar": "Native top bar",
|
||||||
|
"Requires restart of Freezer!": "Requires restart of Freezer!"
|
||||||
|
}
|
|
@ -164,5 +164,8 @@
|
||||||
"Download Filename": "Downwoad Filename",
|
"Download Filename": "Downwoad Filename",
|
||||||
"Language": "Wanguage (Don't change me >w<)",
|
"Language": "Wanguage (Don't change me >w<)",
|
||||||
"Background Image": "Background Image",
|
"Background Image": "Background Image",
|
||||||
"Enter URL or absolute path. WARNING: Requires reload!": "Enter URL or absolute path. WARNING: Requires reload!"
|
"Enter URL or absolute path. WARNING: Requires reload!": "Enter URL or absolute path. WARNING: Requires reload!",
|
||||||
}
|
"LGBT Mode": "LGBT Mode",
|
||||||
|
"Native top bar": "Native top bar",
|
||||||
|
"Requires restart of Freezer!": "Requires restart of Freezer!"
|
||||||
|
}
|
|
@ -163,6 +163,9 @@
|
||||||
"No": "Không",
|
"No": "Không",
|
||||||
"Download Filename": "Tải xuống tên tệp",
|
"Download Filename": "Tải xuống tên tệp",
|
||||||
"Language": "Ngôn ngữ",
|
"Language": "Ngôn ngữ",
|
||||||
"Background Image": "Background Image",
|
"Background Image": "Ảnh nền",
|
||||||
"Enter URL or absolute path. WARNING: Requires reload!": "Enter URL or absolute path. WARNING: Requires reload!"
|
"Enter URL or absolute path. WARNING: Requires reload!": "Nhập URL hoặc đường dẫn hợp lệ. CẢNH BÁO: Yêu cầu tải lại!",
|
||||||
}
|
"LGBT Mode": "LGBT Mode",
|
||||||
|
"Native top bar": "Native top bar",
|
||||||
|
"Requires restart of Freezer!": "Requires restart of Freezer!"
|
||||||
|
}
|
|
@ -164,5 +164,8 @@
|
||||||
"Download Filename": "下载文件名",
|
"Download Filename": "下载文件名",
|
||||||
"Language": "语言",
|
"Language": "语言",
|
||||||
"Background Image": "Background Image",
|
"Background Image": "Background Image",
|
||||||
"Enter URL or absolute path. WARNING: Requires reload!": "Enter URL or absolute path. WARNING: Requires reload!"
|
"Enter URL or absolute path. WARNING: Requires reload!": "Enter URL or absolute path. WARNING: Requires reload!",
|
||||||
}
|
"LGBT Mode": "LGBT Mode",
|
||||||
|
"Native top bar": "Native top bar",
|
||||||
|
"Requires restart of Freezer!": "Requires restart of Freezer!"
|
||||||
|
}
|
|
@ -4,8 +4,8 @@ import router from './js/router';
|
||||||
import vuetify from './js/vuetify';
|
import vuetify from './js/vuetify';
|
||||||
import axios from 'axios';
|
import axios from 'axios';
|
||||||
import VueEsc from 'vue-esc';
|
import VueEsc from 'vue-esc';
|
||||||
import VueSocketIO from 'vue-socket.io';
|
|
||||||
import i18n from './js/i18n';
|
import i18n from './js/i18n';
|
||||||
|
import { io } from "socket.io-client";
|
||||||
|
|
||||||
//Globals
|
//Globals
|
||||||
let ipcRenderer;
|
let ipcRenderer;
|
||||||
|
@ -52,10 +52,9 @@ Vue.prototype.$filesize = (bytes) => {
|
||||||
}
|
}
|
||||||
|
|
||||||
//Sockets
|
//Sockets
|
||||||
Vue.use(new VueSocketIO({
|
Vue.prototype.$io = io("http://localhost:10069", {
|
||||||
connection: process.env.NODE_ENV === 'development' ? "http://localhost:10069" : window.location.toString(),
|
path: '/socket'
|
||||||
options: {path: '/socket'}
|
});
|
||||||
}));
|
|
||||||
|
|
||||||
Vue.config.productionTip = false;
|
Vue.config.productionTip = false;
|
||||||
Vue.use(VueEsc);
|
Vue.use(VueEsc);
|
||||||
|
@ -503,7 +502,7 @@ new Vue({
|
||||||
}, 500);
|
}, 500);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
this.$socket.emit('stateChange', {
|
this.$io.emit('stateChange', {
|
||||||
position: this.position,
|
position: this.position,
|
||||||
duration: this.duration(),
|
duration: this.duration(),
|
||||||
state: this.state,
|
state: this.state,
|
||||||
|
@ -517,6 +516,29 @@ new Vue({
|
||||||
},
|
},
|
||||||
updateLanguage(l) {
|
updateLanguage(l) {
|
||||||
i18n.locale = l;
|
i18n.locale = l;
|
||||||
|
},
|
||||||
|
//For LGBT/Gayming mode
|
||||||
|
primaryColorRainbow() {
|
||||||
|
const colors = ['#F44336', '#E91E63', '#9C27B0', '#673AB7', '#3F51B5', '#2196F3', '#03A9F4',
|
||||||
|
'#00BCD4', '#009688', '#4CAF50', '#8BC34A', '#CDDC39', '#FFEB3B', '#FFC107', '#FF9800', '#FF5722',
|
||||||
|
'#795548', '#607D8B', '#9E9E9E'];
|
||||||
|
let index = 0;
|
||||||
|
setInterval(() => {
|
||||||
|
this.$vuetify.theme.themes.dark.primary = colors[index];
|
||||||
|
this.$vuetify.theme.themes.light.primary = colors[index];
|
||||||
|
this.$root.settings.primaryColor = colors[index];
|
||||||
|
index++;
|
||||||
|
if (index == colors.length)
|
||||||
|
index = 0;
|
||||||
|
}, 400);
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
computed: {
|
||||||
|
//Show or no topbar
|
||||||
|
topBar() {
|
||||||
|
if (!this.settings.electron) return false;
|
||||||
|
return !this.settings.nativeTopBar;
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
|
@ -530,6 +552,18 @@ new Vue({
|
||||||
this.$vuetify.theme.themes.light.primary = this.settings.primaryColor;
|
this.$vuetify.theme.themes.light.primary = this.settings.primaryColor;
|
||||||
if (this.settings.lightTheme)
|
if (this.settings.lightTheme)
|
||||||
this.$vuetify.theme.dark = false;
|
this.$vuetify.theme.dark = false;
|
||||||
|
|
||||||
|
//LGBT mode
|
||||||
|
const lgbt = 'https://upload.wikimedia.org/wikipedia/commons/thumb/4/48/Gay_Pride_Flag.svg/1280px-Gay_Pride_Flag.svg.png';
|
||||||
|
if (this.settings.lgbtMode) {
|
||||||
|
this.settings.backgroundImage = lgbt;
|
||||||
|
this.primaryColorRainbow();
|
||||||
|
} else {
|
||||||
|
//Remove bg image
|
||||||
|
if (this.settings.backgroundImage == lgbt)
|
||||||
|
this.settings.backgroundImage = null;
|
||||||
|
}
|
||||||
|
|
||||||
i18n.locale = this.settings.language;
|
i18n.locale = this.settings.language;
|
||||||
this.volume = this.settings.volume;
|
this.volume = this.settings.volume;
|
||||||
|
|
||||||
|
@ -584,15 +618,15 @@ new Vue({
|
||||||
//Sockets
|
//Sockets
|
||||||
|
|
||||||
//Queue change
|
//Queue change
|
||||||
this.sockets.subscribe('downloads', (data) => {
|
this.$io.on('downloads', (data) => {
|
||||||
this.downloads = data;
|
this.downloads = data;
|
||||||
});
|
});
|
||||||
//Current download change
|
//Current download change
|
||||||
this.sockets.subscribe('currentlyDownloading', (data) => {
|
this.$io.on('currentlyDownloading', (data) => {
|
||||||
this.downloads.threads = data;
|
this.downloads.threads = data;
|
||||||
});
|
});
|
||||||
//Play at offset (for integrations)
|
//Play at offset (for integrations)
|
||||||
this.sockets.subscribe('playOffset', async (data) => {
|
this.$io.on('playOffset', async (data) => {
|
||||||
this.queue.data.splice(this.queue.index + 1, 0, data.track);
|
this.queue.data.splice(this.queue.index + 1, 0, data.track);
|
||||||
await this.skip(1);
|
await this.skip(1);
|
||||||
this.seek(data.position);
|
this.seek(data.position);
|
||||||
|
@ -601,25 +635,25 @@ new Vue({
|
||||||
//Importer
|
//Importer
|
||||||
|
|
||||||
//Start
|
//Start
|
||||||
this.sockets.subscribe('importerInit', (data) => {
|
this.$io.on('importerInit', (data) => {
|
||||||
this.importer = data;
|
this.importer = data;
|
||||||
});
|
});
|
||||||
//New track imported
|
//New track imported
|
||||||
this.sockets.subscribe('importerTrack', (data) => {
|
this.$io.on('importerTrack', (data) => {
|
||||||
this.importer.tracks.push(data);
|
this.importer.tracks.push(data);
|
||||||
});
|
});
|
||||||
//Mark as done
|
//Mark as done
|
||||||
this.sockets.subscribe('importerDone', () => {
|
this.$io.on('importerDone', () => {
|
||||||
this.importer.active = false;
|
this.importer.active = false;
|
||||||
this.importer.done = true;
|
this.importer.done = true;
|
||||||
});
|
});
|
||||||
this.sockets.subscribe('importerError', () => {
|
this.$io.on('importerError', () => {
|
||||||
this.importer.error = true;
|
this.importer.error = true;
|
||||||
this.importer.active = false;
|
this.importer.active = false;
|
||||||
this.importer.done = false;
|
this.importer.done = false;
|
||||||
});
|
});
|
||||||
//Album
|
//Album
|
||||||
this.sockets.subscribe('importerAlbum', a => {
|
this.$io.on('importerAlbum', a => {
|
||||||
//Not downloading, got albumn
|
//Not downloading, got albumn
|
||||||
if (a) {
|
if (a) {
|
||||||
this.$router.push({
|
this.$router.push({
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
<template>
|
<template>
|
||||||
<div class='pa-0' :class='{electron: $root.settings.electron, notop: !$root.settings.electron}'>
|
<div class='pa-0' :class='{electron: $root.topBar, notop: !$root.topBar}'>
|
||||||
|
|
||||||
<v-app-bar dense>
|
<v-app-bar dense>
|
||||||
<v-btn icon @click='close'>
|
<v-btn icon @click='close'>
|
||||||
|
@ -144,7 +144,7 @@
|
||||||
<!-- Queue tab -->
|
<!-- Queue tab -->
|
||||||
<v-tab-item key='queue' v-if='showQueue'>
|
<v-tab-item key='queue' v-if='showQueue'>
|
||||||
<v-list two-line avatar class='overflow-y-auto' style='max-height: calc(100vh - 160px)'>
|
<v-list two-line avatar class='overflow-y-auto' style='max-height: calc(100vh - 160px)'>
|
||||||
<v-virtual-scroll :items='$root.queue.data' item-height='72' benched='5'>
|
<v-virtual-scroll :items='$root.queue.data' item-height='72' benched='5' style='overflow-y: hidden !important'>
|
||||||
<template v-slot:default="{ index, item }">
|
<template v-slot:default="{ index, item }">
|
||||||
<draggable v-model='$root.queue.data' @move='queueMove'>
|
<draggable v-model='$root.queue.data' @move='queueMove'>
|
||||||
<v-lazy min-height="1" transition="fade-transition" :key='"qq" + index'>
|
<v-lazy min-height="1" transition="fade-transition" :key='"qq" + index'>
|
||||||
|
|
|
@ -27,7 +27,7 @@
|
||||||
<v-tabs-items v-model='tab'>
|
<v-tabs-items v-model='tab'>
|
||||||
<!-- Tracks -->
|
<!-- Tracks -->
|
||||||
<v-tab-item key='tracks'>
|
<v-tab-item key='tracks'>
|
||||||
<LibraryTracks height='calc(100vh - 310px)'></LibraryTracks>
|
<LibraryTracks :height='"calc(100vh - " + ($root.topBar ? 310 : 290) + "px)"'></LibraryTracks>
|
||||||
</v-tab-item>
|
</v-tab-item>
|
||||||
|
|
||||||
<!-- Albums -->
|
<!-- Albums -->
|
||||||
|
|
|
@ -176,6 +176,25 @@
|
||||||
<v-list-item-subtitle>{{$t("WARNING: Might require reload to work properly!")}}</v-list-item-subtitle>
|
<v-list-item-subtitle>{{$t("WARNING: Might require reload to work properly!")}}</v-list-item-subtitle>
|
||||||
</v-list-item-content>
|
</v-list-item-content>
|
||||||
</v-list-item>
|
</v-list-item>
|
||||||
|
<!-- LGBT Mode -->
|
||||||
|
<v-list-item>
|
||||||
|
<v-list-item-action>
|
||||||
|
<v-checkbox v-model='$root.settings.lgbtMode' class='pl-2' @click='applyLGBT'></v-checkbox>
|
||||||
|
</v-list-item-action>
|
||||||
|
<v-list-item-content>
|
||||||
|
<v-list-item-title>{{$t("LGBT Mode")}}</v-list-item-title>
|
||||||
|
</v-list-item-content>
|
||||||
|
</v-list-item>
|
||||||
|
<!-- Native top bar -->
|
||||||
|
<v-list-item>
|
||||||
|
<v-list-item-action>
|
||||||
|
<v-checkbox v-model='$root.settings.nativeTopBar' class='pl-2'></v-checkbox>
|
||||||
|
</v-list-item-action>
|
||||||
|
<v-list-item-content>
|
||||||
|
<v-list-item-title>{{$t("Native top bar")}}</v-list-item-title>
|
||||||
|
<v-list-item-subtitle>{{$t("Requires restart of Freezer!")}}</v-list-item-subtitle>
|
||||||
|
</v-list-item-content>
|
||||||
|
</v-list-item>
|
||||||
<!-- Background image -->
|
<!-- Background image -->
|
||||||
<v-text-field
|
<v-text-field
|
||||||
class='px-4 my-2'
|
class='px-4 my-2'
|
||||||
|
@ -372,10 +391,6 @@ export default {
|
||||||
],
|
],
|
||||||
artResolutions: [256, 512, 600, 800, 1000, 1200, 1400, 1600, 1800],
|
artResolutions: [256, 512, 600, 800, 1000, 1200, 1400, 1600, 1800],
|
||||||
colorPicker: false,
|
colorPicker: false,
|
||||||
primaryColorIndex: 0,
|
|
||||||
primaries: ['#F44336', '#E91E63', '#9C27B0', '#673AB7', '#3F51B5', '#2196F3', '#03A9F4',
|
|
||||||
'#00BCD4', '#009688', '#4CAF50', '#8BC34A', '#CDDC39', '#FFEB3B', '#FFC107', '#FF9800', '#FF5722',
|
|
||||||
'#795548', '#607D8B', '#9E9E9E'],
|
|
||||||
|
|
||||||
//Lists from Deezer website
|
//Lists from Deezer website
|
||||||
languageList: ["me", "da", "de", "en", "us", "es", "mx", "fr", "hr", "id", "it", "hu", "ms", "nl", "no", "pl", "br", "pt", "ru", "ro", "sq", "sk", "sl", "sr", "fi", "sv", "tr", "cs", "bg", "uk", "he", "ar", "th", "cn", "ja", "ko"],
|
languageList: ["me", "da", "de", "en", "us", "es", "mx", "fr", "hr", "id", "it", "hu", "ms", "nl", "no", "pl", "br", "pt", "ru", "ro", "sq", "sk", "sl", "sr", "fi", "sv", "tr", "cs", "bg", "uk", "he", "ar", "th", "cn", "ja", "ko"],
|
||||||
|
@ -464,6 +479,10 @@ export default {
|
||||||
this.$vuetify.theme.dark = true;
|
this.$vuetify.theme.dark = true;
|
||||||
this.$vuetify.theme.light = false;
|
this.$vuetify.theme.light = false;
|
||||||
}
|
}
|
||||||
|
},
|
||||||
|
async applyLGBT() {
|
||||||
|
await this.save();
|
||||||
|
window.location.reload();
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
computed: {
|
computed: {
|
||||||
|
@ -492,14 +511,7 @@ export default {
|
||||||
|
|
||||||
//RGB
|
//RGB
|
||||||
if (event.code == 'KeyG' && event.ctrlKey && event.altKey) {
|
if (event.code == 'KeyG' && event.ctrlKey && event.altKey) {
|
||||||
setInterval(() => {
|
this.$root.primaryColorRainbow();
|
||||||
this.$vuetify.theme.themes.dark.primary = this.primaries[this.primaryColorIndex];
|
|
||||||
this.$vuetify.theme.themes.light.primary = this.primaries[this.primaryColorIndex];
|
|
||||||
this.$root.settings.primaryColor = this.primaries[this.primaryColorIndex];
|
|
||||||
this.primaryColorIndex++;
|
|
||||||
if (this.primaryColorIndex == this.primaries.length)
|
|
||||||
this.primaryColorIndex = 0;
|
|
||||||
}, 400);
|
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
{
|
{
|
||||||
"name": "freezer",
|
"name": "freezer",
|
||||||
"private": true,
|
"private": true,
|
||||||
"version": "1.1.19",
|
"version": "1.1.20",
|
||||||
"description": "",
|
"description": "",
|
||||||
"main": "background.js",
|
"main": "background.js",
|
||||||
"scripts": {
|
"scripts": {
|
||||||
|
@ -10,24 +10,24 @@
|
||||||
"author": "",
|
"author": "",
|
||||||
"license": "ISC",
|
"license": "ISC",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"arg": "^4.1.3",
|
"arg": "^5.0.0",
|
||||||
"axios": "^0.21.1",
|
"axios": "^0.21.1",
|
||||||
"browser-id3-writer": "^4.4.0",
|
"browser-id3-writer": "^4.4.0",
|
||||||
"chalk": "^4.1.0",
|
"chalk": "^4.1.1",
|
||||||
"cheerio": "^1.0.0-rc.5",
|
"cheerio": "^1.0.0-rc.9",
|
||||||
"compare-versions": "^3.6.0",
|
"compare-versions": "^3.6.0",
|
||||||
"cors": "^2.8.5",
|
"cors": "^2.8.5",
|
||||||
"discord-rpc": "^3.1.4",
|
"discord-rpc": "^3.2.0",
|
||||||
"express": "^4.17.1",
|
"express": "^4.17.1",
|
||||||
"lastfmapi": "^0.1.1",
|
"lastfmapi": "^0.1.1",
|
||||||
"metaflac-js2": "^1.0.7",
|
"metaflac-js2": "^1.0.7",
|
||||||
"nedb": "^1.8.0",
|
"nedb": "^1.8.0",
|
||||||
"nodeezcryptor": "git+https://git.freezer.life/exttex/nodeezcryptor.git",
|
"nodeezcryptor": "git+https://git.freezer.life/exttex/nodeezcryptor.git",
|
||||||
"sanitize-filename": "^1.6.3",
|
"sanitize-filename": "^1.6.3",
|
||||||
"socket.io": "^2.3.0",
|
"socket.io": "^4.1.2",
|
||||||
"winston": "^3.3.3"
|
"winston": "^3.3.3"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"eslint": "^7.10.0"
|
"eslint": "^7.27.0"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -527,6 +527,11 @@ class DownloadThread {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//Cut path to fit into windows limits
|
||||||
|
if (fn.length >= 249) {
|
||||||
|
fn = fn.substring(0, 249);
|
||||||
|
}
|
||||||
|
|
||||||
//Extension
|
//Extension
|
||||||
if (quality.toString() == '9') {
|
if (quality.toString() == '9') {
|
||||||
fn += '.flac';
|
fn += '.flac';
|
||||||
|
|
|
@ -54,11 +54,12 @@ class Integrations extends EventEmitter {
|
||||||
}
|
}
|
||||||
|
|
||||||
//LastFM Scrobble
|
//LastFM Scrobble
|
||||||
async scrobbleLastFM(title, artist) {
|
async scrobbleLastFM(title, album, artist) {
|
||||||
if (this.settings.lastFM)
|
if (this.settings.lastFM)
|
||||||
this.lastfm.track.scrobble({
|
this.lastfm.track.scrobble({
|
||||||
artist: artist,
|
artist,
|
||||||
track: title,
|
track: title,
|
||||||
|
album,
|
||||||
timestamp: Math.floor((new Date()).getTime() / 1000)
|
timestamp: Math.floor((new Date()).getTime() / 1000)
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
@ -103,35 +104,39 @@ class Integrations extends EventEmitter {
|
||||||
//Called when playback state changed
|
//Called when playback state changed
|
||||||
async updateState(data) {
|
async updateState(data) {
|
||||||
if (this.discordReady) {
|
if (this.discordReady) {
|
||||||
let richPresence = {
|
if (data.state == 2){
|
||||||
state: data.track.artistString,
|
let richPresence = {
|
||||||
details: data.track.title,
|
state: data.track.artistString,
|
||||||
largeImageKey: 'icon',
|
details: data.track.title,
|
||||||
instance: true,
|
largeImageKey: 'icon',
|
||||||
|
instance: true,
|
||||||
|
}
|
||||||
|
//Show timestamp only if playing
|
||||||
|
if (data.state == 2) {
|
||||||
|
Object.assign(richPresence, {
|
||||||
|
startTimestamp: Date.now() - data.position,
|
||||||
|
endTimestamp: (Date.now() - data.position) + data.duration,
|
||||||
|
});
|
||||||
|
}
|
||||||
|
//Enabled discord join
|
||||||
|
if (this.settings.discordJoin) {
|
||||||
|
Object.assign(richPresence, {
|
||||||
|
partySize: 1,
|
||||||
|
partyMax: 10,
|
||||||
|
matchSecret: 'match_secret_' + data.track.id,
|
||||||
|
joinSecret: JSON.stringify({
|
||||||
|
pos: Math.floor(data.position),
|
||||||
|
ts: Date.now(),
|
||||||
|
id: data.track.id
|
||||||
|
}),
|
||||||
|
partyId: 'party_id_' + data.track.id
|
||||||
|
});
|
||||||
|
}
|
||||||
|
//Set
|
||||||
|
this.discordRPC.setActivity(richPresence);
|
||||||
|
} else {
|
||||||
|
this.discordRPC.clearActivity();
|
||||||
}
|
}
|
||||||
//Show timestamp only if playing
|
|
||||||
if (data.state == 2) {
|
|
||||||
Object.assign(richPresence, {
|
|
||||||
startTimestamp: Date.now() - data.position,
|
|
||||||
endTimestamp: (Date.now() - data.position) + data.duration,
|
|
||||||
});
|
|
||||||
}
|
|
||||||
//Enabled discord join
|
|
||||||
if (this.settings.discordJoin) {
|
|
||||||
Object.assign(richPresence, {
|
|
||||||
partySize: 1,
|
|
||||||
partyMax: 10,
|
|
||||||
matchSecret: 'match_secret_' + data.track.id,
|
|
||||||
joinSecret: JSON.stringify({
|
|
||||||
pos: Math.floor(data.position),
|
|
||||||
ts: Date.now(),
|
|
||||||
id: data.track.id
|
|
||||||
}),
|
|
||||||
partyId: 'party_id_' + data.track.id
|
|
||||||
});
|
|
||||||
}
|
|
||||||
//Set
|
|
||||||
this.discordRPC.setActivity(richPresence);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -27,8 +27,14 @@ app.use(express.static(path.join(__dirname, '../client', 'dist')));
|
||||||
app.use(cors({origin: 'http://localhost:8080'}));
|
app.use(cors({origin: 'http://localhost:8080'}));
|
||||||
//Server
|
//Server
|
||||||
const server = require('http').createServer(app);
|
const server = require('http').createServer(app);
|
||||||
const io = require('socket.io').listen(server, {
|
const { Server } = require('socket.io');
|
||||||
|
const io = new Server(server, {
|
||||||
path: '/socket',
|
path: '/socket',
|
||||||
|
//CORS for webpack debug
|
||||||
|
cors: {
|
||||||
|
origin: 'http://localhost:8080',
|
||||||
|
methods: ["GET", "POST"],
|
||||||
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
//Get playback info
|
//Get playback info
|
||||||
|
@ -463,7 +469,7 @@ app.delete('/downloads/:index', async (req, res) => {
|
||||||
//Log listen to deezer & lastfm
|
//Log listen to deezer & lastfm
|
||||||
app.post('/log', async (req, res) => {
|
app.post('/log', async (req, res) => {
|
||||||
//LastFM
|
//LastFM
|
||||||
integrations.scrobbleLastFM(req.body.title, req.body.artists[0].name);
|
integrations.scrobbleLastFM(req.body.title, req.body.album.title, req.body.artists[0].name);
|
||||||
|
|
||||||
//Deezer
|
//Deezer
|
||||||
if (settings.logListen)
|
if (settings.logListen)
|
||||||
|
|
|
@ -44,6 +44,8 @@ class Settings {
|
||||||
this.contentLanguage = 'en';
|
this.contentLanguage = 'en';
|
||||||
this.contentCountry = 'US';
|
this.contentCountry = 'US';
|
||||||
this.sidebarOpen = false;
|
this.sidebarOpen = false;
|
||||||
|
this.lgbtMode = false;
|
||||||
|
this.nativeTopBar = false;
|
||||||
|
|
||||||
//Has to be local path
|
//Has to be local path
|
||||||
this.backgroundImage = null;
|
this.backgroundImage = null;
|
||||||
|
|
Before Width: | Height: | Size: 9.8 KiB After Width: | Height: | Size: 2.0 KiB |
After Width: | Height: | Size: 307 B |
After Width: | Height: | Size: 425 B |
After Width: | Height: | Size: 518 B |
Before Width: | Height: | Size: 10 KiB After Width: | Height: | Size: 5.2 KiB |
After Width: | Height: | Size: 765 B |
After Width: | Height: | Size: 902 B |
After Width: | Height: | Size: 1.1 KiB |
64
package.json
|
@ -1,7 +1,7 @@
|
||||||
{
|
{
|
||||||
"name": "freezer",
|
"name": "freezer",
|
||||||
"private": true,
|
"private": true,
|
||||||
"version": "1.1.19",
|
"version": "1.1.20",
|
||||||
"description": "Freezer PC",
|
"description": "Freezer PC",
|
||||||
"scripts": {
|
"scripts": {
|
||||||
"pack": "electron-builder --dir",
|
"pack": "electron-builder --dir",
|
||||||
|
@ -9,11 +9,11 @@
|
||||||
"postinstall": "electron-builder install-app-deps",
|
"postinstall": "electron-builder install-app-deps",
|
||||||
"build": "cd app && npm i && cd client && npm i && npm run build && cd .. && cd .. && npm run dist"
|
"build": "cd app && npm i && cd client && npm i && npm run build && cd .. && cd .. && npm run dist"
|
||||||
},
|
},
|
||||||
"license": "GNU",
|
"license": "GPL-3.0-or-later",
|
||||||
"homepage": "https://freezer.life",
|
"homepage": "https://freezer.life",
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"electron": "^9.2.1",
|
"electron": "^13.0.1",
|
||||||
"electron-builder": "^22.8.0"
|
"electron-builder": "^22.10.5"
|
||||||
},
|
},
|
||||||
"build": {
|
"build": {
|
||||||
"appId": "com.exttex.freezer",
|
"appId": "com.exttex.freezer",
|
||||||
|
@ -46,32 +46,58 @@
|
||||||
"allowToChangeInstallationDirectory": false
|
"allowToChangeInstallationDirectory": false
|
||||||
},
|
},
|
||||||
"linux": {
|
"linux": {
|
||||||
|
"appId": "f.f.freezer",
|
||||||
|
"category": "AudioVideo;Network;Audio;FileTransfer;Player",
|
||||||
|
"description": "Free music streaming client for Deezer",
|
||||||
|
"desktop": {
|
||||||
|
"Version": "1.1",
|
||||||
|
"Type": "Application",
|
||||||
|
"Name": "Freezer",
|
||||||
|
"Name[pt_PT]": "Congelador",
|
||||||
|
"GenericName": "Electron-based Deezer client",
|
||||||
|
"GenericName[pt_PT]": "Aplicação Electron no ambiente de trabalho para Deezer",
|
||||||
|
"Comment": "Desktop application for the Deezer audio streaming service",
|
||||||
|
"Comment[pt_PT]": "Cliente não-oficial do serviço de transmissão de áudio Deezer",
|
||||||
|
"Icon": "freezer",
|
||||||
|
"Categories": "AudioVideo;Network;Audio;FileTransfer;Player;",
|
||||||
|
"MimeType": "application/http;",
|
||||||
|
"Keywords": "audio;download;flac;lyrics;mp3;music;spotify;stream;",
|
||||||
|
"Keywords[pt_PT]": "áudio;descarregar;flac;letras;mp3;música;spotify;transmissão;",
|
||||||
|
"Keywords[ru]": "Фризер;Музыка;Плеер;Дизер;",
|
||||||
|
"StartupNotify": "true",
|
||||||
|
"StartupWMClass": "freezer",
|
||||||
|
"DBusActivatable": "false",
|
||||||
|
"Terminal": "false",
|
||||||
|
"NoDisplay": "false",
|
||||||
|
"Hidden": "false"
|
||||||
|
},
|
||||||
|
"executableName": "freezer",
|
||||||
|
"icon": "build/iconset",
|
||||||
|
"maintainer": "exttex",
|
||||||
|
"mimeTypes": [
|
||||||
|
"application/http"
|
||||||
|
],
|
||||||
|
"synopsis": "Free audio streaming client for Deezer",
|
||||||
"target": [
|
"target": [
|
||||||
"AppImage",
|
"AppImage",
|
||||||
"deb",
|
"deb",
|
||||||
"tar.gz"
|
"tar.xz"
|
||||||
],
|
]
|
||||||
"category": "audio",
|
|
||||||
"icon": "build/iconset",
|
|
||||||
"maintainer": "exttex"
|
|
||||||
},
|
},
|
||||||
"appImage": {
|
"appImage": {
|
||||||
"desktop": {
|
"desktop": {
|
||||||
"X-AppImage-Name": "Freezer",
|
"X-AppImage-Name": "Freezer"
|
||||||
"Name": "Freezer",
|
|
||||||
"Type": "Application",
|
|
||||||
"Categories": "AudioVideo"
|
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"deb": {
|
"deb": {
|
||||||
|
"packageCategory": "sound",
|
||||||
|
"priority": "optional",
|
||||||
"depends": [
|
"depends": [
|
||||||
"libssl-dev",
|
"libflac8",
|
||||||
"gconf2",
|
|
||||||
"gconf-service",
|
|
||||||
"libnotify4",
|
"libnotify4",
|
||||||
"libappindicator1",
|
"libnss3",
|
||||||
"libxtst6",
|
"libssl1.1 | libssl1.0.0",
|
||||||
"libnss3"
|
"libxtst6"
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|