diff --git a/vrobbler/apps/scrobbles/utils.py b/vrobbler/apps/scrobbles/utils.py new file mode 100644 index 0000000..e9fe569 --- /dev/null +++ b/vrobbler/apps/scrobbles/utils.py @@ -0,0 +1,7 @@ +def convert_to_seconds(run_time: str) -> int: + """Jellyfin sends run time as 00:00:00 string. We want the run time to + actually be in seconds so we'll convert it""" + if ":" in run_time: + run_time_list = run_time.split(":") + run_time = (int(run_time_list[1]) * 60) + int(run_time_list[2]) + return int(run_time) diff --git a/vrobbler/apps/videos/models.py b/vrobbler/apps/videos/models.py index 2141b5a..8d5047e 100644 --- a/vrobbler/apps/videos/models.py +++ b/vrobbler/apps/videos/models.py @@ -3,6 +3,7 @@ from typing import Dict from uuid import uuid4 from django.db import models +from django.urls import reverse from django.utils.translation import gettext_lazy as _ from django_extensions.db.models import TimeStampedModel from scrobbles.utils import convert_to_seconds @@ -64,6 +65,10 @@ class Video(TimeStampedModel): return f"{self.tv_series} - Season {self.season_number}, Episode {self.episode_number}" return self.title + def get_absolute_url(self): + return reverse("videos:video_detail", kwargs={'slug': self.uuid}) + + @property def imdb_link(self): return f"https://www.imdb.com/title/{self.imdb_id}" diff --git a/vrobbler/apps/videos/urls.py b/vrobbler/apps/videos/urls.py new file mode 100644 index 0000000..a4ac804 --- /dev/null +++ b/vrobbler/apps/videos/urls.py @@ -0,0 +1,21 @@ +from django.urls import path +from videos import views + +app_name = 'scrobbles' + + +urlpatterns = [ + # path('', views.scrobble_endpoint, name='scrobble-list'), + path("movies/", views.MovieListView.as_view(), name='movie_list'), + path('series/', views.SeriesListView.as_view(), name='series_list'), + path( + 'series//', + views.SeriesDetailView.as_view(), + name='series_detail', + ), + path( + 'video//', + views.VideoDetailView.as_view(), + name='video_detail', + ), +] diff --git a/vrobbler/apps/videos/views.py b/vrobbler/apps/videos/views.py new file mode 100644 index 0000000..b80ea23 --- /dev/null +++ b/vrobbler/apps/videos/views.py @@ -0,0 +1,25 @@ +from django.views import generic +from videos.models import Series, Video + +# class VideoIndexView(): + + +class MovieListView(generic.ListView): + model = Video + + def get_queryset(self): + return Video.objects.filter(video_type=Video.VideoType.MOVIE) + + +class SeriesListView(generic.ListView): + model = Series + + +class SeriesDetailView(generic.DetailView): + model = Series + slug_field = 'uuid' + + +class VideoDetailView(generic.DetailView): + model = Video + slug_field = 'uuid' diff --git a/vrobbler/templates/base.html b/vrobbler/templates/base.html index 59e6ad9..9b709ba 100644 --- a/vrobbler/templates/base.html +++ b/vrobbler/templates/base.html @@ -2,7 +2,7 @@ - {% block page_title %}Welcome{% endblock %} | Vrobbler » For video scrobbling + {% block page_title %}Scrobble all the things{% endblock %} @ Vrobbler @@ -75,7 +75,7 @@