Esempio n. 1
0
 def __init__(self):
     self.__youtube = Youtube()
     self.__spotify = Spotify()
     self.__editor = TagEditor()
     self.__last = LastFM()
     self.__apple = AppleMusic()
     self.__deezer = Deezer()
Esempio n. 2
0
 def get_playlist(query: int):
     try:
         api_result = Deezer().api.get_playlist(query)
     except deezer.errors.PermissionException:
         logger.warning(f"   [!] Playlist ID {query} is private")
         return
     except deezer.errors.DataException:
         logger.warning(f"   [!] Playlist ID {query} was not found")
         return
     except json.decoder.JSONDecodeError:
         logger.error(f"   [!] Empty response from API while getting data for playlist ID {query}, retrying...")
         try:
             api_result = Deezer().api.get_playlist(query)
         except json.decoder.JSONDecodeError:
             logger.error(f"   [!] API still sending empty response while getting data for playlist ID {query}")
             return
     return {'id': query, 'title': api_result['title'],
             'link': f"https://deezer.com/playlist/{str(api_result['id'])}"}
Esempio n. 3
0
    def __init__(self):
        deezer_app_id = getenv("DEEZER_application_id")
        deezer_secret_key = getenv("DEEZER_secret_key")
        scope = "basic_access,manage_library"

        # login
        logging.info("Starting Deezer client")
        self.deezer_client = Deezer(access_token=deezer_authorize(
            deezer_app_id, deezer_secret_key, scope))
Esempio n. 4
0
 def __init__(self):
     self.max_threads = 2
     self.dz = Deezer()
     
     # Make our session threadsafe
     PlatformAPI.TOKEN = self.dz.gw.get_user_data()['checkForm']
     self.dz.gw._get_token = self._get_token
     
     self.platform = self.get_platform()
     self.account_type = self.get_account_type()
     self.api = self.set_platform()
Esempio n. 5
0
 def get_account_type(self):
     temp_dz = Deezer()
     temp_dz.login_via_arl(config.arl())
     if temp_dz.get_session()['current_user'].get('can_stream_lossless'):
         logger.debug(f"Deezer account type is \"Hi-Fi\"")
         return "hifi"
     elif temp_dz.get_session()['current_user'].get('can_stream_hq'):
         logger.debug(f"Deezer account type is \"Premium\"")
         return "premium"
     else:
         logger.debug(f"Deezer account type is \"Free\"")
         return "free"
Esempio n. 6
0
 def getConfigArl(self):
     tempDz = Deezer()
     arl = None
     if (self.configFolder / '.arl').is_file():
         with open(self.configFolder / '.arl', 'r') as f:
             arl = f.readline().rstrip("\n")
         if not tempDz.login_via_arl(arl):
             print("Saved ARL mistyped or expired, please enter a new one")
             return self.getArl(tempDz)
     else:
         return self.getArl(tempDz)
     return arl
Esempio n. 7
0
 def get_playlist_tracks(query: dict):
     track_list = []
     try:
         api_result = Deezer().api.get_playlist(query['id'])
     except deezer.errors.PermissionException:
         logger.warning(f"   [!] Playlist ID {query} is private")
         return
     except deezer.errors.DataException:
         logger.warning(f"   [!] Playlist ID {query} was not found")
         return
     except json.decoder.JSONDecodeError:
         logger.error(f"   [!] Empty response from API while getting data for playlist ID {query['id']}")
         try:
             api_result = Deezer().api.get_playlist(query['id'])
         except json.decoder.JSONDecodeError:
             logger.error(f"   [!] API still sending empty response while getting data for playlist ID {query['id']}")
             return
     for track in api_result['tracks']['data']:
         track_list.append({'id': track['id'], 'title': track['title'],
                            'artist_id': track['artist']['id'],
                            'artist_name': track['artist']['name']})
     query['tracks'] = track_list
     return query
Esempio n. 8
0
    def __init__(self):
        logger.debug("Initializing deemix library")
        self.db = Database()
        self.dz = Deezer()

        if config.deemix_path() == "":
            self.config_dir = localpaths.getConfigFolder()
        else:
            self.config_dir = Path(config.deemix_path())

        self.dx_settings = LoadSettings(self.config_dir)

        logger.debug("deemix " + deemix.__version__)
        logger.debug(f"deemix config path: {self.config_dir}")
Esempio n. 9
0
    def __init__(self):
        self.api = api.PlatformAPI()
        self.artist_id: int = None
        self.artist: str = None
        self.choices: list = []
        self.status_message: str = None
        self.queue_list = []
        self.select_mode = False
        self.explicit_only = False
        self.search_results: str = None

        self.sort: str = "release_date"
        self.filter: str = None
        self.desc: bool = True

        self.db = db.Database()
        self.dz = Deezer()
