def on_load(self): """ Load extension. """ logger.debug('Loading Spotify extension.') spotify_cache.load() try: # gPodder 3.10.16 registry = importlib.import_module('gpodder.registry') registry.feed_handler.register(SpotifyFeed.fetch_episodes) except ModuleNotFoundError: # gPodder 3.10.1 logger.debug( 'gpodder.registry module not found. Using fallback to "register_custom_handler".' ) model.register_custom_handler(SpotifyFeed)
class SoundcloudFavFeed(SoundcloudFeed): URL_REGEX = re.compile( 'https?://([a-z]+\.)?soundcloud\.com/([^/]+)/favorites', re.I) def __init__(self, username): super(SoundcloudFavFeed, self).__init__(username) def get_title(self): return _('%s\'s favorites on Soundcloud') % self.username def get_link(self): return 'https://soundcloud.com/%s/favorites' % self.username def get_description(self): return _('Tracks favorited by %s on Soundcloud.') % self.username def get_new_episodes(self, channel, existing_guids): return self._get_new_episodes(channel, existing_guids, 'favorites') # Register our URL handlers model.register_custom_handler(SoundcloudFeed) model.register_custom_handler(SoundcloudFavFeed) def search_for_user(query): json_url = 'https://api.soundcloud.com/users.json?q=%s&consumer_key=%s' % ( urllib.parse.quote(query), CONSUMER_KEY) return json.loads(util.urlopen(json_url).read().decode('utf-8'))
def get_new_episodes(self, channel, guids): tracks = [] for track in self.playlist.getElementsByTagName('track'): title = self.get_text_contents(track.getElementsByTagName('title')) url = self.get_text_contents(track.getElementsByTagName('location')) if url in guids: continue filesize, filetype, filedate, filename = get_metadata(url) episode = channel.episode_factory({ 'title': title, 'link': '', 'description': '', 'url': url, 'file_size': int(filesize), 'mime_type': filetype, 'guid': url, 'published': filedate, }) episode.save() tracks.append(episode) return tracks # Register our URL handlers model.register_custom_handler(FM4OnDemandPlaylist)
for track in tracks: if track['guid'] not in existing_guids: episode = channel.episode_factory(track) episode.save() episodes.append(episode) return episodes, seen_guids class SoundcloudFavFeed(SoundcloudFeed): URL_REGEX = re.compile('http://([a-z]+\.)?soundcloud\.com/([^/]+)/favorites', re.I) def __init__(self, username): super(SoundcloudFavFeed,self).__init__(username) def get_title(self): return _('%s\'s favorites on Soundcloud') % self.username def get_link(self): return 'http://soundcloud.com/%s/favorites' % self.username def get_description(self): return _('Tracks favorited by %s on Soundcloud.') % self.username def get_new_episodes(self, channel, existing_guids): return self._get_new_episodes(channel, existing_guids, 'favorites') # Register our URL handlers model.register_custom_handler(SoundcloudFeed) model.register_custom_handler(SoundcloudFavFeed)
tracks = [] seen_guids = [] for track in self.playlist.getElementsByTagName('track'): title = self.get_text_contents(track.getElementsByTagName('title')) url = self.get_text_contents( track.getElementsByTagName('location')) seen_guids.append(url) if url in existing_guids: continue filesize, filetype, filedate, filename = get_metadata(url) episode = channel.episode_factory({ 'title': title, 'link': '', 'description': '', 'url': url, 'file_size': int(filesize), 'mime_type': filetype, 'guid': url, 'published': filedate, }) episode.save() tracks.append(episode) return tracks, seen_guids # Register our URL handlers model.register_custom_handler(FM4OnDemandPlaylist)