def should_load_url(self, url, mimetype=None): """Returns True if the Miro browser should handle the url and False otherwise. Situations which should return false: * if the url is something that Miro should download instead * other things? """ if mimetype is not None: logging.debug("got %s (%s)", url, mimetype) else: logging.debug("got %s", url) if url in self.seen_cache: del self.seen_cache[url] return True url = util.to_uni(url) if subscription.is_subscribe_link(url): messages.SubscriptionLinkClicked(url).send_to_backend() return False def unknown_callback(url): call_on_ui_thread(self.handle_unknown_url, url) if filetypes.is_maybe_rss_url(url): logging.debug("miro wants to handle %s", url) messages.DownloadURL(url, unknown_callback).send_to_backend() return False # parse the path out of the url and run that through the filetypes # code to see if it might be a video, audio or torrent file. # if so, try downloading it. ret = urlparse(url) if filetypes.is_allowed_filename(ret[2]): logging.debug("miro wants to handle %s", url) messages.DownloadURL(url, unknown_callback).send_to_backend() return False if mimetype is not None and filetypes.is_allowed_mimetype(mimetype): logging.debug("miro wants to handle %s", url) messages.DownloadURL(url, unknown_callback).send_to_backend() return False return True
def should_load_url(self, url): """Returns True if the Miro browser should handle the url and False otherwise. Situations which should return false: * if the url is something that Miro should download instead * other things? """ logging.debug("got %s", url) if url in self.seen_cache: del self.seen_cache[url] return True url = util.to_uni(url) if subscription.is_subscribe_link(url): self.emit('download-started') messages.SubscriptionLinkClicked(url).send_to_backend() return False if filetypes.is_maybe_rss_url(url): logging.debug("miro wants to handle %s", url) self.emit('download-started') messages.DownloadURL(url, self.unknown_callback).send_to_backend() return False # parse the path out of the url and run that through the filetypes # code to see if it might be a video, audio or torrent file. # if so, try downloading it. ret = urlparse(url) if filetypes.is_allowed_filename(ret[2]): logging.debug("miro wants to handle %s", url) self.emit('download-started') messages.DownloadURL(url, self.unknown_callback).send_to_backend() return False if util.is_magnet_uri(url): logging.debug("miro wants to handle %s", url) self.emit('download-started') messages.DownloadURL(url, self.unknown_callback).send_to_backend() return False return True
def on_hotspot_clicked(self, itemview, name, iter_): """Hotspot handler for ItemViews.""" item_info, attrs = itemview.model[iter_] if name == 'download': if item_info.remote: name = 'download-sharing-item' elif item_info.device: name = 'download-device-item' if name in ('download', 'thumbnail-download'): messages.StartDownload(item_info.id).send_to_backend() elif name == 'pause': messages.PauseDownload(item_info.id).send_to_backend() elif name == 'resume': messages.ResumeDownload(item_info.id).send_to_backend() elif name == 'cancel': messages.CancelDownload(item_info.id).send_to_backend() elif name == 'keep': messages.KeepVideo(item_info.id).send_to_backend() app.saved_items.add(item_info.id) elif name == 'stop_seeding': messages.StopUpload(item_info.id).send_to_backend() elif name == 'start_seeding': messages.StartUpload(item_info.id).send_to_backend() elif name == 'delete': app.widgetapp.remove_items(selection=[item_info]) elif name == 'remove': messages.RemoveVideosFromPlaylist( itemview.playlist_id, [item_info.id]).send_to_backend() elif name == 'visit_webpage': app.widgetapp.open_url(item_info.permalink) elif name == 'visit_comments': app.widgetapp.open_url(item_info.commentslink) elif name == 'visit_filelink': app.widgetapp.open_url(item_info.file_url) elif name == 'visit_license': app.widgetapp.open_url(item_info.license) elif name == 'show_local_file': app.widgetapp.check_then_reveal_file(item_info.video_path) elif name == 'show_contents': app.display_manager.push_folder_contents_display(item_info) elif name == 'cancel_auto_download': messages.CancelAutoDownload(item_info.id).send_to_backend() elif name.startswith('description-link:'): url = name.split(':', 1)[1] try: base_href = widgetutil.get_feed_info( item_info.feed_id).base_href except KeyError: logging.warn("Feed not present when clicking link (%s)", item_info.feed_id) # Feed is not around anymore for some reason (#13310). # Try without base_href else: url = urljoin(base_href, url) if subscription.is_subscribe_link(url): messages.SubscriptionLinkClicked(url).send_to_backend() else: app.widgetapp.open_url(url) elif name in ('play', 'thumbnail-play'): self._play_item_list(item_info.id) elif name == 'play_pause': if app.playback_manager.is_playing_item(item_info): app.playback_manager.toggle_paused() else: self._play_item_list(item_info.id) elif name.startswith('rate:'): rating = int(name.split(':', 1)[1]) messages.RateItem(item_info, rating).send_to_backend() elif name == 'download-device-item': messages.DownloadDeviceItems([item_info]).send_to_backend() elif name == 'download-sharing-item': messages.DownloadSharingItems([item_info]).send_to_backend() else: logging.debug("ItemView doesn't know how to handle hotspot %s.", name)
def on_hotspot_clicked(self, itemview, name, iter): """Hotspot handler for ItemViews.""" item_info = itemview.model[iter][0] show_details = itemview.model[iter][1] if name in ('download', 'thumbnail-download'): messages.StartDownload(item_info.id).send_to_backend() elif name == 'pause': messages.PauseDownload(item_info.id).send_to_backend() elif name == 'resume': messages.ResumeDownload(item_info.id).send_to_backend() elif name == 'cancel': messages.CancelDownload(item_info.id).send_to_backend() elif name == 'keep': messages.KeepVideo(item_info.id).send_to_backend() elif name == 'stop_seeding': messages.StopUpload(item_info.id).send_to_backend() elif name == 'start_seeding': messages.StartUpload(item_info.id).send_to_backend() elif name == 'delete': app.widgetapp.remove_items(selection=[item_info]) elif name == 'remove': messages.RemoveVideosFromPlaylist( itemview.playlist_id, [item_info.id]).send_to_backend() elif name == 'details_toggle': itemview.model.update_value(iter, 1, not show_details) itemview.model_changed() itemview.invalidate_size_request() elif name == 'visit_webpage': app.widgetapp.open_url(item_info.permalink) elif name == 'visit_comments': app.widgetapp.open_url(item_info.commentslink) elif name == 'visit_filelink': app.widgetapp.open_url(item_info.file_url) elif name == 'visit_license': app.widgetapp.open_url(item_info.license) elif name == 'show_local_file': app.widgetapp.check_then_reveal_file(item_info.video_path) elif name == 'show_contents': app.display_manager.push_folder_contents_display(item_info) elif name == 'cancel_auto_download': messages.CancelAutoDownload(item_info.id).send_to_backend() elif name.startswith('description-link:'): url = name.split(':', 1)[1] try: base_href = widgetutil.get_feed_info(item_info.feed_id).base_href except ValueError: logging.warn("Feed not present when clicking link (%s)", item_info.feed_id) # Feed is not around anymore for some reason (#13310). # Ignore the click. return if subscription.is_subscribe_link(url): messages.SubscriptionLinkClicked(url).send_to_backend() else: app.widgetapp.open_url(urljoin(base_href, url)) elif name in ('play', 'thumbnail-play'): id = item_info.id items = itemview.item_list.get_items(start_id=id) self._play_item_list(items) elif name == 'play_pause': app.playback_manager.play_pause() elif name.startswith('rate:'): rating = int(name.split(':', 1)[1]) messages.RateItem(item_info.id, rating).send_to_backend() else: logging.debug("ItemView doesn't know how to handle hotspot %s.", name)