34 lines
1.1 KiB
Python
34 lines
1.1 KiB
Python
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
|