Add thumbnail

This commit is contained in:
Antonio J. Delgado 2024-12-28 19:57:12 +02:00
parent dce5c15604
commit 45c6c5287e
2 changed files with 42 additions and 0 deletions

View file

@ -10,6 +10,7 @@ import os
import json
import logging
from logging.handlers import SysLogHandler
import subprocess
import click
import click_config_file
import requests
@ -133,11 +134,51 @@ class GetPeertubeVideos:
video_bytes = result.content
with open(full_file_name, mode='wb') as video_file:
video_file.write(video_bytes)
sel_thumb = ''
for thumb in item['media_thumbnail']:
if 'preview' in thumb['url']:
sel_thumb = thumb
if 'url' in sel_thumb:
split_url = sel_thumb['url'].split('.')
thumb_file_name = file_name.replace(file_extension, split_url[len(split_url)-1])
full_thumb_file_name = os.path.join(self.config['download_dir'], thumb_file_name)
self._add_thumbnail_to_video(full_file_name, full_thumb_file_name)
else:
self._log.debug(
"Item already downloaded, skipping."
)
def _add_thumbnail_to_video(self, video_file, thumb_file):
self._log.debug(
'Looking for ffmpeg tool...'
)
result = subprocess.run(["which", "ffmpeg"], capture_output=True, check=False)
if result.stdout == b'':
self._log.error(
"Error finding ffmpeg, thumbnail won't be added to video."
)
return None
self._log.debug(
"Adding thumbnail '%s' to file '%s'...",
thumb_file,
video_file
)
result = subprocess.run(
[
'ffmpeg',
'-i', video_file,
'-i', thumb_file,
'-map', '1',
'-map', '0',
'-c', 'copy',
'-disposition:0', 'attached_pic', f"{video_file}_with_thumb"
],
capture_output=True,
check=True
)
os.remove(video_file)
os.rename(f"{video_file}_with_thumb", video_file)
def _write_downloaded_items(self):
with open(self.config['downloaded_database'], 'w', encoding='utf-8') as db_file:
for download_item in self.downloaded_items:

View file

@ -3,3 +3,4 @@ click_config_file
requests
transmission_rpc
feedparser
ffmpeg