Fix "Download from gpodder.net" (Maemo bug 9093)
Downloading subscriptions from gpodder.net after a fresh re-install should now be possible. All subscriptions from the user will be shown in the OPML selector after logging in to gpodder.net.
This commit is contained in:
parent
549d9185e8
commit
e6158c4f17
|
@ -2941,7 +2941,7 @@ class gPodder(BuilderWidget, dbus.service.Object):
|
|||
gPodderWelcome(self.gPodder,
|
||||
center_on_widget=self.gPodder,
|
||||
show_example_podcasts_callback=self.on_itemImportChannels_activate,
|
||||
setup_my_gpodder_callback=self.on_mygpo_settings_activate)
|
||||
setup_my_gpodder_callback=self.on_download_subscriptions_from_mygpo)
|
||||
|
||||
def download_episode_list_paused(self, episodes):
|
||||
self.download_episode_list(episodes, True)
|
||||
|
@ -3161,6 +3161,30 @@ class gPodder(BuilderWidget, dbus.service.Object):
|
|||
def on_goto_mygpo(self, widget):
|
||||
self.mygpo_client.open_website()
|
||||
|
||||
def on_download_subscriptions_from_mygpo(self, action=None):
|
||||
title = _('Login to gpodder.net')
|
||||
message = _('Please login to download your subscriptions.')
|
||||
success, (username, password) = self.show_login_dialog(title, message, \
|
||||
self.config.mygpo_username, self.config.mygpo_password)
|
||||
if not success:
|
||||
return
|
||||
|
||||
self.config.mygpo_username = username
|
||||
self.config.mygpo_password = password
|
||||
|
||||
dir = gPodderPodcastDirectory(self.gPodder, _config=self.config, \
|
||||
custom_title=_('Subscriptions on gpodder.net'), \
|
||||
add_urls_callback=self.add_podcast_list, \
|
||||
hide_url_entry=True)
|
||||
|
||||
# TODO: Refactor this into "gpodder.my" or mygpoclient, so that
|
||||
# we do not have to hardcode the URL here
|
||||
OPML_URL = 'http://gpodder.net/subscriptions/%s.opml' % self.config.mygpo_username
|
||||
url = util.url_add_authentication(OPML_URL, \
|
||||
self.config.mygpo_username, \
|
||||
self.config.mygpo_password)
|
||||
dir.download_opml_file(url)
|
||||
|
||||
def on_mygpo_settings_activate(self, action=None):
|
||||
settings = MygPodderSettings(self.main_window, \
|
||||
config=self.config, \
|
||||
|
@ -3351,7 +3375,7 @@ class gPodder(BuilderWidget, dbus.service.Object):
|
|||
self.config.opml_url, \
|
||||
self.add_podcast_list, \
|
||||
self.on_itemAddChannel_activate, \
|
||||
self.on_mygpo_settings_activate, \
|
||||
self.on_download_subscriptions_from_mygpo, \
|
||||
self.show_text_edit_dialog)
|
||||
else:
|
||||
dir = gPodderPodcastDirectory(self.main_window, _config=self.config, \
|
||||
|
|
|
@ -858,33 +858,34 @@ def url_add_authentication(url, username, password):
|
|||
return urlparse.urlunsplit(url_parts)
|
||||
|
||||
|
||||
def urlopen(url):
|
||||
"""
|
||||
An URL opener with the User-agent set to gPodder (with version)
|
||||
"""
|
||||
username, password = username_password_from_url(url)
|
||||
if username is not None or password is not None:
|
||||
url = url_strip_authentication(url)
|
||||
password_mgr = urllib2.HTTPPasswordMgrWithDefaultRealm()
|
||||
password_mgr.add_password(None, url, username, password)
|
||||
handler = urllib2.HTTPBasicAuthHandler(password_mgr)
|
||||
opener = urllib2.build_opener(handler)
|
||||
else:
|
||||
opener = urllib2.build_opener()
|
||||
|
||||
headers = {'User-agent': gpodder.user_agent}
|
||||
request = urllib2.Request(url, headers=headers)
|
||||
return opener.open(request)
|
||||
|
||||
def get_real_url(url):
|
||||
"""
|
||||
Gets the real URL of a file and resolves all redirects.
|
||||
"""
|
||||
try:
|
||||
username, password = username_password_from_url(url)
|
||||
if username or password:
|
||||
url = url_strip_authentication(url)
|
||||
log('url=%s, username=%s, password=%s', url, username, password)
|
||||
password_mgr = urllib2.HTTPPasswordMgrWithDefaultRealm()
|
||||
password_mgr.add_password(None, url, username, password)
|
||||
handler = urllib2.HTTPBasicAuthHandler(password_mgr)
|
||||
opener = urllib2.build_opener(handler)
|
||||
return opener.open(url).geturl()
|
||||
else:
|
||||
return urlopen(url).geturl()
|
||||
return urlopen(url).geturl()
|
||||
except:
|
||||
log('Error getting real url for %s', url, traceback=True)
|
||||
return url
|
||||
|
||||
def urlopen(url):
|
||||
"""
|
||||
An URL opener with the User-agent set to gPodder (with version)
|
||||
"""
|
||||
headers = {'User-agent': gpodder.user_agent}
|
||||
request = urllib2.Request(url, headers=headers)
|
||||
return urllib2.urlopen(request)
|
||||
|
||||
def find_command( command):
|
||||
"""
|
||||
|
|
Loading…
Reference in New Issue