playlists.html 7.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135
  1. {% load humanize %}
  2. {% if watching %}
  3. {% for playlist in playlists %}
  4. <div class="col">
  5. <div class="card overflow-auto" style="background-color: {{ bg_color|default:"#9363af" }};">
  6. <img class="bd-placeholder-img card-img-top" src="{{ playlist.thumbnail_url }}" style="max-width:100%; height: 200px; object-fit: cover;" alt="{{ playlist.name }} thumbnail">
  7. <div class="card-body">
  8. <h5 class="card-title"><a href="{% url 'playlist' playlist.playlist_id %}" class="stretched-link" style="text-decoration: none; color: white">{{ playlist.name }}</a></h5>
  9. <p class="card-text">
  10. <span class="badge bg-{% if playlist.get_watch_time_left == "0secs." %}success{% else %}primary{% endif %} text-white">{{ playlist.get_watched_videos_count }}/{{ playlist.get_watchable_videos_count }} viewed</span>
  11. {% if playlist.get_watch_time_left != "0secs." %}<span class="badge bg-dark text-white">{{ playlist.get_watch_time_left }} left</span>{% endif %}
  12. </p>
  13. <p class="card-text"><small class="text-black">Last watched {{ playlist.last_watched|naturaltime }}</small></p>
  14. </div>
  15. </div>
  16. </div>
  17. {% endfor %}
  18. {% else %}
  19. {% for playlist in playlists %}
  20. <div class="col">
  21. <div class="card overflow-auto" style="background-color: {{ bg_color|default:"#4790c7" }};">
  22. <a href="{% url 'playlist' playlist.playlist_id %}" style="text-decoration: none; color: black">
  23. <img class="bd-placeholder-img card-img-top" src="{% if playlist.thumbnail_url %}{{ playlist.thumbnail_url }}{% else %}https://i.ytimg.com/vi/9219YrnwDXE/maxresdefault.jpg{% endif %}" style="max-width:100%; height: 200px; object-fit: cover;" alt="{{ playlist.name }} thumbnail">
  24. </a>
  25. <div class="card-body">
  26. <h5 class="card-title">
  27. <a href="{% url 'playlist' playlist.playlist_id %}" style="text-decoration: none; color: white">
  28. {% if playlist.user_label %}
  29. <span style="border-bottom: 3px #eeeaea dashed;">{{ playlist.user_label }}</span>
  30. {% else %}
  31. {{ playlist.name }}
  32. {% endif %}
  33. </a>
  34. </h5>
  35. <p class="card-text text-uppercase">
  36. {% if playlist.is_user_owned %}<span class="badge bg-light text-black-50">OWNED</span>{% else %}<span class="badge bg-light text-black-50">IMPORTED</span>{% endif %}
  37. {% if playlist.is_private_on_yt %}<span class="badge bg-secondary text-white">Private</span> {% endif %}
  38. <span class="badge bg-warning text-black-50">{{ playlist.video_count }} videos</span>
  39. <span class="badge bg-dark text-white">{{ playlist.playlist_duration }} </span>
  40. {% if playlist.is_from_yt %}<span class="badge bg-danger text-black-50">YT</span> {% endif %}
  41. {% if playlist.marked_as == "watching" %}<span class="badge bg-primary text-white">WATCHING</span>{% endif %}
  42. </p>
  43. {% if show_tags|default:True %}
  44. {% if playlist.tags.all %}
  45. <p class="card-text">
  46. <span class="d-flex justify-content-start flex-wrap">
  47. <small>
  48. <span style="color: #eed868;" class="me-lg-1 mb-lg-1">
  49. <i class="fas fa-tags"></i>
  50. </span>
  51. </small>
  52. {% for tag in playlist.tags.all %}
  53. <span class="badge rounded-pill bg-info mb-lg-1 me-lg-1 text-black-50">
  54. {{ tag.name }}
  55. </span>
  56. {% endfor %}
  57. </span>
  58. </p>
  59. {% endif %}
  60. {% endif %}
  61. {% if show_controls %}
  62. <span class="d-flex justify-content-center">
  63. <a href="https://www.youtube.com/playlist?list={{ playlist.playlist_id }}" class="btn btn-light me-1" target="_blank" id="share_link" style=""><i class="fas fa-external-link-alt" aria-hidden="true"></i></a>
  64. <button class="btn btn-dark" type="button" hx-get="{% url 'mark_playlist_as' playlist.playlist_id 'favorite' %}" hx-target="#playlist-{{ forloop.counter }}-fav">
  65. <div id="playlist-{{ forloop.counter }}-fav">
  66. {% if playlist.is_favorite %}
  67. <i class="fas fa-star" style="color: #fafa06"></i>
  68. {% else %}
  69. <i class="far fa-star"></i>
  70. {% endif %}
  71. </div>
  72. </button>
  73. </span>
  74. {% endif %}
  75. </div>
  76. </div>
  77. </div>
  78. {% endfor %}
  79. <!-- minified version
  80. {% for playlist in playlists %}
  81. <div class="col">
  82. <div class="card" style="background-color: #515355;">
  83. <a style="background-color: #1A4464;" href="{% url 'playlist' playlist.playlist_id %}" class="list-group-item list-group-item-action" aria-current="true">
  84. <div class="card-body">
  85. <h5 class="card-title text-white">
  86. {{ playlist.name }}
  87. </h5>
  88. <p class="card-text">
  89. {% if playlist.is_user_owned %}<small><span class="badge bg-light text-black-50">OWNED</span></small>{% else %}<small><span class="badge bg-light text-black-50">IMPORTED</span></small>{% endif %}
  90. {% if playlist.is_private_on_yt %}<small><span class="badge bg-secondary text-white">Private</span></small> {% endif %}
  91. {% if playlist.is_from_yt %}<small><span class="badge bg-danger text-black-50">YT</span></small> {% endif %}
  92. {% if playlist.marked_as == "watching" %}<small><span class="badge bg-primary text-white">WATCHING</span></small>{% endif %}
  93. </p>
  94. {% if playlist.tags.all %}
  95. <p class="card-text">
  96. <span class="d-flex justify-content-start flex-wrap">
  97. <small>
  98. <span style="color: #eed868;" class="me-lg-1 mb-lg-1">
  99. <i class="fas fa-tags"></i>
  100. </span>
  101. </small>
  102. {% for tag in playlist.tags.all %}
  103. <span class="badge rounded-pill bg-info mb-lg-1 me-lg-1 text-black-50">
  104. {{ tag.name }}
  105. </span>
  106. {% endfor %}
  107. </span>
  108. </p>
  109. {% endif %}
  110. <small>
  111. <span class="badge bg-primary rounded-pill">{{ playlist.video_count }} videos</span>
  112. <span class="badge bg-primary rounded-pill">{{ playlist.playlist_duration }} </span>
  113. </small>
  114. </div>
  115. </a>
  116. </div>
  117. </div>
  118. {% endfor %}
  119. -->
  120. {% endif %}