import logging import os from pytube import YouTube logger = logging.getLogger(__name__) def save_video(article_object): """Saves video accoring to url and save path""" url = article_object.article_url logger.info("Saving new video") try: yt = YouTube(url) streams = yt.streams.filter(progressive=True).order_by('resolution') except Exception as e: article_object.file_name = "ERROR: {}".format(e) return article_object if streams: # if it's not empty vid = streams[-1] article_object.source_name = "youtube.com" article_object.title = yt.title file_path = os.path.join(article_object.save_path, article_object.fname_template) try: vid.download(file_path) article_object.file_name = article_object.fname_template except Exception as e: logger.error(f"Youtube download crashed: {e}") article_object.file_name = "Error while downloading" else: article_object.file_name = "No streams available" return article_object