def run_main(parser, options, args, output=sys.stdout): """Run the main scripts from the parsed options/args.""" if options.get_categories: output.write(" ".join(Youtube.get_categories().keys()) + "\n") return elif (options.create_playlist or options.add_to_playlist or options.delete_from_playlist or options.update_metadata): required_options = ["email"] else: if not args: parser.print_usage() raise VideoArgumentMissing("Specify a video file to upload") required_options = ["email", "title", "category"] missing = [opt for opt in required_options if not getattr(options, opt)] if missing: parser.print_usage() raise OptionsMissing("Some required option are missing: %s" % ", ".join(missing)) if options.password is None: password = getpass.getpass("Password for account <%s>: " % options.email) elif options.password == "-": password = sys.stdin.readline().strip() else: password = options.password youtube = Youtube(DEVELOPER_KEY) debug("Login to Youtube API: email='%s', password='******'" % (options.email, "*" * len(password))) try: youtube.login(options.email, password, captcha_token=options.captcha_token, captcha_response=options.captcha_response) except gdata.service.BadAuthentication: raise BadAuthentication("Authentication failed") except gdata.service.CaptchaRequired: token = youtube.service.captcha_token message = [ "Captcha request: %s" % youtube.service.captcha_url, "Re-run the command with: --captcha-token=%s --captcha-response=CAPTCHA" % token, ] raise CaptchaRequired("\n".join(message)) if options.create_playlist: title, description, private = tosize(options.create_playlist.split("|", 2), 3) playlist_uri = youtube.create_playlist(title, description, (private == "1")) debug("Playlist created: %s" % playlist_uri) output.write(playlist_uri+"\n") elif options.update_metadata: if not args: parser.print_usage() raise VideoArgumentMissing("Specify a video URL to upload") url = args[0] updated = youtube.update_metadata(url, options.title, options.description) debug("Video metadata updated: %s" % url) elif options.add_to_playlist: for url in args: debug("Adding video (%s) to playlist: %s" % (url, options.add_to_playlist)) video_id = get_video_id_from_url(url) youtube.add_video_to_playlist(video_id, options.add_to_playlist) elif options.delete_from_playlist: playlist = options.delete_from_playlist for url in args: video_id = get_video_id_from_url(url) debug("delete video (%s) from playlist: %s; video-id: %s" % (url, playlist, video_id)) youtube.delete_video_from_playlist(video_id, playlist) else: for index, video_path in enumerate(args): url = upload_video(youtube, options, video_path, len(args), index) output.write(url + "\n")
def run_main(parser, options, args, output=sys.stdout): """Run the main scripts from the parsed options/args.""" if options.get_categories: output.write(" ".join(Youtube.get_categories().keys()) + "\n") return elif (options.create_playlist or options.add_to_playlist or options.delete_from_playlist or options.update_metadata): required_options = ["email"] else: if not args: parser.print_usage() raise VideoArgumentMissing("Specify a video file to upload") required_options = ["email", "title", "category"] missing = [opt for opt in required_options if not getattr(options, opt)] if missing: parser.print_usage() raise OptionsMissing("Some required option are missing: %s" % ", ".join(missing)) if options.password is None: password = getpass.getpass("Password for account <%s>: " % options.email) elif options.password == "-": password = sys.stdin.readline().strip() else: password = options.password youtube = Youtube(DEVELOPER_KEY) debug("Login to Youtube API: email='%s', password='******'" % (options.email, "*" * len(password))) try: youtube.login(options.email, password, captcha_token=options.captcha_token, captcha_response=options.captcha_response) except gdata.service.BadAuthentication: raise BadAuthentication("Authentication failed") except gdata.service.CaptchaRequired: token = youtube.service.captcha_token message = [ "Captcha request: %s" % youtube.service.captcha_url, "Re-run the command with: --captcha-token=%s --captcha-response=CAPTCHA" % token, ] raise CaptchaRequired("\n".join(message)) if options.create_playlist: title, description, private = tosize( options.create_playlist.split("|", 2), 3) playlist_uri = youtube.create_playlist(title, description, (private == "1")) debug("Playlist created: %s" % playlist_uri) output.write(playlist_uri + "\n") elif options.update_metadata: if not args: parser.print_usage() raise VideoArgumentMissing("Specify a video URL to upload") url = args[0] updated = youtube.update_metadata(url, options.title, options.description) debug("Video metadata updated: %s" % url) elif options.add_to_playlist: for url in args: debug("Adding video (%s) to playlist: %s" % (url, options.add_to_playlist)) video_id = get_video_id_from_url(url) youtube.add_video_to_playlist(video_id, options.add_to_playlist) elif options.delete_from_playlist: playlist = options.delete_from_playlist for url in args: video_id = get_video_id_from_url(url) debug("delete video (%s) from playlist: %s; video-id: %s" % (url, playlist, video_id)) youtube.delete_video_from_playlist(video_id, playlist) else: for index, video_path in enumerate(args): url = upload_video(youtube, options, video_path, len(args), index) output.write(url + "\n")