deemix-gui-pyweb/app.py
2020-05-05 15:08:04 +02:00

160 lines
4.2 KiB
Python

#!/usr/bin/env python3
from deemix.app.queuemanager import addToQueue, removeFromQueue, getQueue, cancelAllDownloads, removeFinishedDownloads
from deemix.utils.misc import getTypeFromLink, getIDFromLink
from deemix.app.settings import initSettings, getSettings, getDefaultSettings, saveSettings
from deemix.app.spotify import SpotifyHelper
settings = {}
spotifyHelper = None
chartsList = []
def getUser(dz):
return dz.user
def initialize():
global settings
global spotifyHelper
global defaultSettings
settings = initSettings()
defaultSettings = getDefaultSettings()
spotifyHelper = SpotifyHelper()
def shutdown(interface=None):
getQueue()
cancelAllDownloads(interface)
if interface:
interface.send("toast", {'msg': "Server is closed."})
def get_charts(dz):
global chartsList
if len(chartsList) == 0:
temp = dz.get_charts_countries()
countries = []
for i in range(len(temp)):
countries.append({
'title': temp[i]['title'].replace("Top ", ""),
'id': temp[i]['id'],
'picture_small': temp[i]['picture_small'],
'picture_medium': temp[i]['picture_medium'],
'picture_big': temp[i]['picture_big']
})
chartsList = countries
return chartsList
def getUserFavorites(dz):
user_id = dz.user['id']
result = {}
try:
result['playlists'] = dz.get_user_playlists(user_id)['data']
result['albums'] = dz.get_user_albums(user_id)['data']
result['artists'] = dz.get_user_artists(user_id)['data']
result['tracks'] = dz.get_user_tracks(user_id)['data']
except:
result['playlists'] = dz.get_user_playlists_gw(user_id)
result['albums'] = dz.get_user_albums_gw(user_id)
result['artists'] = dz.get_user_artists_gw(user_id)
result['tracks'] = dz.get_user_tracks_gw(user_id)
return result
def updateUserSpotifyPlaylists(user):
if user == "" or not spotifyHelper.spotifyEnabled:
return []
return spotifyHelper.get_user_playlists(user)
def updateUserPlaylists(dz):
user_id = dz.user['id']
try:
return dz.get_user_playlists(user_id)['data']
except:
return dz.get_user_playlists_gw(user_id)
def updateUserAlbums(dz):
user_id = dz.user['id']
try:
return dz.get_user_albums(user_id)['data']
except:
return dz.get_user_albums_gw(user_id)
def updateUserArtists(dz):
user_id = dz.user['id']
try:
return dz.get_user_artists(user_id)['data']
except:
return dz.get_user_artists_gw(user_id)
def updateUserTracks(dz):
user_id = dz.user['id']
try:
return dz.get_user_tracks(user_id)['data']
except:
return dz.get_user_tracks_gw(user_id)
def getSpotifyPlaylistTracklist(id):
if id == "" or not spotifyHelper.spotifyEnabled:
return spotifyHelper.emptyPlaylist
return spotifyHelper.get_playlist_tracklist(id)
# Search functions
def mainSearch(dz, term):
return dz.search_main_gw(term)
def search(dz, term, type, start, nb):
return dz.search(term, type, nb, start)
# Queue functions
def addToQueue_link(dz, url, bitrate=None, interface=None):
return addToQueue(dz, spotifyHelper, url, settings, bitrate, interface)
def removeFromQueue_link(uuid, interface=None):
removeFromQueue(uuid, interface)
def cancelAllDownloads_link(interface=None):
cancelAllDownloads(interface)
def removeFinishedDownloads_link(interface=None):
removeFinishedDownloads(interface)
def getQueue_link():
return getQueue()
def analyzeLink(dz, link):
type = getTypeFromLink(link)
relID = getIDFromLink(link, type)
if type in ["track", "album"]:
data = getattr(dz, 'get_' + type)(relID)
else:
data = {}
return (type, data)
# Settings functions
def getDefaultSettings_link():
return defaultSettings
def getSettings_link():
return getSettings()
def saveSettings_link(newSettings):
global settings
settings = newSettings
return saveSettings(newSettings)
def getSpotifyCredentials():
return spotifyHelper.getCredentials()
def setSpotifyCredentials(newCredentials):
return spotifyHelper.setCredentials(newCredentials)