dropin

alternative frontend for dropout.tv
git clone https://git.ce9e.org/dropin.git

commit
b105211b44df46601c11bb90f9608c77d4475dc0
parent
a3a05de9027d32d875a6e874433a5a106f44fdbb
Author
Tobias Bengfort <tobias.bengfort@posteo.de>
Date
2025-02-12 03:16
use release_dates if available

Diffstat

M dropin.py 27 +++++++++++++++++----------
M templates/feed.xml 2 +-
M templates/series.html 2 +-
M templates/video.html 2 +-

4 files changed, 20 insertions, 13 deletions


diff --git a/dropin.py b/dropin.py

@@ -35,10 +35,20 @@ env = jinja2.Environment(
   35    35     lstrip_blocks=True,
   36    36 )
   37    37 env.globals['FORMATS'] = FORMATS
   -1    38 env.filters['feed_date'] = format_datetime
   38    39 
   39    40 
   40    -1 def relative_datetime(value):
   41    -1     dt = datetime.datetime.fromisoformat(value)
   -1    41 def release_date(data):
   -1    42     if data.get('release_dates'):
   -1    43         s = data['release_dates'][0]['date']
   -1    44         s += 'T00:00:00Z'
   -1    45     else:
   -1    46         s = data['created_at']
   -1    47     return datetime.datetime.fromisoformat(s)
   -1    48 env.filters['release'] = release_date
   -1    49 
   -1    50 
   -1    51 def relative_datetime(dt):
   42    52     delta = datetime.datetime.now(tz=datetime.UTC) - dt
   43    53     if delta.days > 365:
   44    54         return f'{delta.days // 365} years ago'
@@ -46,17 +56,14 @@ def relative_datetime(value):
   46    56         return f'{delta.days * 12 // 365} months ago'
   47    57     elif delta.days > 14:
   48    58         return f'{delta.days // 7} weeks ago'
   49    -1     elif delta.days > 0:
   50    -1         return f'{delta.days} days ago'
   51    59     else:
   52    -1         return f'{delta.seconds // 3600} hours ago'
   53    -1 env.filters['dt'] = relative_datetime
   -1    60         return f'{delta.days} days ago'
   -1    61 env.filters['reldate'] = relative_datetime
   54    62 
   55    63 
   56    -1 def feed_date(value):
   57    -1     dt = datetime.datetime.fromisoformat(value)
   58    -1     return format_datetime(dt)
   59    -1 env.filters['feed_date'] = feed_date
   -1    64 def isodate(dt):
   -1    65     return dt.date().isoformat()
   -1    66 env.filters['isodate'] = isodate
   60    67 
   61    68 
   62    69 def duration(value):

diff --git a/templates/feed.xml b/templates/feed.xml

@@ -15,7 +15,7 @@
   15    15                 <title>{% if col.type == 'series' %}{{ item.metadata.season_name }}: {% endif %}{{ item.title }}</title>
   16    16                 <link>{{ item._links.video_page.href }}</link>
   17    17                 <guid>{{ item._links.video_page.href }}</guid>
   18    -1                 <pubDate>{{ item.created_at|feed_date }}</pubDate>
   -1    18                 <pubDate>{{ item|release|feed_date }}</pubDate>
   19    19                 {%+ if description %}<description>{{ item.description }}</description>{% endif %}
   20    20                 <itunes:duration>{{ item.duration.seconds }}</itunes:duration>
   21    21                 <itunes:image href="{{ item.additional_images.aspect_ratio_1_1.medium }}" />

diff --git a/templates/series.html b/templates/series.html

@@ -3,7 +3,7 @@
    3     3 {% block list %}
    4     4     {% for season in seasons|reverse %}
    5     5         <h2 id="season-{{ season.season_number }}">{{ season.title }}</h2>
    6    -1         <time title="{{ season.created_at }}">{{ season.created_at|dt }}</time>
   -1     6         <time title="{{ season|release|isodate }}">{{ season|release|reldate }}</time>
    7     7         {%+ if season.description %}<div class="description">{{ season.description|linebreaks }}</div>{% endif %}
    8     8         {% with items = season.episodes %}
    9     9             {% include '_list.html' %}

diff --git a/templates/video.html b/templates/video.html

@@ -26,7 +26,7 @@
   26    26                 &middot;
   27    27             {% endif %}
   28    28             {{ video.duration|duration }} &middot;
   29    -1             <time title="{{ video.created_at }}">{{ video.created_at|dt }}</time>
   -1    29             <time title="{{ video|release|isodate }}">{{ video|release|reldate }}</time>
   30    30             {% if video._links.video_page %}&middot; <a class="hidden-link" href="{{ video._links.video_page.href }}" referrerpolicy="no-referrer">Watch on dropout.tv</a>{% endif %}
   31    31         </div>
   32    32         {%+ if video.description %}<div class="description">{{ video.description|linebreaks }}</div>{% endif %}