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:
Thomas Perl 2010-05-12 13:38:31 +02:00
parent 549d9185e8
commit e6158c4f17
2 changed files with 45 additions and 20 deletions

View File

@ -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, \

View File

@ -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):
"""