use registry.feed_handler instead of gPodderFetcher.custom_handlers

This commit is contained in:
Eric Le Lay 2019-08-17 17:48:52 +02:00
parent ba8ed45d11
commit a7fbe0d531
4 changed files with 9 additions and 26 deletions

View File

@ -322,10 +322,10 @@ class gPodderExtension:
def on_load(self):
self.ytdl = gPodderYoutubeDL(self.container.manager.core.config)
logger.info('Registering youtube-dl.')
model.register_custom_handler(self.ytdl)
registry.feed_handler.register(self.ytdl.fetch_channel)
registry.custom_downloader.register(self.ytdl.custom_downloader)
def on_unload(self):
logger.info('Unregistering youtube-dl.')
model.unregister_custom_handler(self.ytdl)
registry.feed_handler.unregister(self.ytdl.fetch_channel)
registry.custom_downloader.unregister(self.ytdl.custom_downloader)

View File

@ -177,13 +177,10 @@ class gPodderFetcher(feedcore.Fetcher):
This class extends the feedcore Fetcher with the gPodder User-Agent and the
Proxy handler based on the current settings in gPodder.
"""
custom_handlers = []
def fetch_channel(self, channel, max_episodes):
for handler in self.custom_handlers:
custom_feed = handler.fetch_channel(channel, max_episodes)
if custom_feed is not None:
return custom_feed
custom_feed = registry.feed_handler.resolve(channel, None, max_episodes)
if custom_feed is not None:
return custom_feed
# If we have a username or password, rebuild the url with them included
# Note: using a HTTPBasicAuthHandler would be pain because we need to
# know the realm. It can be done, but I think this method works, too
@ -199,20 +196,6 @@ class gPodderFetcher(feedcore.Fetcher):
url = escapist_videos.get_real_channel_url(url)
return url
@classmethod
def register(cls, handler):
cls.custom_handlers.append(handler)
@classmethod
def unregister(cls, handler):
cls.custom_handlers.remove(handler)
# The "register" method is exposed here for external usage
register_custom_handler = gPodderFetcher.register
# The "unregister" method is exposed here for external usage
unregister_custom_handler = gPodderFetcher.unregister
# Our podcast model:
#

View File

@ -32,7 +32,7 @@ import urllib.parse
import urllib.request
import gpodder
from gpodder import feedcore, model, util
from gpodder import feedcore, model, registry, util
_ = gpodder.gettext
@ -261,8 +261,8 @@ class SoundcloudFavFeed(SoundcloudFeed):
# Register our URL handlers
model.register_custom_handler(SoundcloudFeed)
model.register_custom_handler(SoundcloudFavFeed)
registry.feed_handler.register(SoundcloudFeed.fetch_channel)
registry.feed_handler.register(SoundcloudFavFeed.fetch_channel)
def search_for_user(query):

View File

@ -84,7 +84,7 @@ RESOLVER_NAMES = {
# 'episode_basename': 'Resolve a good, unique download filename for an episode',
# 'podcast_title': 'Resolve a good title for a podcast',
# 'content_type': 'Resolve the content type (audio, video) of an episode',
# 'feed_handler': 'Handle fetching of a feed',
'feed_handler': 'Handle fetching of a feed',
# 'fallback_feed_handler': 'Handle parsing of a feed (catch-all)',
# 'url_shortcut': 'Expand shortcuts when adding a new URL',
# 'after_download': 'Function to call with episodes after download finishes',