Ejemplo n.º 1
0
    def __init__(self):
        self.a_deezer = 'deezer'
        self.a_tidal = 'tidal'
        self.a_qobuz = 'qobuz'
        self.a_dtq = 'dtq'  # all combined for track, album search
        self.a_soundcloud = 'soundcloud'
        self.a_napster = 'napster'
        self.a_gpm = 'gpm'
        self.a_spotify = 'spotify'

        self.deezer = Deezer()
        self.tidal = Tidal()
        self.qobuz = Qobuz()
        self.soundcloud = Soundcloud(cc.soundcloud_username)
        self.napster = Napster(cc.napster_api_token)
        self.gpm = GPM(cc.gpm_device_id) if cc.gpm_enabled else None
        self.active = 'deezer'

        self.spotify_conversion = self.deezer

        # services is mostly used for api workers
        # and to check which services are logged in
        self.services = {
            self.a_deezer: self.deezer,
            self.a_tidal: self.tidal,
            self.a_qobuz: self.qobuz,
            # self.a_soundcloud: self.soundcloud,
            self.a_napster: self.napster,
        }
        if cc.gpm_enabled:
            self.services[self.a_gpm] = self.gpm
        # self.services['spotify'] = self.services[cc.spotify_default_service]

        self.download_workers = []
        self.queue = Queue()
Ejemplo n.º 2
0
def show_playlists(napster: Napster):
    # a list of all playlists
    playlists = napster.get_user_playlists_data()
    cli.dtq_cli.ptable(playlists,
                       blacklist=['image', 'description'],
                       truncated=False,
                       row_number=False)
Ejemplo n.º 3
0
def grab_track(song_id, napster: Napster):
    if song_id.startswith('http'):
        return grab_track_from_url(song_id, napster)
    track = napster.get_track(song_id)
    if cc.concurrency:
        return chimera.concurrency.blackhole(track, 'track')
    ds = any_track(track,
                   napster,
                   overwrite=cc.dl_track_overwrite,
                   add_to_db=cc.dl_track_add_to_db,
                   check_db=cc.dl_track_check_db)
    cli.utils.parse_ds(ds)
Ejemplo n.º 4
0
def create_services():
    """used for api workers"""
    services = {
        'deezer': Deezer(),
        'tidal': Tidal(),
        'qobuz': Qobuz(),
        # 'soundcloud': Soundcloud(cc.soundcloud_username),
        'napster': Napster(cc.napster_api_token),
    }
    if cc.gpm_enabled:
        services['gpm'] = GPM(cc.gpm_device_id)
    services['spotify'] = services[cc.spotify_default_service]
    return services
Ejemplo n.º 5
0
class NapsterTest(unittest.TestCase):
    def setUp(self):
        self.napster = Napster(cc.napster_api_token)
        master_login(napster=self.napster, verbose=False)

    def test_track_download(self):
        track = self.napster.get_track(365693021)
        track.update_tags(self.napster)
        ds = any_track(track, self.napster)
        track.update_tags(ds.file_name)
        self.assertTrue(ds.failed == False)

    def test_track_metadata(self):
        track = self.napster.get_track(365693021)
        track.update_tags(self.napster)
        tagger = Tagger(track, '.m4a')

    def test_album_metadata(self):
        album = self.napster.get_album('alb.365693020')
        for track in album.songs:
            track.update_tags(self.napster)
            tagger = Tagger(track, '.m4a')
Ejemplo n.º 6
0
def grab_album(album_id, napster: Napster):
    if album_id.startswith('http'):
        return grab_album_from_url(album_id, napster)
    album = napster.get_album(album_id)
    if cc.concurrency:
        return chimera.concurrency.blackhole(album, 'album')
    print('grabbing napster album %s' % album.title)
    for track in album.songs:
        ds = any_track(track,
                       napster,
                       overwrite=cc.dl_album_overwrite,
                       add_to_db=cc.dl_album_add_to_db,
                       check_db=cc.dl_album_check_db)
        if ds.failed:
            pred(ds.reason)
Ejemplo n.º 7
0
 def setUp(self):
     self.napster = Napster(cc.napster_api_token)
     master_login(napster=self.napster, verbose=False)
Ejemplo n.º 8
0
def search_album(napster: Napster):
    q = input('search album: ')
    albums = napster.search_album(q)
    cli.dtq_cli.search_album(napster=napster, dtq_albums=albums)
Ejemplo n.º 9
0
def search_track(napster: Napster):
    q = input('search track: ')
    tracks = napster.search_track(q)
    cli.dtq_cli.search_track(napster=napster, dtq_tracks=tracks)
Ejemplo n.º 10
0
def grab_playlist(playlist_id, napster: Napster):
    playlist = napster.get_playlist(playlist_id)
    if cc.concurrency:
        return chimera.concurrency.blackhole(playlist, 'playlist')
    print('grabbing napster playlist %s' % playlist.name)
    any_playlist(playlist, napster, m3u=cc.m3u, log_missing=True)