1.1.20 - self describing code (jk read telegram changelog)

This commit is contained in:
exttex 2021-06-01 18:24:44 +02:00
parent 15f7638854
commit 9974c1ea63
53 changed files with 6256 additions and 5255 deletions

View File

@ -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
} }
}); });

File diff suppressed because it is too large Load Diff

View File

@ -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,

View File

@ -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();
}, },

View File

@ -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!"
}

View File

@ -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!"
}

View File

@ -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!"
}

View File

@ -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!"
}

View File

@ -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!"
}

View File

@ -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!"
} }

View File

@ -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!"
}

View File

@ -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!"
}

View File

@ -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!"
}

View File

@ -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!"
}

View File

@ -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!"
}

View File

@ -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!"
}

View File

@ -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!"
}

View File

@ -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!"
}

View File

@ -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!"
}

View File

@ -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!"
}

View File

@ -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!"
}

View File

@ -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!"
}

View File

@ -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!"
}

View File

@ -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!"
}

View File

@ -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!"
}

View File

@ -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!"
}

View File

@ -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!"
}

View File

@ -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!"
}

View File

@ -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!"
}

View File

@ -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!"
}

View File

@ -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!"
}

View File

@ -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!"
}

View File

@ -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!"
}

View File

@ -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!"
}

View File

@ -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({

View File

@ -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'>

View File

@ -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 -->

View File

@ -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);
} }
}); });
} }

2525
app/package-lock.json generated

File diff suppressed because it is too large Load Diff

View File

@ -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"
} }
} }

View File

@ -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';

View File

@ -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);
} }
} }

View File

@ -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)

View File

@ -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;

Binary file not shown.

Before

Width:  |  Height:  |  Size: 9.8 KiB

After

Width:  |  Height:  |  Size: 2.0 KiB

BIN
build/iconset/16x16.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 307 B

BIN
build/iconset/22x22.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 425 B

BIN
build/iconset/24x24.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 518 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 10 KiB

After

Width:  |  Height:  |  Size: 5.2 KiB

BIN
build/iconset/32x32.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 765 B

BIN
build/iconset/48x48.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 902 B

BIN
build/iconset/64x64.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

View File

@ -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"
] ]
} }
} }