Пример #1
0
    def __init__(self, track_data, **kwargs):
        """ Track object initialization, load track metadata. """
        if "client" in kwargs:
            self.client = kwargs.get("client")
        elif "client_id" in kwargs:
            self.client = sclient(kwargs.get("client_id"))
        else:
            self.client = sclient()

        def map(key, data):
            return str(data[key]) if key in data else ""

        self.metadata = {
            "id": track_data["id"],
            "title": map("title", track_data),
            "permalink": map("permalink", track_data),
            "username": map("permalink", track_data["user"]),
            "artist": map("username", track_data["user"]),
            "user-url": map("permalink_url", track_data["user"]),
            "downloadable": track_data["downloadable"],
            "original-format": map("original_format", track_data),
            "created-at": map("created_at", track_data),
            "duration": map("duration", track_data),
            "tags-list": map("tags_list", track_data),
            "genre": map("genre", track_data),
            "description": map("description", track_data),
            "license": map("license", track_data),
            "uri": map("uri", track_data),
            "permalink-url": map("permalink_url", track_data),
            "artwork-url": map("artwork_url", track_data).replace("large", "crop"),
        }
Пример #2
0
    def __init__(self, track_data, **kwargs):
        """ Track object initialization, load track metadata. """
        if "client" in kwargs:
            self.client = kwargs.get("client")
        elif "client_id" in kwargs:
            self.client = sclient(kwargs.get("client_id"))
        else:
            self.client = sclient()

        def map(key, data):
            return str(data[key]) if key in data else ""

        self.metadata = {
            "id": track_data["id"],
            "title": map("title", track_data),
            "permalink": map("permalink", track_data),
            "username": map("permalink", track_data["user"]),
            "artist": map("username", track_data["user"]),
            "user-url": map("permalink_url", track_data["user"]),
            "downloadable": track_data["downloadable"],
            "original-format": map("original_format", track_data),
            "created-at": map("created_at", track_data),
            "duration": map("duration", track_data),
            "tags-list": map("tags_list", track_data),
            "genre": map("genre", track_data),
            "description": map("description", track_data),
            "license": map("license", track_data),
            "uri": map("uri", track_data),
            "permalink-url": map("permalink_url", track_data),
            "artwork-url": map("artwork_url",
                               track_data).replace("large", "crop"),
        }
Пример #3
0
 def test_init_auto_get_client_id(self):
     """
     Test object init get automatically client_id
     when not passed in args.
     """
     sclient.get_client_id = Mock()
     sclient()
     sclient.get_client_id.assert_called_once()
Пример #4
0
    def __init__(self, username, **kwargs):
        """ Initialize soundcloud's user object. """
        self.name = username

        if "client" in kwargs:
            self.client = kwargs.get("client")
        elif "client_id" in kwargs:
            self.client = sclient(kwargs.get("client_id"))
        else:
            self.client = sclient()
Пример #5
0
    def __init__(self, username, **kwargs):
        """ Initialize soundcloud's user object. """
        self.name = username

        if "client" in kwargs:
            self.client = kwargs.get("client")
        elif "client_id" in kwargs:
            self.client = sclient(kwargs.get("client_id"))
        else:
            self.client = sclient()
Пример #6
0
    def __init__(self, track_data, **kwargs):
        """ Track object initialization, load track metadata. """
        if "client" in kwargs:
            self.client = kwargs.get("client")
        elif "client_id" in kwargs:
            self.client = sclient(kwargs.get("client_id"))
        else:
            self.client = sclient()

        self.metadata = {
            "id": track_data["id"],
            "title": track_data["title"],
            "permalink": track_data["permalink"],
            "username": track_data["user"]["permalink"],
            "downloadable": track_data["downloadable"],
            "ext": track_data["original_format"],
        }
Пример #7
0
    def __init__(self, playlist_data, **kwargs):
        """ Playlist object initialization, load playlist metadata. """
        if "client" in kwargs:
            self.client = kwargs.get("client")
        elif "client_id" in kwargs:
            self.client = sclient(kwargs.get("client_id"))
        else:
            self.client = sclient()

        tracks = []
        for track in playlist_data["tracks"]:
            tracks.append(strack(track, client=self.client))

        def map(key, data):
            return str(data[key]) if key in data else ""

        self.metadata = {
            "duration": map("duration", playlist_data),
            "release-day": map("release_day", playlist_data),
            "permalink-url": map("permalink_url", playlist_data),
            "reposts-count": map("reposts_count", playlist_data),
            "genre": map("genre", playlist_data),
            "permalink": map("permalink", playlist_data),
            "purchase-url": map("purchase_url", playlist_data),
            "release-month": map("release_month", playlist_data),
            "description": map("description", playlist_data),
            "uri": map("uri", playlist_data),
            "label-name": map("label_name", playlist_data),
            "tag-list": map("tag_list", playlist_data),
            "release-year": map("release_year", playlist_data),
            "track-count": map("track_count", playlist_data),
            "user-id": map("user_id", playlist_data),
            "last-modified": map("last_modified", playlist_data),
            "license": map("license", playlist_data),
            "tracks": tracks
        }
Пример #8
0
 def test_get_protocol_http(self):
     """ Test get protocol when port is different to 443. """
     object = sclient("my_id", port="80")
     self.assertEquals("http", object.get_protocol())
Пример #9
0
 def test_get_protocol_https(self):
     """ Test get protocol when port equals 443. """
     object = sclient("my_id", port="443")
     self.assertEquals("https", object.get_protocol())
Пример #10
0
 def test_init_with_kwargs(self):
     """ Test object initialization with kwargs. """
     object = sclient("my_id", host="my_host", port="my_port")
     self.assertEquals("my_host", object.host)
     self.assertEquals("my_port", object.port)
Пример #11
0
 def test_init(self):
     """ Test basic object initialization. """
     object = sclient("my_id")
     self.assertEquals("my_id", object.client_id)
Пример #12
0
    print(serror("Error: output directory `%s` doesn's exists." %
                 args.output_dir))
    exit(1)

offset = 0
limit = 50
if args.offset:
    offset = args.offset
if args.limit:
    if args.limit > 200:
        print(serror("Error: tracks limit limited to 200 tracks.."))
        exit(2)
    limit = args.limit

try:
    sclient = sclient(args.client_id)
    suser = suser(args.user, client=sclient)
except serror as e:
    print(e)
    exit(3)

tracks_getter = suser.get_likes
if args.tracks:
    tracks_getter = suser.get_tracks

if args.recursive:
    while True:
        nb = downloader(tracks_getter, args.output_dir, offset, limit)
        if nb == 0:
            break