mirror of
https://github.com/tubearchivist/tubearchivist-frontend.git
synced 2024-11-22 20:00:15 +00:00
add re_sync_thumbs backend functionality
This commit is contained in:
parent
4d9cda3a24
commit
1f0e305527
@ -11,6 +11,7 @@ import home.src.download as download
|
|||||||
import requests
|
import requests
|
||||||
from home.src.config import AppConfig
|
from home.src.config import AppConfig
|
||||||
from home.src.helper import RedisArchivist, ignore_filelist
|
from home.src.helper import RedisArchivist, ignore_filelist
|
||||||
|
from mutagen.mp4 import MP4, MP4Cover
|
||||||
from PIL import Image
|
from PIL import Image
|
||||||
|
|
||||||
|
|
||||||
@ -18,6 +19,7 @@ class ThumbManager:
|
|||||||
"""handle thumbnails related functions"""
|
"""handle thumbnails related functions"""
|
||||||
|
|
||||||
CONFIG = AppConfig().config
|
CONFIG = AppConfig().config
|
||||||
|
MEDIA_DIR = CONFIG["application"]["videos"]
|
||||||
CACHE_DIR = CONFIG["application"]["cache_dir"]
|
CACHE_DIR = CONFIG["application"]["cache_dir"]
|
||||||
VIDEO_DIR = os.path.join(CACHE_DIR, "videos")
|
VIDEO_DIR = os.path.join(CACHE_DIR, "videos")
|
||||||
CHANNEL_DIR = os.path.join(CACHE_DIR, "channels")
|
CHANNEL_DIR = os.path.join(CACHE_DIR, "channels")
|
||||||
@ -234,6 +236,48 @@ class ThumbManager:
|
|||||||
youtube_id = thumb.rstrip(".jpg")
|
youtube_id = thumb.rstrip(".jpg")
|
||||||
self.delete_vid_thumb(youtube_id)
|
self.delete_vid_thumb(youtube_id)
|
||||||
|
|
||||||
|
def get_thumb_list(self):
|
||||||
|
"""get list of mediafiles and matching thumbnails"""
|
||||||
|
all_indexed = download.PendingList().get_all_indexed()
|
||||||
|
video_list = []
|
||||||
|
for video in all_indexed:
|
||||||
|
youtube_id = video["_source"]["youtube_id"]
|
||||||
|
media_url = os.path.join(
|
||||||
|
self.MEDIA_DIR, video["_source"]["media_url"]
|
||||||
|
)
|
||||||
|
thumb_path = os.path.join(
|
||||||
|
self.CACHE_DIR, self.vid_thumb_path(youtube_id)
|
||||||
|
)
|
||||||
|
video_list.append(
|
||||||
|
{
|
||||||
|
"media_url": media_url,
|
||||||
|
"thumb_path": thumb_path,
|
||||||
|
}
|
||||||
|
)
|
||||||
|
|
||||||
|
return video_list
|
||||||
|
|
||||||
|
@staticmethod
|
||||||
|
def write_all_thumbs(video_list):
|
||||||
|
"""rewrite the thumbnail into media file"""
|
||||||
|
|
||||||
|
print("start video thumbnail embed process")
|
||||||
|
counter = 1
|
||||||
|
for video in video_list:
|
||||||
|
# loop through all videos
|
||||||
|
media_url = video["media_url"]
|
||||||
|
thumb_path = video["thumb_path"]
|
||||||
|
|
||||||
|
mutagen_vid = MP4(media_url)
|
||||||
|
with open(thumb_path, "rb") as f:
|
||||||
|
mutagen_vid["covr"] = [
|
||||||
|
MP4Cover(f.read(), imageformat=MP4Cover.FORMAT_JPEG)
|
||||||
|
]
|
||||||
|
mutagen_vid.save()
|
||||||
|
if counter % 50 == 0:
|
||||||
|
print(f"thumbnail write progress {counter}/{len(video_list)}")
|
||||||
|
counter = counter + 1
|
||||||
|
|
||||||
|
|
||||||
def validate_thumbnails():
|
def validate_thumbnails():
|
||||||
"""check if all thumbnails are there and organized correctly"""
|
"""check if all thumbnails are there and organized correctly"""
|
||||||
|
@ -168,6 +168,14 @@ def rescan_filesystem():
|
|||||||
scan_filesystem()
|
scan_filesystem()
|
||||||
|
|
||||||
|
|
||||||
|
@shared_task
|
||||||
|
def re_sync_thumbs():
|
||||||
|
"""sync thumbnails to mediafiles"""
|
||||||
|
handler = ThumbManager()
|
||||||
|
video_list = handler.get_thumb_list()
|
||||||
|
handler.write_all_thumbs(video_list)
|
||||||
|
|
||||||
|
|
||||||
@shared_task
|
@shared_task
|
||||||
def subscribe_to(url_str):
|
def subscribe_to(url_str):
|
||||||
"""take a list of urls to subscribe to"""
|
"""take a list of urls to subscribe to"""
|
||||||
|
Loading…
Reference in New Issue
Block a user