dropin

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

commit
0e0ca536d0ee0c91e9d6c23675ccd995b1d4eb68
parent
efb6ed767993e2e51abf87cedf03a05b8ed36d9e
Author
Tobias Bengfort <tobias.bengfort@posteo.de>
Date
2025-03-13 07:44
support files as items

example: /playlist/649038/

Diffstat

M dropin.py 18 ++++++++++--------
M templates/_list.html 7 +++++--

2 files changed, 15 insertions, 10 deletions


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

@@ -330,17 +330,19 @@ async def get_next(data):
  330   330     try:
  331   331         season_id = data['canonical_collection']['id']
  332   332         season = await fetch_items(f'https://api.vhx.tv/collections/{season_id}/items')
  333    -1         episode_number = [episode['id'] for episode in season].index(data['id']) + 1
  334    -1         if episode_number < len(season):
  335    -1             return season[episode_number]['id']
   -1   333         episode_number = [episode['id'] for episode in season].index(data['id'])
   -1   334         for episode in season[episode_number + 1:]:
   -1   335             if episode['type'] == 'video':
   -1   336                 return episode['id']
  336   337 
  337   338         series_id = data['canonical_collection']['parent']['id']
  338   339         series = await fetch_items(f'https://api.vhx.tv/collections/{series_id}/items')
  339    -1         season_number = [season['id'] for season in series].index(season_id) + 1
  340    -1         if season_number < len(series):
  341    -1             season_id = series[season_number]['id']
  342    -1             season = await fetch_items(f'https://api.vhx.tv/collections/{season_id}/items')
  343    -1             return season[0]['id']
   -1   340         season_number = [season['id'] for season in series].index(season_id)
   -1   341         for s in series[season_number + 1:]:
   -1   342             season = await fetch_items(f'https://api.vhx.tv/collections/{s["id"]}/items')
   -1   343             for episode in season:
   -1   344                 if episode['type'] == 'video':
   -1   345                     return episode['id']
  344   346     except Exception:
  345   347         return None
  346   348 

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

@@ -1,7 +1,7 @@
    1     1 <ul class="list">
    2     2     {% for item in items %}
    3     3         <li>
    4    -1             <a href="/{{ item.type }}/{{ item.id }}/" aria-label="{{ item.title }}">
   -1     4             <a href="{% if item.type == 'file'%}{{ item._links.source.href }}{% else %}/{{ item.type }}/{{ item.id }}/{% endif %}" aria-label="{{ item.name }}">
    5     5                 <div class="relative">
    6     6                     {% if item.thumbnail %}
    7     7                         <img src="{{ item.thumbnail.small }}" alt="" width="240" height="135" loading="lazy">
@@ -14,10 +14,13 @@
   14    14                         <div class="thumbnail-corner">{{ item.duration|duration }}</div>
   15    15                     {% endif %}
   16    16                 </div>
   17    -1                 <div class="list-item-title">{{ item.title }}</div>
   -1    17                 <div class="list-item-title">{{ item.name }}</div>
   18    18                 {% if item.metadata and item.metadata.episode_number %}
   19    19                     <div class="list-item-meta">Episode {{ item.metadata.episode_number }}</div>
   20    20                 {% endif %}
   -1    21                 {% if item.type == 'file' %}
   -1    22                     <div class="list-item-meta">{{ item.size.formatted }} ({{ item.format }})</div>
   -1    23                 {% endif %}
   21    24             </a>
   22    25         </li>
   23    26     {% else %}