diff --git a/files/models.py b/files/models.py
index d46d094..07ac01f 100644
--- a/files/models.py
+++ b/files/models.py
@@ -8,6 +8,7 @@ import tempfile
import uuid
import m3u8
+import webvtt
from django.conf import settings
from django.contrib.postgres.indexes import GinIndex
from django.contrib.postgres.search import SearchVectorField
@@ -797,6 +798,34 @@ class Media(models.Model):
)
return ret
+ @property
+ def subtitles_info_contents(self):
+ """Property used on serializers
+ Returns subtitles info with file data
+ """
+
+ ret = []
+ for subtitle in self.subtitles.all():
+ contents = open(subtitle.subtitle_file.path, 'r').read()
+ text = ""
+ try:
+ lines = webvtt.read(subtitle.subtitle_file.path)
+ for line in lines:
+ text += line.text + " "
+ except Exception:
+ pass
+
+ ret.append(
+ {
+ "src": helpers.url_from_path(subtitle.subtitle_file.path),
+ "srclang": subtitle.language.code,
+ "label": subtitle.language.title,
+ "contents": contents,
+ "text": text,
+ }
+ )
+ return ret
+
@property
def sprites_url(self):
"""Property used on serializers
diff --git a/files/views.py b/files/views.py
index 19505a0..28a037e 100644
--- a/files/views.py
+++ b/files/views.py
@@ -221,6 +221,7 @@ def featured_media(request):
"""List featured media view"""
context = {}
+ context["media"] = list(Media.objects.filter(Q(listable=True), featured=True))[:50]
return render(request, "cms/featured-media.html", context)
@@ -228,6 +229,9 @@ def index(request):
"""Index view"""
context = {}
+ context["media_featured"] = list(Media.objects.filter(Q(listable=True), featured=True))[:10]
+ context["media_recommended"] = list(show_recommended_media(request, limit=10))
+ context["media_latest"] = list(Media.objects.filter(Q(listable=True)).order_by("-add_date"))[:50]
return render(request, "cms/index.html", context)
@@ -235,6 +239,7 @@ def latest_media(request):
"""List latest media view"""
context = {}
+ context["media"] = list(Media.objects.filter(Q(listable=True)).order_by("-add_date"))[:50]
return render(request, "cms/latest-media.html", context)
@@ -280,6 +285,7 @@ def recommended_media(request):
"""List recommended media view"""
context = {}
+ context["media"] = list(show_recommended_media(request, limit=50))
return render(request, "cms/recommended-media.html", context)
@@ -369,6 +375,7 @@ def view_playlist(request, friendly_token):
context = {}
context["playlist"] = playlist
+ context["media"] = [c.media for c in PlaylistMedia.objects.filter(playlist=playlist)]
return render(request, "cms/playlist.html", context)
diff --git a/frontend/src/static/js/components/media-page/MediaPage.scss b/frontend/src/static/js/components/media-page/MediaPage.scss
index 26c567b..ae4b4f8 100755
--- a/frontend/src/static/js/components/media-page/MediaPage.scss
+++ b/frontend/src/static/js/components/media-page/MediaPage.scss
@@ -1944,3 +1944,8 @@
}
}
}
+
+#page-media-metadata {
+ opacity: 0.1;
+ zoom: 0.1;
+}
diff --git a/requirements.txt b/requirements.txt
index acbb677..17757ef 100644
--- a/requirements.txt
+++ b/requirements.txt
@@ -19,3 +19,4 @@ m3u8==3.5.0
django-ckeditor==6.6.1
django-debug-toolbar==4.1.0
django-login-required-middleware==0.9.0
+webvtt-py==0.4.6
diff --git a/templates/cms/featured-media.html b/templates/cms/featured-media.html
index e541078..81d542d 100644
--- a/templates/cms/featured-media.html
+++ b/templates/cms/featured-media.html
@@ -39,7 +39,20 @@
{% endblock headermeta %}
{% block content %}
-{% if user %}
{% endif %}
+{% if user %}
+
Featured
+
+ {% for media_object in media %}
+
+
+ Posted by {{media_object.author_name}}
+ {{media_object.views}} views
+ Published {{media_object.add_date}}
+
+ {% endfor %}
+
+
{% endif %}
{% endblock %}
{% block bottomimports %}
diff --git a/templates/cms/index.html b/templates/cms/index.html
index 181a65b..ef90f50 100644
--- a/templates/cms/index.html
+++ b/templates/cms/index.html
@@ -45,7 +45,44 @@
{% endblock headermeta %}
-{% block content %}
{% endblock %}
+{% block content %}
+
+
+ {% for media_object in media_featured %}
+
+
+ Posted by {{media_object.author_name}}
+ {{media_object.views}} views
+ Published {{media_object.add_date}}
+
+ {% endfor %}
+
+
+
+ {% for media_object in media_recommended %}
+
+
+ Posted by {{media_object.author_name}}
+ {{media_object.views}} views
+ Published {{media_object.add_date}}
+
+ {% endfor %}
+
+
+
+ {% for media_object in media_latest %}
+
+
+ Posted by {{media_object.author_name}}
+ {{media_object.views}} views
+ Published {{media_object.add_date}}
+
+ {% endfor %}
+
+
{% endblock %}
{% block bottomimports %}
diff --git a/templates/cms/latest-media.html b/templates/cms/latest-media.html
index 02095b1..662e72c 100644
--- a/templates/cms/latest-media.html
+++ b/templates/cms/latest-media.html
@@ -39,7 +39,20 @@
{% endblock headermeta %}
{% block content %}
-{% if user %}
{% endif %}
+{% if user %}
+
Recent uploads
+
+ {% for media_object in media %}
+
+
+ Posted by {{media_object.author_name}}
+ {{media_object.views}} views
+ Published {{media_object.add_date}}
+
+ {% endfor %}
+
+
{% endif %}
{% endblock %}
{% block bottomimports %}
diff --git a/templates/cms/media.html b/templates/cms/media.html
index 2999f19..2ebc58b 100644
--- a/templates/cms/media.html
+++ b/templates/cms/media.html
@@ -121,7 +121,21 @@
{%endblock topimports %}
-{% block content %}
{% endblock content %}
+{% block content %}
+
+{% endblock content %}
{% block bottomimports %}
diff --git a/templates/cms/playlist.html b/templates/cms/playlist.html
index 00e7540..43b9838 100755
--- a/templates/cms/playlist.html
+++ b/templates/cms/playlist.html
@@ -9,7 +9,24 @@
{%endblock topimports %}
{% block content %}
-{% if user %}
{% endif %}
+{% if user %}
+
{{playlist.title}}
+
{{playlist.media_count}} videos
+
Published {{playlist.add_date}}
+
{{playlist.description}}
+
{{playlist.user}}
+
+ {% for media_object in media %}
+
+
+ Posted by {{media_object.author_name}}
+ {{media_object.views}} views
+ Published {{media_object.add_date}}
+
+ {% endfor %}
+
+
{% endif %}
{% endblock %}
{% block bottomimports %}
diff --git a/templates/cms/recommended-media.html b/templates/cms/recommended-media.html
index 8b048dd..6e4b526 100644
--- a/templates/cms/recommended-media.html
+++ b/templates/cms/recommended-media.html
@@ -39,7 +39,20 @@
{% endblock headermeta %}
{% block content %}
-{% if user %}
{% endif %}
+{% if user %}{% endif %}
{% endblock %}
{% block bottomimports %}
diff --git a/templates/cms/user.html b/templates/cms/user.html
index c9a7d01..97fa5c5 100644
--- a/templates/cms/user.html
+++ b/templates/cms/user.html
@@ -25,9 +25,27 @@ No such user
{% endblock %}
{% block content %}
-{% if user %}
{% endif %}
+{% if user %}
+
{{user.name}}
+
+
Uploads
+
+
{% endif %}
{% endblock %}
{% block bottomimports %}
-{% endblock bottomimports %}
\ No newline at end of file
+{% endblock bottomimports %}
diff --git a/templates/cms/user_about.html b/templates/cms/user_about.html
index 53f311a..a165336 100644
--- a/templates/cms/user_about.html
+++ b/templates/cms/user_about.html
@@ -25,7 +25,16 @@ No such user
{% endblock %}
{% block content %}
-{% if user %}
{% endif %}
+{% if user %}
+
{{user.name}}
+
+
Biography
+
{{user.description}}
+
{% endif %}
{% endblock %}
{% block bottomimports %}
diff --git a/templates/cms/user_playlists.html b/templates/cms/user_playlists.html
index fd2d8ea..52579aa 100755
--- a/templates/cms/user_playlists.html
+++ b/templates/cms/user_playlists.html
@@ -25,7 +25,25 @@ No such user
{% endblock %}
{% block content %}
-{% if user %}
{% endif %}
+{% if user %}
+
{{user.name}}
+
+
Created playlists
+
+
{% endif %}
{% endblock %}
{% block bottomimports %}
diff --git a/users/views.py b/users/views.py
index acf1425..a7368d3 100644
--- a/users/views.py
+++ b/users/views.py
@@ -1,6 +1,7 @@
from django.conf import settings
from django.contrib.auth.decorators import login_required
from django.core.mail import EmailMessage
+from django.db.models import Q
from django.http import HttpResponseRedirect
from django.shortcuts import render
from drf_yasg import openapi as openapi
@@ -21,9 +22,10 @@ from rest_framework.views import APIView
from cms.permissions import IsUserOrManager
from files.methods import is_mediacms_editor, is_mediacms_manager
+from files.models import Playlist
from .forms import ChannelForm, UserForm
-from .models import Channel, User
+from .models import Channel, Media, User
from .serializers import LoginSerializer, UserDetailSerializer, UserSerializer
@@ -44,6 +46,7 @@ def view_user(request, username):
context["CAN_EDIT"] = True if ((user and user == request.user) or is_mediacms_manager(request.user)) else False
context["CAN_DELETE"] = True if is_mediacms_manager(request.user) else False
context["SHOW_CONTACT_FORM"] = True if (user.allow_contact or is_mediacms_editor(request.user)) else False
+ context["media"] = list(Media.objects.filter(Q(listable=True)).filter(user__username=username))[:50]
return render(request, "cms/user.html", context)
@@ -57,6 +60,7 @@ def view_user_media(request, username):
context["CAN_EDIT"] = True if ((user and user == request.user) or is_mediacms_manager(request.user)) else False
context["CAN_DELETE"] = True if is_mediacms_manager(request.user) else False
context["SHOW_CONTACT_FORM"] = True if (user.allow_contact or is_mediacms_editor(request.user)) else False
+ context["media"] = list(Media.objects.filter(Q(listable=True)).filter(user__username=username))[:50]
return render(request, "cms/user_media.html", context)
@@ -70,6 +74,7 @@ def view_user_playlists(request, username):
context["CAN_EDIT"] = True if ((user and user == request.user) or is_mediacms_manager(request.user)) else False
context["CAN_DELETE"] = True if is_mediacms_manager(request.user) else False
context["SHOW_CONTACT_FORM"] = True if (user.allow_contact or is_mediacms_editor(request.user)) else False
+ context["playlists"] = Playlist.objects.filter(user__username=username)
return render(request, "cms/user_playlists.html", context)