Esempio n. 10
0
def main():

    print('\nThis script will print out every album and song of a specific artist.')

    # initialize the main class
    deezer = Deezer()

    # taking the user input
    user_input = input('What artist do you want to see? > ').lower()

    # creating a generator object with all the artists found
    artists = deezer.search(user_input, 'artist')

    album_count = 1
    track_count = 1

    for artist in artists:

        # if the specific artis is found
        if artist.name.lower() == user_input:

            # print artist name
            print('\nArtist: %s\n' % (artist.name))

            # for every album of the artist
            for album in artist.albums():
                
                # print current count and album name
                print('Album: %s - %s\n' % (album_count, album.title))

                # every new album increment this counter
                album_count += 1

                # for every track of every album
                for track in album.tracks():

                    # print current track count and track title
                    print('\tTrack: %s - %s' % (track_count, track.title))

                    # every new track increment this counter
                    track_count +=1

                # reset the track count every new album and print new line
                track_count = 1
                print()
Esempio n. 11
0
def login(arl, force=False, child=0):
    global first_connection

    if not app.isDeezerAvailable:
        emit('logged_in', {'status': LoginStatus.NOT_AVAILABLE, 'arl': arl, 'user': session['dz'].current_user})
        return

    if child == None: child = 0
    arl = arl.strip()
    emit('logging_in')

    if force: session['dz'] = Deezer()
    result = app.login(session['dz'], arl, int(child))
    if force and result == LoginStatus.SUCCESS: result = LoginStatus.FORCED_SUCCESS

    emit('logged_in', {'status': result, 'arl': arl, 'user': session['dz'].current_user})
    if first_connection and result in [LoginStatus.SUCCESS, LoginStatus.FORCED_SUCCESS]:
        first_connection = False
        app.restoreDownloadQueue(session['dz'], socket_interface)
    if result != 0:
        emit('familyAccounts', session['dz'].childs)
        emit('init_favorites', app.getUserFavorites(session['dz']))
Esempio n. 12
0
def on_connect():
    session['dz'] = Deezer()
    (settings, spotifyCredentials, defaultSettings) = app.getAllSettings()
    session['dz'].set_accept_language(settings.get('tagsLanguage'))
    emit('init_settings', (settings, spotifyCredentials, defaultSettings))

    if first_connection:
        app.checkForUpdates()
        app.checkDeezerAvailability()

    emit('init_update',{
            'currentCommit': app.currentVersion,
            'latestCommit': app.latestVersion,
            'updateAvailable': app.updateAvailable,
            'deemixVersion': deemix_version
        }
    )

    if arl:
        login(arl)
    else:
        emit('init_autologin')

    queue, queueComplete, queueList, currentItem = app.initDownloadQueue()
    if len(queueList.keys()):
        emit('init_downloadQueue',{
            'queue': queue,
            'queueComplete': queueComplete,
            'queueList': queueList,
            'currentItem': currentItem
        })

    #emit('init_home', app.get_home(session['dz']))
    #emit('init_charts', app.get_charts(session['dz']))

    if app.updateAvailable: emit('updateAvailable')
    if not app.isDeezerAvailable: emit('deezerNotAvailable')
Esempio n. 13
0
#!/usr/bin/env python3
from deezer import Deezer
import sys

if __name__ == '__main__':
    if len(sys.argv) > 1:
        dz = Deezer()
        releases = dz.gw.get_artist_discography_tabs(sys.argv[1], 100)
        for type in releases:
            for release in releases[type]:
                print(release['id'])
Esempio n. 14
0
def logout():
    if session['dz'].logged_in:
        session['dz'] = Deezer()
    emit('logged_out')
Esempio n. 15
0
            "Compare iTunes and cached versions of playlists to re-sync (fixes problems from program crash, also reverts user modifications)? [y/n] "
        ) == "y"
    else:
        fix_itunes = False
    make_m3u = input(
        "Make m3u files (stored in the playlists folder)? [y/n] ") == "y"
    verify_path_lengths = input(
        "Rename files too long to copy to Android? [y/n] ") == "y"
    copy_to_android = input(
        "Copy music and playlists to Android Music folder? (Won't waste time overwriting, make sure to enable USB debugging) [y/n] "
    ) == "y"

account_manager = AccountManager(logger)
account_manager.login_spotify()

deezer_object = Deezer()
account_manager.login_deezer(deezer_object)

music_directory = str(Path.cwd().parents[0] / "music")

youtube_tag_dict = collections.OrderedDict()
youtube_manager = YoutubeManager(log_manager, logger, account_manager.spotipy,
                                 music_directory, youtube_tag_dict)

playlist_manager = PlaylistManager(logger=logger,
                                   account_manager=account_manager)

if get_user_playlists:
    playlist_manager.retrieve_spotify_playlists()
if get_custom_playlists:
    playlist_manager.retrieve_custom_playlists()