Esempio n. 1
0
 def test_upload_video(self):
     """Test uploading a video file using mocks"""
     youtube = YoutubeService()
     youtube.upload_video = Mock(return_value=(Response.SUCCESS, None))
     response_code, response = youtube.upload_video(self.SAMPLE_VIDEO)
     youtube.upload_video.assert_called_with(self.SAMPLE_VIDEO)
     self.assertEqual(Response.SUCCESS, response_code)
Esempio n. 2
0
def upload(files, token, assume_yes):
    """Uploads a file(s) to YouTube using the YouTube service API

    This function uploads a list of videos and/or directories of videos to YouTube.

    Args:
        token            - location of an oauth2 token
        files            - list of files and directories to upload
        assume_yes       - if True, assume yes to all interaction (default: False)
    """
    # check if token exists
    if not os.path.exists(token):
        print("{} does not exist, please specify a valid token file".format(token))
    else:
        # Gather videos specified and vids from folders specified into list
        videos = gather_videos(files)
        # Now begin upload process
        if not videos:
            print("Nothing to upload")
        # Prompt for confirmation
        elif prompt_user(videos, confirmation=assume_yes):
            youtube_service = YoutubeService()
            # Authorize with OAuth2 token
            youtube_service.authorize(token)
            for video in videos:
                response_code, response = youtube_service.upload_video(video)
                handle_response(response_code, response)
        # Response was no, so do nothing
        else:
            print("Exiting...")
Esempio n. 3
0
def upload(files, token, assume_yes):
    """Uploads a file(s) to YouTube using the YouTube service API

    This function uploads a list of videos and/or directories of videos to YouTube.

    Args:
        token            - location of an oauth2 token
        files            - list of files and directories to upload
        assume_yes       - if True, assume yes to all interaction (default: False)
    """
    # check if token exists
    if not os.path.exists(token):
        print("{} does not exist, please specify a valid token file".format(
            token))
    else:
        # Gather videos specified and vids from folders specified into list
        videos = gather_videos(files)
        # Now begin upload process
        if not videos:
            print("Nothing to upload")
        # Prompt for confirmation
        elif prompt_user(videos, confirmation=assume_yes):
            youtube_service = YoutubeService()
            # Authorize with OAuth2 token
            youtube_service.authorize(token)
            for video in videos:
                response_code, response = youtube_service.upload_video(video)
                handle_response(response_code, response)
        # Response was no, so do nothing
        else:
            print("Exiting...")
Esempio n. 4
0
    def cmd_line(self, argv):
        """Initializes command line interface

        Args:
            argv: command line arguments to parse
        """
        self.parser.add_argument("-c", "--client_secrets",
                                 help="Path to client secrets file", default=self.client_secrets)
        self.parser.add_argument("-t", "--token",
                                 help="Path to OAuth2 token", default=self.oauth2_token)
        self.parser.add_argument("-f", "--files",
                                 help="Path to file or filefolder for upload", default=self.video_directory)
        self.parser.add_argument("-y", "--yes",
                                 help="Assume yes", action="store_true")
        flags = self.parser.parse_args(argv[1:])
        youtube_service = YoutubeService()
        # command line arguments neede for Google Python Client need to always be passed in for authentication
        youtube_service.authenticate(flags.client_secrets, flags.token, flags)
        # path doesn't exist, print an error message
        if not os.path.exists(flags.files):
            print "{} does not exit".format(flags.files)
        # path is a folder, upload all videos in the folder
        elif os.path.isdir(flags.files):
            self.upload_folder_cmd_line(youtube_service, flags.files, flags.yes)
        # single file check if it is an uploadable video file
        elif youtube_service.valid_video_file(flags.files):
            if flags.yes:
                self.handle_response(youtube_service.upload_video(flags.files))
            else:
                response = raw_input(
                    "Are you sure you would like to upload the following file? [Y/n]\n" + flags.files + "\n")
                if response.lower() in ('', 'y', 'yes'):
                    self.handle_response(youtube_service.upload_video(flags.files))
        # if this case is reached it means there is nothing to upload
        else:
            print "Nothing to upload"
Esempio n. 5
0
    def upload(self, files, token, yes):
        """Uploads a file(s) to YouTube using the YouTube service API

        This function uploads a list of videos and/or directories of videos to YouTube.

        Args:
            token            - location of an oauth2 token
            files            - list of files and directories to upload
            yes              - if True, assume yes to all interaction (default: False)
        """
        # check if token exists
        if not os.path.exists(token):
            print(
                "{} does not exist, please specify a valid token file".format(
                    token))
            return
        # gather videos specified and vids from folders specified into list
        videos = []
        for item in files:
            # crawl subfolders
            if os.path.isdir(item):
                for root, dirs, files_ in os.walk(item):
                    for f in files_:
                        filepath = os.path.join(root, f)
                        # check if its a video and make sure its not a duplicate
                        if YoutubeService.valid_video_file(
                                filepath) and filepath not in videos:
                            videos.append(filepath)
            # if it exists it is a single file, check if its a video, and make sure its not a duplicate
            elif os.path.exists(item) and YoutubeService.valid_video_file(
                    item) and item not in videos:
                videos.append(item)
        # now begin upload process
        if not videos:
            print("Nothing to upload")
        else:
            youtube_service = YoutubeService()
            # authorize with OAuth2 token
            youtube_service.authorize(token)
            if not yes:
                print("Found videos:")
                print("\n".join(videos))
            question = "Are you sure you would like to upload these videos? [Y/n] "
            if yes or raw_input(question).lower() in ('', 'y', 'yes'):
                for video in videos:
                    self.handle_response(youtube_service.upload_video(video))
Esempio n. 6
0
    def upload(self, files, token, yes):
        """Uploads a file(s) to YouTube using the YouTube service API

        This function uploads a list of videos and/or directories of videos to YouTube.

        Args:
            token            - location of an oauth2 token
            files            - list of files and directories to upload
            yes              - if True, assume yes to all interaction (default: False)
        """
        # check if token exists
        if not os.path.exists(token):
            print("{} does not exist, please specify a valid token file".format(token))
            return
        # gather videos specified and vids from folders specified into list
        videos = []
        for item in files:
            # crawl subfolders
            if os.path.isdir(item):
                for root, dirs, files_ in os.walk(item):
                    for f in files_:
                        filepath = os.path.join(root, f)
                        # check if its a video and make sure its not a duplicate
                        if YoutubeService.valid_video_file(filepath) and filepath not in videos:
                            videos.append(filepath)
            # if it exists it is a single file, check if its a video, and make sure its not a duplicate
            elif os.path.exists(item) and YoutubeService.valid_video_file(item) and item not in videos:
                videos.append(item)
        # now begin upload process
        if not videos:
            print("Nothing to upload")
        else:
            youtube_service = YoutubeService()
            # authorize with OAuth2 token
            youtube_service.authorize(token)
            if not yes:
                print("Found videos:")
                print("\n".join(videos))
            question = "Are you sure you would like to upload these videos? [Y/n] "
            if yes or raw_input(question).lower() in ('', 'y', 'yes'):
                for video in videos:
                    self.handle_response(youtube_service.upload_video(video))