import os import argparse import youtube_dl from api import get_authenticated_service, initialize_upload from settings import Categories, Privacy SIMULATE = False def generate_metadata(title: str, description: str, tags: list, category_id: int, privacy_status: str) -> dict: return { "snippet": { "title": title, "description": description, "tags": tags, "categoryId": category_id }, "status": { "privacyStatus": privacy_status } } def main(args): ydl_opts = {"simulate": SIMULATE} with youtube_dl.YoutubeDL(ydl_opts) as ydl: result = ydl.extract_info(args.vod, download=True) title = "[VOD] {}".format(result["title"]) u_date = result["upload_date"] description = "Date: {}.{}.{}\n".format(u_date[6:], u_date[4:6], u_date[:4]) + \ "Streamer: {}\n".format(result["uploader"]) + \ "Support streamer: https://www.twitch.tv/{}\n\n".format(result["uploader_id"]) + \ "VIDEO IS MONETISED NOT BY ME" fname = "./" + ydl.prepare_filename(result) if args.title: title = args.title if args.description: description = args.description print("=====File will be uploaded with this parameters=====") print("Filename:", fname) print("Title:", title) print("Description:", description) print("====================================================") metadata = generate_metadata(title, description, [], Categories.ENTERTAINMENT, Privacy.PUBLIC) video_path = os.path.abspath(fname) try: video_id = initialize_upload(get_authenticated_service(), metadata, video_path) except Exception as e: print(e) else: print("Uploaded video id:", video_id) print("Removing video file...", end="") os.unlink(video_path) print("done") if __name__ == "__main__": parser = argparse.ArgumentParser(description="High velocity VOD uploader") parser.add_argument("vod", type=str, help="link to VOD") parser.add_argument("--title", type=str, help="custom video title") parser.add_argument("--description", type=str, help="custom video description") main(parser.parse_args())