unusualarchive/import.py
2023-05-11 22:06:52 +02:00

66 lines
2.1 KiB
Python

import os
import re
import sys
import fnmatch
from datetime import datetime
sys.path.append('./')
os.environ['DJANGO_SETTINGS_MODULE'] = 'ragnarok.settings'
import django
django.setup()
from django.contrib.auth.models import User
from core.models import Video
folder_path = './channel_archiver/UnusualVideos (@UnusualVideos)/'
def extract_version(filename):
# Define a regular expression pattern to match the version number
pattern = r'V(\d+)'
# Use the pattern to search for a match in the filename
match = re.search(pattern, filename)
if match:
# If a match is found, extract the version number from the matched string
version = match.group(1)
# Return the version number as an integer
return int(version)
else:
# If no match is found, return None
return None
def find_image_file(name_pattern, folder):
pattern = re.compile('.*{} .*\.(jpg|png|webp)'.format(name_pattern), re.IGNORECASE)
for root, dirs, files in os.walk(folder):
for filename in files:
if pattern.match(filename):
return os.path.join(root, filename)
return None
for filename in os.listdir(folder_path):
if filename.endswith('.mp4'):
# Create a new Video object
video = Video()
id = extract_version(filename)
ret = Video.objects.filter(id=id)
if ret:
print("skipping V"+str(id))
continue
video.id = extract_version(filename)
video.name = "UNUSUAL MEMES COMPILATION"
video.created_at = datetime.now()
# Open the file and save it to the Video object
with open(os.path.join(folder_path, filename), 'rb') as f:
video.file.save(filename, f)
filepath = find_image_file("V"+str(id), folder_path)
if filepath and os.path.exists(filepath):
with open(filepath, 'rb') as f:
video.thumbnail.save(filename, f)
# Save the Video object to the database
video.save()
print('Done!')