Skip to content

Commit

Permalink
Add folder size in admin view
Browse files Browse the repository at this point in the history
  • Loading branch information
DerouineauNicolas committed Aug 30, 2024
1 parent 42d47f6 commit 0dbe393
Show file tree
Hide file tree
Showing 7 changed files with 65 additions and 0 deletions.
1 change: 1 addition & 0 deletions backend/StreamServerApp/admin.py
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@
class VideoAdmin(admin.ModelAdmin):
search_fields = ['name']
model = Video
list_display = ["name", "video_folder_size_in_MB"]

def delete_queryset(self, request, queryset):
for video in queryset:
Expand Down
1 change: 1 addition & 0 deletions backend/StreamServerApp/database_utils.py
Original file line number Diff line number Diff line change
Expand Up @@ -200,6 +200,7 @@ def add_one_video_to_database(full_path,
audio_path=video_infos['audio_path'],
video_codec=video_infos['video_codec_type'],
audio_codec=video_infos['audio_codec_type'],
video_folder_size_in_MB = video_infos['size_in_megabytes'],
height=video_infos['video_height'],
width=video_infos['video_width'],
thumbnail=video_infos['remote_thumbnail_url'],
Expand Down
15 changes: 15 additions & 0 deletions backend/StreamServerApp/media_processing.py
Original file line number Diff line number Diff line change
Expand Up @@ -14,11 +14,23 @@
from StreamServerApp.media_management.fileinfo import createfileinfo, readfileinfo
from StreamServerApp.media_management.subprocess_wrapper import run_subprocess
from StreamServerApp.media_management.timecode import timecodeToSec
import math

import logging

logger = logging.getLogger("root")

def get_size(start_path):
total_size = 0
for dirpath, dirnames, filenames in os.walk(start_path):
for f in filenames:
fp = os.path.join(dirpath, f)
# skip if it is symbolic link
if not os.path.islink(fp):
total_size += os.path.getsize(fp)

return total_size


def convert_subtitles_to_webvtt(input_file, output_file):
""" # Uses ffmpeg subprocess to convert subtitles to webvtt
Expand Down Expand Up @@ -280,6 +292,8 @@ def prepare_video(video_full_path,
os.remove(video_full_path)

relative_path = os.path.relpath(temp_mpd, video_path)
size_in_bytes = get_size(video_dir)
size_in_megabytes = math.ceil(float(size_in_bytes) * 0.000001)

remote_video_url = os.path.join(remote_url, relative_path)
remote_thumbnail_url = os.path.join(remote_url, thumbnail_relativepath)
Expand All @@ -290,6 +304,7 @@ def prepare_video(video_full_path,
'audio_path': audio_tracks[0][0],
'video_height': video_height,
'video_width': video_width,
'size_in_megabytes' : size_in_megabytes,
'remote_thumbnail_url': remote_thumbnail_url,
'ov_subtitles': webvtt_ov_fullpaths,
'video_full_path': video_full_path,
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
# Generated by Django 4.2 on 2024-08-30 12:40

from django.db import migrations, models


class Migration(migrations.Migration):

dependencies = [
('StreamServerApp', '0026_auto_20240618_0917'),
]

operations = [
migrations.AddField(
model_name='video',
name='video_folder_size_in_MB',
field=models.PositiveSmallIntegerField(blank=True, db_index=True, default=None, null=True),
),
]
28 changes: 28 additions & 0 deletions backend/StreamServerApp/migrations/0028_auto_20240830_1316.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
# Generated by Django 4.2 on 2024-08-30 13:16

from django.db import migrations

from StreamServerApp.models import Video
from StreamServerApp.media_processing import get_size
import os, math

def get_filesize(apps, schema_editor):

videos = Video.objects.all()
for video in videos:
playlistdir = os.path.split(video.video_folder)[0]
size_in_bytes = get_size(playlistdir)
size_in_megabytes = math.ceil(float(size_in_bytes) * 0.000001)
video.video_folder_size_in_MB = size_in_megabytes
video.save()


class Migration(migrations.Migration):

dependencies = [
('StreamServerApp', '0027_video_video_folder_size_in_mb'),
]

operations = [
migrations.RunPython(code=get_filesize, reverse_code=migrations.RunPython.noop),
]
1 change: 1 addition & 0 deletions backend/StreamServerApp/models.py
Original file line number Diff line number Diff line change
Expand Up @@ -60,6 +60,7 @@ class Video(models.Model):
metadata = models.CharField(max_length=100, blank=True, default="")
video_url = models.CharField(max_length=300, default="")
video_folder = models.CharField(max_length=300, default="")
video_folder_size_in_MB = models.PositiveSmallIntegerField(default=None, blank=True, null=True, db_index=True)
audio_path = models.CharField(max_length=300, default="")
thumbnail = models.CharField(max_length=300, default="")

Expand Down
1 change: 1 addition & 0 deletions backend/StreamServerApp/tests/tests_admin_command.py
Original file line number Diff line number Diff line change
Expand Up @@ -81,6 +81,7 @@ def test_movies_series_added_to_db(self):

video = Video.objects.get(
name='The Big Bang Theory S5 E19')
self.assertEqual(video.video_folder_size_in_MB, 3)
series = Series.objects.first()
self.assertEqual(video.episode, 19)
self.assertEqual(video.season, 5)
Expand Down

0 comments on commit 0dbe393

Please sign in to comment.