Skip to content

Commit

Permalink
Add migration file
Browse files Browse the repository at this point in the history
  • Loading branch information
DerouineauNicolas committed Jun 18, 2024
1 parent f533403 commit dce65e4
Show file tree
Hide file tree
Showing 5 changed files with 111 additions and 39 deletions.
6 changes: 3 additions & 3 deletions backend/StreamServerApp/database_utils.py
Original file line number Diff line number Diff line change
Expand Up @@ -216,19 +216,19 @@ def add_one_video_to_database(full_path,
v.episode = video_type_and_info['episode']

if created:
return_value = Add_video_return_value.SERIES_CREATED
return_value = Add_video_return_value.SERIES_CREATED.value

elif video_type_and_info['type'] == 'Movie':
movie, created = Movie.objects.get_or_create(
title=video_type_and_info['title'])
v.movie = movie

if created:
return_value = Add_video_return_value.MOVIE_CREATED
return_value = Add_video_return_value.MOVIE_CREATED.value

v.save()
if os.getenv('TMBD_KEY'):
if return_value in [Add_video_return_value.SERIES_CREATED, Add_video_return_value.MOVIE_CREATED]:
if return_value in [Add_video_return_value.SERIES_CREATED.value, Add_video_return_value.MOVIE_CREATED.value]:
download_cover_async.delay(
v.id, video_type_and_info['title'], True if video_type_and_info['type'] == 'Series' else False)

Expand Down
80 changes: 56 additions & 24 deletions backend/StreamServerApp/media_management/cover_downloader.py
Original file line number Diff line number Diff line change
@@ -1,27 +1,59 @@
import requests
import os

auth_key = os.getenv('TMBD_KEY')
if not auth_key:
print("no auth key")

configuration_url = 'https://api.themoviedb.org/3/configuration?&api_key={}'.format(auth_key)
response = requests.get(configuration_url)
value = response.json()

base_url = value["images"]["base_url"]
poster_size = value["images"]["poster_sizes"][0]

def download_cover(name, outputfile, is_tv_show=False):
if is_tv_show:
api_url = 'https://api.themoviedb.org/3/search/tv?query={}&api_key={}'.format(name, auth_key)
else:
api_url = 'https://api.themoviedb.org/3/search/movie?query={}&api_key={}'.format(name, auth_key)
response = requests.get(api_url)
value = response.json()

poster_url = "{}/{}{}".format(base_url, poster_size, value["results"][0]["poster_path"])
response = requests.get(poster_url)

with open(outputfile, mode="wb") as file:
file.write(response.content)
import logging
logger = logging.getLogger("root")


class cover_downloader:

def __init__(self):

env_auth_key = os.getenv('TMBD_KEY')
if not auth_key:
logger("cover downloader: no auth key")
return
self.auth_key = env_auth_key

configuration_url = 'https://api.themoviedb.org/3/configuration?&api_key={}'.format(
self.auth_key )

response = requests.get(configuration_url)
if response.status_code != 200:
logger("cover downloader: Failed to get configuration")
return
value = response.json()

self.base_url = value["images"]["base_url"]
self.poster_size = value["images"]["poster_sizes"][0]

def download_cover(self, name, outputfile, is_tv_show=False):

if self.auth_key:

if is_tv_show:
api_url = 'https://api.themoviedb.org/3/search/tv?query={}&api_key={}'.format(
name.replace(" ", "+"), self.auth_key)
else:
api_url = 'https://api.themoviedb.org/3/search/movie?query={}&api_key={}'.format(
name.replace(" ", "+"), self.auth_key)
response = requests.get(api_url)
if response.status_code != 200:
logger("cover downloader: Failed to search movie")
return -1
value = response.json()

poster_url = "{}/{}{}".format(self.base_url, self.poster_size,
value["results"][0]["poster_path"])
response = requests.get(poster_url)
if response.status_code != 200:
logger("cover downloader: Failed to download cover")
return -1

with open(outputfile, mode="wb") as file:
file.write(response.content)

return 1
else:
logger("cover downloader: No properly initialized")
return -1
39 changes: 39 additions & 0 deletions backend/StreamServerApp/migrations/0026_auto_20240618_0917.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
# Generated by Django 4.2 on 2024-06-18 09:17

from django.db import migrations
from StreamServerApp.models import Video, Series, Movie, Subtitle
from StreamServerApp.media_management.cover_downloader import cover_downloader
import os

def get_cover(apps, schema_editor):

if os.getenv('TMBD_KEY'):

movies = Movie.objects.all()
for movie in movies:
movie.video_set
output_file = "/usr/src/static/{}.jpeg".format(movie.title)
cover_downloader.download_cover(serie.title, output_file, True)

series = Series.objects.all()
for serie in series:
output_file = "/usr/src/static/{}.jpeg".format(serie.title)
ret = cover_downloader.download_cover(serie.title, output_file, True)
if ret:
serie.thumbnail = output_file
serie.save()






class Migration(migrations.Migration):

dependencies = [
('StreamServerApp', '0025_video_audio_path'),
]

operations = [
migrations.RunPython(code=get_cover, reverse_code=migrations.RunPython.noop),
]
21 changes: 11 additions & 10 deletions backend/StreamServerApp/tasks.py
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
from celery import shared_task
from StreamServerApp.models import Video, Series, Movie, Subtitle
from django.conf import settings
from StreamServerApp.media_management.cover_downloader import download_cover
from StreamServerApp.media_management.cover_downloader import cover_downloader

import logging

Expand All @@ -28,14 +28,15 @@ def get_subtitles_async(video_id, video_path, remote_url):
@shared_task
def download_cover_async(id, name, is_tv_show=False):
output_file = "/usr/src/static/{}.jpeg".format(name)
download_cover(name, is_tv_show)
video = Video.objects.get(id=id)
if is_tv_show:
serie = Series.objects.get(id=video.series_id)
serie.thumbnail = output_file
serie.save()
else:
video.thumbnail = output_file
video.save()
ret = cover_downloader.download_cover(name, output_file, is_tv_show)
if ret:
video = Video.objects.get(id=id)
if is_tv_show:
serie = Series.objects.get(id=video.series_id)
serie.thumbnail = output_file
serie.save()
else:
video.thumbnail = output_file
video.save()

return 0
4 changes: 2 additions & 2 deletions docker-compose-debug.yml
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,7 @@ services:
- ./log/:/debug/
- ./Videos/:/usr/src/app/Videos
- progress_volume:/usr/progress/
- static_volume:/usr/src/app/staticfiles
- static_volume:/usr/static/
- /static/
- ipython:/root/.ipython
- torrent:/usr/torrent/:rw
Expand All @@ -50,7 +50,7 @@ services:
volumes:
- ./backend/:/usr/src/app/
- ./Videos/:/usr/src/app/Videos
- static_volume:/usr/src/app/staticfiles
- static_volume:/usr/static/
- torrent:/usr/torrent/:rw
- secrets_volume:/secrets/
ports:
Expand Down

0 comments on commit dce65e4

Please sign in to comment.