Merge pull request #148 from 1RandomDev/download-thumbnail

Added option for thumbnail only
pull/179/head
Alex 2022-09-01 15:21:12 +03:00 committed by GitHub
commit 208d6f25ba
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 21 additions and 0 deletions

View File

@ -19,6 +19,10 @@ def get_format(format: str, quality: str) -> str:
if format.startswith("custom:"):
return format[7:]
if format == "thumbnail":
# Quality is irrelevant in this case since we skip the download
return "bestaudio/best"
if format == "mp3":
# Audio quality needs to be set post-download, set in opts
return "bestaudio/best"
@ -66,4 +70,9 @@ def get_opts(format: str, quality: str, ytdl_opts: dict) -> dict:
opts["postprocessors"].append({"key": "FFmpegMetadata"})
opts["postprocessors"].append({"key": "EmbedThumbnail"})
if format == "thumbnail":
opts["skip_download"] = True
opts["writethumbnail"] = True
opts["postprocessors"].append({"key": "FFmpegThumbnailsConvertor", "format": "jpg", "when": "before_dl"})
return opts

View File

@ -6,6 +6,7 @@ import time
import asyncio
import multiprocessing
import logging
import re
from dl_formats import get_format, get_opts
log = logging.getLogger('ytdl')
@ -126,6 +127,10 @@ class Download:
self.tmpfilename = status.get('tmpfilename')
if 'filename' in status:
self.info.filename = os.path.relpath(status.get('filename'), self.download_dir)
# Set correct file extension for thumbnails
if(self.info.format == 'thumbnail'):
self.info.filename = re.sub(r'\.webm$', '.jpg', self.info.filename)
self.info.status = status['status']
self.info.msg = status.get('msg')
if 'downloaded_bytes' in status:

View File

@ -43,4 +43,11 @@ export const Formats: Format[] = [
{ id: '128', text: '128 kbps' },
],
},
{
id: 'thumbnail',
text: 'Thumbnail',
qualities: [
{ id: 'best', text: 'Best' }
],
},
];