Пример #1
0
    def get_tracks(self, feed):
        """Get a generator of tracks from a SC user

        The generator will give you a dictionary for every
        track it can find for its user."""
        global CONSUMER_KEY

        json_url = 'http://api.soundcloud.com/users/%(user)s/%(feed)s.json?' \
                   'filter=downloadable&consumer_key=%(consumer_key)s' \
                   % {"user": self.username, "feed": feed, "consumer_key": CONSUMER_KEY}
        tracks = (track for track in util.read_json(json_url) if track['downloadable'])

        for track in tracks:
            # Prefer stream URL (MP3), fallback to download URL
            url = track.get('stream_url', track['download_url']) + \
                '?consumer_key=%(consumer_key)s' % {'consumer_key': CONSUMER_KEY}
            filesize, filetype, filename = get_metadata(url)

            yield {
                'title': track.get('title', track.get('permalink')) or 'Unknown track',
                'link': track.get('permalink_url') or 'http://soundcloud.com/'+self.username,
                'description': track.get('description') or 'No description available',
                'url': url,
                'file_size': int(filesize),
                'mime_type': filetype,
                'guid': track.get('permalink', track.get('id')),
                'published': soundcloud_parsedate(track.get('created_at', None)),
            }
Пример #2
0
 def on_search(self, query):
     json_url = 'http://api.soundcloud.com/users.json?q=%s&consumer_key=%s' % (
         urllib.parse.quote(query), CONSUMER_KEY)
     return [
         directory.DirectoryEntry(entry['username'], entry['permalink_url'])
         for entry in util.read_json(json_url)
     ]
Пример #3
0
    def get_urls(data_config_url):
        data_config = util.read_json(data_config_url)
        for fileinfo in data_config['request']['files'].values():
            if not isinstance(fileinfo, list):
                continue

            for item in fileinfo:
                yield (item['quality'], item['url'])
Пример #4
0
    def get_urls(data_config_url):
        data_config = util.read_json(data_config_url)
        for fileinfo in data_config['request']['files'].values():
            if not isinstance(fileinfo, list):
                continue

            for item in fileinfo:
                yield (item['quality'], item['url'])
Пример #5
0
    def get_coverart(self):
        global CONSUMER_KEY

        json_url = 'http://api.soundcloud.com/users/%s.json?consumer_key=%s' %\
                   (self.username, CONSUMER_KEY)
        user_info = util.read_json(json_url)
        image = user_info.get('avatar_url', None)

        return image
Пример #6
0
    def get_coverart(self):
        global CONSUMER_KEY

        json_url = 'http://api.soundcloud.com/users/%s.json?consumer_key=%s' %\
                   (self.username, CONSUMER_KEY)
        user_info = util.read_json(json_url)
        image = user_info.get('avatar_url', None)

        return image
Пример #7
0
    def get_urls(data_config_url):
        data_config = util.read_json(data_config_url)
        for fileinfo in data_config['request']['files'].values():
            if not isinstance(fileinfo, dict):
                continue

            for fileformat, keys in fileinfo.items():
                if not isinstance(keys, dict):
                    continue

                yield (fileformat, keys['url'])
Пример #8
0
    def on_search(self, query):
        url = 'http://gdata.youtube.com/feeds/api/videos?alt=json&q=%s' % urllib.parse.quote(query)
        data = util.read_json(url)

        result = []

        seen_users = set()
        for entry in data['feed']['entry']:
            user = os.path.basename(entry['author'][0]['uri']['$t'])
            title = entry['title']['$t']
            url = 'http://www.youtube.com/rss/user/%s/videos.rss' % user
            if user not in seen_users:
                result.append(directory.DirectoryEntry(user, url))
                seen_users.add(user)

        return result
Пример #9
0
    def on_search(self, query):
        url = 'http://gdata.youtube.com/feeds/api/videos?alt=json&q=%s' % urllib.parse.quote(query)
        data = util.read_json(url)

        result = []

        seen_users = set()
        for entry in data['feed']['entry']:
            user = os.path.basename(entry['author'][0]['uri']['$t'])
            title = entry['title']['$t']
            url = 'http://www.youtube.com/rss/user/%s/videos.rss' % user
            if user not in seen_users:
                result.append(directory.DirectoryEntry(user, url))
                seen_users.add(user)

        return result
Пример #10
0
    def get_tracks(self, feed):
        """Get a generator of tracks from a SC user

        The generator will give you a dictionary for every
        track it can find for its user."""
        global CONSUMER_KEY

        json_url = 'http://api.soundcloud.com/users/%(user)s/%(feed)s.json?' \
                   'filter=downloadable&consumer_key=%(consumer_key)s' \
                   % {"user": self.username, "feed": feed, "consumer_key": CONSUMER_KEY}
        tracks = (track for track in util.read_json(json_url)
                  if track['downloadable'])

        for track in tracks:
            # Prefer stream URL (MP3), fallback to download URL
            url = track.get('stream_url', track['download_url']) + \
                '?consumer_key=%(consumer_key)s' % {'consumer_key': CONSUMER_KEY}
            filesize, filetype, filename = get_metadata(url)

            yield {
                'title':
                track.get('title', track.get('permalink')) or 'Unknown track',
                'link':
                track.get('permalink_url')
                or 'http://soundcloud.com/' + self.username,
                'description':
                track.get('description') or 'No description available',
                'url':
                url,
                'file_size':
                int(filesize),
                'mime_type':
                filetype,
                'guid':
                track.get('permalink', track.get('id')),
                'published':
                soundcloud_parsedate(track.get('created_at', None)),
            }
Пример #11
0
def directory_entry_from_mygpo_json(url):
    return [
        DirectoryEntry(d['title'], d['url'], d['logo_url'], d['subscribers'],
                       d['description']) for d in util.read_json(url)
    ]
Пример #12
0
 def on_search(self, query):
     json_url = 'http://api.soundcloud.com/users.json?q=%s&consumer_key=%s' % (urllib.parse.quote(query),
                                                                               CONSUMER_KEY)
     return [directory.DirectoryEntry(entry['username'], entry['permalink_url'])
             for entry in util.read_json(json_url)]
Пример #13
0
def directory_entry_from_mygpo_json(url):
    return [
        DirectoryEntry(d["title"], d["url"], d["logo_url"], d["subscribers"], d["description"])
        for d in util.read_json(url)
    ]