def search(self, searchParams, _max, skip): self.videos = [] url = QUrl("http://gdata.youtube.com/feeds/api/videos") url.addQueryItem("max-results", unicode(_max)) url.addQueryItem("start-index", unicode(skip)) if searchParams.keywords(): url.addQueryItem("q", searchParams.keywords()) if searchParams.author() : url.addQueryItem("author", searchParams.author()) self.search_keywords = searchParams.keywords() print "keywords: " + str(self.search_keywords) sort = searchParams.availableSorts[searchParams.sortBy()] url.addQueryItem(sort[0], sort[1]) plugin = MATCHER.match(str(url.toString())) if plugin is not None: self.videos = list(plugin) return self.videos
def run(): """Main function""" try: parser = OptionParser(usage="usage: %prog [options] URL", version=c.VERSION) parser.add_option( "-d", "--download", action="store_true", dest="down", default=False, help="download the video" ) parser.add_option( "-L", "--list-plugins", action="store_true", dest="list_plugins", default=False, help="list plugins used and exit", ) parser.add_option("-p", "--player", dest="player", default=False, help="use your favourite player") parser.add_option("-o", "--output", dest="output", default=False, help="save video to a certain location") parser.add_option( "-q", "--quality", dest="quality", default="all", help="list all, lowest or highest " "quality video formats", ) (options, args) = parser.parse_args() # Validate player option if not options.player: options.player = None elif is_command(options.player): options.player = options.player else: options.player = None print (" *ERROR* " + '"' + str(options.player) + '"' + " is NOT a valid player! Using default player...\n") # Validate quality option. chosen_quality = None for quality in ("all", "lowest", "highest"): if quality.startswith(options.quality): if chosen_quality is None: chosen_quality = quality else: parser.error("ambiguous quality setting") if chosen_quality is not None: options.quality = chosen_quality else: parser.error("unknown quality chosen") if options.list_plugins: print "Installed plugins:" print ", ".join(plugin for plugin in MATCHER.plugins.iterkeys()) print "" print "Disabled plugins:" for plugin, reasons in MATCHER.disabled.iteritems(): print plugin print "\n".join("\t" + reason for reason in reasons) else: valid_videos = [] for url in args: plugin = MATCHER.match(url) if plugin is not None: for medium in plugin: valid_videos.append(medium) if not valid_videos: print "No valid links found." else: handle_videos(valid_videos, options) except KeyboardInterrupt: print "\r" sys.exit()