Browse Source

Merge branch 'Bene81-master'

Arnau Sanchez 9 years ago
parent
commit
3e9e40156c
1 changed files with 17 additions and 6 deletions
  1. 17 6
      youtube_upload/main.py

+ 17 - 6
youtube_upload/main.py

@@ -37,12 +37,12 @@ except ImportError:
     progressbar = None
     progressbar = None
 
 
 class InvalidCategory(Exception): pass
 class InvalidCategory(Exception): pass
-class OptionsMissing(Exception): pass
+class OptionsError(Exception): pass
 class AuthenticationError(Exception): pass
 class AuthenticationError(Exception): pass
 class RequestError(Exception): pass
 class RequestError(Exception): pass
 
 
 EXIT_CODES = {
 EXIT_CODES = {
-    OptionsMissing: 2,
+    OptionsError: 2,
     InvalidCategory: 3,
     InvalidCategory: 3,
     RequestError: 3,
     RequestError: 3,
     AuthenticationError: 4,
     AuthenticationError: 4,
@@ -102,6 +102,9 @@ def upload_youtube_video(youtube, options, video_path, total_videos, index):
         description = u(options.description or "").decode("string-escape")
         description = u(options.description or "").decode("string-escape")
     else:
     else:
         description = options.description
         description = options.description
+    if options.publish_at:    
+      debug("Your video will remain private until specified date.")
+      
     tags = [u(s.strip()) for s in (options.tags or "").split(",")]
     tags = [u(s.strip()) for s in (options.tags or "").split(",")]
     ns = dict(title=title, n=index+1, total=total_videos)
     ns = dict(title=title, n=index+1, total=total_videos)
     title_template = u(options.title_template)
     title_template = u(options.title_template)
@@ -116,7 +119,9 @@ def upload_youtube_video(youtube, options, video_path, total_videos, index):
             "tags": tags,
             "tags": tags,
         },
         },
         "status": {
         "status": {
-            "privacyStatus": options.privacy,
+            "privacyStatus": ("private" if options.publish_at else options.privacy),
+            "publishAt": options.publish_at,
+
         },
         },
         "recordingDetails": {
         "recordingDetails": {
             "location": lib.string_to_dict(options.location),
             "location": lib.string_to_dict(options.location),
@@ -150,14 +155,18 @@ def get_youtube_handler(options):
     return auth.get_resource(client_secrets, credentials,
     return auth.get_resource(client_secrets, credentials,
         get_code_callback=get_code_callback)
         get_code_callback=get_code_callback)
 
 
-def run_main(parser, options, args, output=sys.stdout):
-    """Run the main scripts from the parsed options/args."""
+def parse_options_error(parser, options):
+    """Check errors in options."""
     required_options = ["title"]
     required_options = ["title"]
     missing = [opt for opt in required_options if not getattr(options, opt)]
     missing = [opt for opt in required_options if not getattr(options, opt)]
     if missing:
     if missing:
         parser.print_usage()
         parser.print_usage()
         msg = "Some required option are missing: {0}".format(", ".join(missing))
         msg = "Some required option are missing: {0}".format(", ".join(missing))
-        raise OptionsMissing(msg)
+        raise OptionsError(msg)
+
+def run_main(parser, options, args, output=sys.stdout):
+    """Run the main scripts from the parsed options/args."""
+    parse_options_error(parser, options)
     youtube = get_youtube_handler(options)
     youtube = get_youtube_handler(options)
 
 
     if youtube:
     if youtube:
@@ -195,6 +204,8 @@ def main(arguments):
         help='Video tags (separated by commas: "tag1, tag2,...")')
         help='Video tags (separated by commas: "tag1, tag2,...")')
     parser.add_option('', '--privacy', dest='privacy', metavar="STRING",
     parser.add_option('', '--privacy', dest='privacy', metavar="STRING",
         default="public", help='Privacy status (public | unlisted | private)')
         default="public", help='Privacy status (public | unlisted | private)')
+    parser.add_option('', '--publish-at', dest='publish_at', metavar="datetime",
+       default=None, help='Publish Date: YYYY-MM-DDThh:mm:ss.sZ')
     parser.add_option('', '--location', dest='location', type="string",
     parser.add_option('', '--location', dest='location', type="string",
         default=None, metavar="latitude=VAL,longitude=VAL[,altitude=VAL]",
         default=None, metavar="latitude=VAL,longitude=VAL[,altitude=VAL]",
         help='Video location"')
         help='Video location"')