class UploadWorker(QObject): upload_finished = Signal(str, bool) # file_path, success log_message = Signal(str, int) # message, loglevel on_progress = Signal(str, int) # job name, percent done finished = Signal() def __init__(self, username, jobs): super().__init__() self.jobs = jobs self.username = username def run(self): try: self.uploader = YouTubeUploader( self.username, self.jobs, get_setting("headlessBrowser") == SETTINGS_VALUES.CheckBox.CHECKED, ) self.uploader.upload_finished.connect( lambda file_path, success: self.upload_finished.emit( file_path, success)) self.uploader.log_message.connect( lambda message, level: self.log_message.emit(message, level)) self.uploader.on_progress.connect( lambda job_name, progress: self.on_progress.emit( job_name, progress)) self.uploader.upload_all() except Exception: self.log_message.emit(traceback.format_exc(), logging.ERROR) finally: self.finished.emit()
def _upload(self, file_path, metadata): if self.uploader is None: self.uploader = YouTubeUploader(get_setting('username')) if self.uploader.username == "": raise Exception("No user selected to upload to") thread = UploadThread(self.uploader, file_path, metadata, self.on_done_uploading) self.threads.append(thread) if not self.uploading: self.uploading = True thread.start()
def upload(self, file, *args, **kwargs) -> str: options = copy.deepcopy(self.options) options.update(kwargs) browser = Firefox(self._cookie_folder, self._extension_folder, headless=True) uploader = BaseYoutubeSeleniumUploader(file, options, browser) was_uploaded, video_id = uploader.upload() if was_uploaded is False: raise VideoWasNotUploaded() if self._playlist: self._insert_to_playlist(video_id) self._logger.info('Video was uploaded {} with options {}'.format( video_id, options)) return video_id
def run(self): try: self.uploader = YouTubeUploader( self.username, self.jobs, get_setting("headlessBrowser") == SETTINGS_VALUES.CheckBox.CHECKED, ) self.uploader.upload_finished.connect( lambda file_path, success: self.upload_finished.emit( file_path, success)) self.uploader.log_message.connect( lambda message, level: self.log_message.emit(message, level)) self.uploader.on_progress.connect( lambda job_name, progress: self.on_progress.emit( job_name, progress)) self.uploader.upload_all() except Exception: self.log_message.emit(traceback.format_exc(), logging.ERROR) finally: self.finished.emit()
def main(video_path: str, metadata_path: Optional[str] = None, thumbnail: Optional[str] = None): uploader = YouTubeUploader(video_path, metadata_path, thumbnail) was_video_uploaded, video_id = uploader.upload() assert was_video_uploaded
import os import sys from youtube_uploader_selenium import YouTubeUploader work_dir = os.getcwd() all_files = [] for parent, dirnames, filenames in os.walk(work_dir, followlinks=True): for filename in filenames: if filename.endswith('.mp4'): file_path = os.path.join(parent, filename) all_files.append(file_path) # print('文件名:%s' % filename) # print('文件完整路径:%s\n' % file_path) # video_path = './01.mp4' # metadata_path = '123/rockets_metadata.json' for video_path in all_files: uploader = YouTubeUploader(video_path) ## need to do : for in loop and windows path handler # if could do better , we can deploy it to docker was_video_uploaded, video_id = uploader.upload() assert was_video_uploaded
def main(video_path: str, metadict: Optional[defaultdict] = None): uploader = YouTubeUploader(video_path, metadict) was_video_uploaded, video_id = uploader.upload() return was_video_uploaded
import argparse import time from youtube_uploader_selenium import YouTubeUploader from typing import Optional if __name__ == "__main__": # 你自定义profile的路径 ,提前登录然后在使用 cus_profile_dir = "C:\\Users\\isaac\\AppData\\Roaming\\Mozilla\\Firefox\\Profiles\\vczuw9pi.default-release" # geckodriver 路径 executable_path = "C:\\Program Files\\Mozilla Firefox\\geckodriver.exe" # 日志输出文件,必须保证目录存在, service_log_path = "G:\\tmp\\foxwatch.log" # 创建上传对象 uploader = YouTubeUploader(cus_profile_dir, executable_path, service_log_path) while True: try: # 执行上传 uploader.upload(".\\test.mp4", ".\\健身的国外美女图片_17.json") break except BaseException as e: print("uploader.upload:", e) time.sleep(20) pass pass
import argparse from youtube_uploader_selenium import YouTubeUploader if __name__ == "__main__": parser = argparse.ArgumentParser() parser.add_argument("--channel", required=True, help="ID of the YouTube channel") parser.add_argument("--headless", dest="headless", action="store_true", help="log in without browser interaction") parser.add_argument("--username", help="ČVUT username") parser.add_argument("--password", help="ČVUT password") parser.add_argument("--cookies", help="path to the directory where cookies should be saved") args = parser.parse_args() with YouTubeUploader(args.headless, args.cookies, args.channel) as uploader: login_success = uploader.login(args.username, args.password) if not login_success: exit(7)