Esempio n. 1
0
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()
Esempio n. 2
0
 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()
Esempio n. 3
0
    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
Esempio n. 4
0
 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
Esempio n. 6
0
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
Esempio n. 7
0
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
Esempio n. 8
0
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
Esempio n. 9
0
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)