[project] Update and reorganize todos
This commit is contained in:
182
PROJECT.org
182
PROJECT.org
@ -1,6 +1,20 @@
|
|||||||
#+title: Vrobbler Project
|
#+title: Vrobbler Project
|
||||||
|
|
||||||
* Overview
|
* Overview
|
||||||
|
Vrobbler began humbly enough as a way to use Jellyfin's webhook to keep track of
|
||||||
|
the shows and movies I was watching. More specifically, I broke my ankle a few
|
||||||
|
days after Christmas in 2022 and spent the next four months very slowly
|
||||||
|
recovering after surgical repair. So once I had the webhook working, and
|
||||||
|
scrobbling videos, it was only a matter of time till I expaned it to mopidy to
|
||||||
|
replicate LastFM. Then I added board games, books via KoReader, sports events,
|
||||||
|
podcasts ... it just keeps going. Vrobbler is now a sort of Frankenstein's
|
||||||
|
monster of scrobbling an entire life.
|
||||||
|
|
||||||
|
I am still unconvinced I can keep this going, but being able to scrobble org
|
||||||
|
tasks, Todoist tasks, web pages I've read and trails I've hiked has turned out
|
||||||
|
to be sometimes cathartic and sometimes functional as I try to remember when I
|
||||||
|
did a thing.
|
||||||
|
|
||||||
* Features
|
* Features
|
||||||
** Beer
|
** Beer
|
||||||
*** Triggers
|
*** Triggers
|
||||||
@ -70,7 +84,6 @@ fetching and simple saving.
|
|||||||
**** Bookmarklet
|
**** Bookmarklet
|
||||||
*** Metadata sources
|
*** Metadata sources
|
||||||
**** Scraper
|
**** Scraper
|
||||||
* Release history
|
|
||||||
* Chores
|
* Chores
|
||||||
** DONE Document various vrobbler features :chore:personal:project:vrobbler:documentation:
|
** DONE Document various vrobbler features :chore:personal:project:vrobbler:documentation:
|
||||||
:PROPERTIES:
|
:PROPERTIES:
|
||||||
@ -79,71 +92,8 @@ fetching and simple saving.
|
|||||||
:LOGBOOK:
|
:LOGBOOK:
|
||||||
CLOCK: [2025-07-09 Wed 09:55]--[2025-07-09 Wed 10:15] => 0:20
|
CLOCK: [2025-07-09 Wed 09:55]--[2025-07-09 Wed 10:15] => 0:20
|
||||||
:END:
|
:END:
|
||||||
* Backlog [3/23]
|
* Backlog [0/24]
|
||||||
** TODO [#A] Add classmethod for metadata fetching to tracks :vrobbler:feature:music:personal:project:
|
** TODO [#C] Create small utility to clean up tracks scrobbled with wonky playback times :vrobbler:personal:bug:music:scrobbles:
|
||||||
:PROPERTIES:
|
|
||||||
:ID: bc4b45e5-4c65-13c5-ab7b-1937d3fbf5c2
|
|
||||||
:END:
|
|
||||||
:LOGBOOK:
|
|
||||||
CLOCK: [2025-07-09 Wed 10:15]
|
|
||||||
:END:
|
|
||||||
|
|
||||||
** TODO Add importer class for IMAP imports :vrobbler:feature:imap:importers:project:personal:
|
|
||||||
** TODO Add youtube link in place of IMDB on video detail page :vrobbler:feature:videos:personal:project:
|
|
||||||
** TODO [#A] Tasks from org-mode should properly update notes and leave them out of the body :vrobbler:bug:tasks:
|
|
||||||
** TODO [#A] Fix small bug in views for TV series where next episode is now None :vrobbler:bug:personal:videos:
|
|
||||||
|
|
||||||
#+begin_src python
|
|
||||||
ERROR django.request:241 log_response Internal Server Error: /series/c24100d1-da45-4abe-86bf-27cfce9b1f89/
|
|
||||||
Traceback (most recent call last):
|
|
||||||
File "/usr/local/lib/python3.11/site-packages/django/core/handlers/exception.py", line 55, in inner
|
|
||||||
response = get_response(request)
|
|
||||||
^^^^^^^^^^^^^^^^^^^^^
|
|
||||||
File "/usr/local/lib/python3.11/site-packages/django/core/handlers/base.py", line 197, in _get_response
|
|
||||||
response = wrapped_callback(request, *callback_args, **callback_kwargs)
|
|
||||||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
||||||
File "/usr/local/lib/python3.11/site-packages/django/views/generic/base.py", line 104, in view
|
|
||||||
return self.dispatch(request, *args, **kwargs)
|
|
||||||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
||||||
File "/usr/local/lib/python3.11/site-packages/django/contrib/auth/mixins.py", line 73, in dispatch
|
|
||||||
return super().dispatch(request, *args, **kwargs)
|
|
||||||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
||||||
File "/usr/local/lib/python3.11/site-packages/django/views/generic/base.py", line 143, in dispatch
|
|
||||||
return handler(request, *args, **kwargs)
|
|
||||||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
||||||
File "/usr/local/lib/python3.11/site-packages/django/views/generic/detail.py", line 109, in get
|
|
||||||
context = self.get_context_data(object=self.object)
|
|
||||||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
||||||
File "/usr/local/lib/python3.11/site-packages/vrobbler/apps/videos/views.py", line 33, in get_context_data
|
|
||||||
context_data["next_episode_id"] = "tt" + next_episode_id
|
|
||||||
~~~~~^~~~~~~~~~~~~~~~~
|
|
||||||
TypeError: can only concatenate str (not "NoneType") to str
|
|
||||||
#+end_src
|
|
||||||
|
|
||||||
** TODO [#A] Send periodic check notifications for board games and beer that ask if you're still scrobbling :vrobbler:personal:project:beers:boardgames:notifications:feature:
|
|
||||||
** TODO [#A] Fix raw text webpage title not truncating to 254 chars :vrobbler:personal:bug:webpages:
|
|
||||||
** TODO [#A] Fix koreader scrobble imports to use DST properly :vrobbler:personal:bug:books:imports:
|
|
||||||
The page data has the canonical date something was read in it, but it seems to be an hour off. I traced this back to being off during DST, so we just need the importer to be aware of whether a user is using DST or not and roll back an hour for part of the year.
|
|
||||||
|
|
||||||
Also, we'd need to adjust any old scrobbles that took place with DST off to roll them back by an hour.
|
|
||||||
** TODO [#A] Create small utility to clean up tracks scrobbled with wonky playback times :vrobbler:personal:bug:music:scrobbles:
|
|
||||||
** TODO [#B] Add AllTrails as a source for Trail data :vrobbler:trails:feature:personal:project:
|
|
||||||
Pretty clear, I would love to make trails more useful. Historically I wasn't
|
|
||||||
hiking a lot, which made the source for this a bit silly. But it's clear that
|
|
||||||
AllTrails is the best source, though having TrailForks is nice to.
|
|
||||||
** TODO [#B] Add `garmin_activity_id` to the TrailMetadataLog class :vrobbler:trails:feature:personal:project:
|
|
||||||
Would be nice to have some loose connection to the actual event in my Garmin profile.
|
|
||||||
** TODO [#B] Explore a way to add metadata editing to scrobbles after saving :vrobbler:spike:scrobbling:personal:project:
|
|
||||||
Could be as simple as a JSON form on the scrobble detail page (do I have have one of those yet?).
|
|
||||||
** TODO [#B] Explore a good way to show notes and descriptions from scrobbles to users :personal:project:scrobbling:vrobbler:spike:
|
|
||||||
** TODO [#B] Add webdav syncing to retroarch imports :vrobbler:videogames:webdav:feature:project:personal:
|
|
||||||
** TODO [#B] Add CSV endpoint for book scrobbles that LibraryThing can ingest :personal:project:books:feature:export:
|
|
||||||
https://app.todoist.com/app/task/add-a-csv-endpoint-for-users-book-reads-that-library-thing-can-ingest-6X7QPMRp265xMXqg#comment-6X7QrXq6gJjMP4hg
|
|
||||||
** TODO [#C] Fix bug where podcast scrobbling creates duplicate Podcast :project:vrobbler:scrobbling:podcasts:bug:personal:
|
|
||||||
Rather than pick up an existing Podcast using the podcast title in the mopidy
|
|
||||||
file name, Vrobbler creates a new podcast with no enriched data. Not a big deal
|
|
||||||
for my use as the volume of podcasts I listen to makes manual fixes easy. But
|
|
||||||
it's annoying.
|
|
||||||
** TODO [#C] Move to using more robust mopidy-webhooks pacakge form pypi :utility:improvement:
|
** TODO [#C] Move to using more robust mopidy-webhooks pacakge form pypi :utility:improvement:
|
||||||
:PROPERTIES:
|
:PROPERTIES:
|
||||||
:ID: ab31fdc3-359c-1b1d-6b9d-546b476021ba
|
:ID: ab31fdc3-359c-1b1d-6b9d-546b476021ba
|
||||||
@ -442,6 +392,106 @@ it's annoying.
|
|||||||
** TODO [#C] Allow users to see tasks on calendar view :vrobbler:personal:project:templates:feature:
|
** TODO [#C] Allow users to see tasks on calendar view :vrobbler:personal:project:templates:feature:
|
||||||
https://codepen.io/oliviale/pen/QYqybo
|
https://codepen.io/oliviale/pen/QYqybo
|
||||||
** TODO [#C] Come up with a possible flow using WebDAV and super-productivity for tasks :personal:feature:project:vrobbler:tasks:
|
** TODO [#C] Come up with a possible flow using WebDAV and super-productivity for tasks :personal:feature:project:vrobbler:tasks:
|
||||||
|
** TODO [#B] Add importer class for IMAP imports :vrobbler:feature:imap:importers:project:personal:
|
||||||
|
** TODO [#B] Clean up follow up notifications for board games and beer that ask if you're still scrobbling :vrobbler:personal:project:beers:boardgames:notifications:feature:
|
||||||
|
|
||||||
|
- Note taken on [2025-09-30 Tue 09:32]
|
||||||
|
|
||||||
|
I added this feature in a very rough way, but now we should add "Action"
|
||||||
|
headers so that we can either Finish or Cancel the associated scrobble:
|
||||||
|
|
||||||
|
https://docs.ntfy.sh/publish/#send-http-request
|
||||||
|
|
||||||
|
** TODO [#B] Add AllTrails as a source for Trail data :vrobbler:trails:feature:personal:project:
|
||||||
|
Pretty clear, I would love to make trails more useful. Historically I wasn't
|
||||||
|
hiking a lot, which made the source for this a bit silly. But it's clear that
|
||||||
|
AllTrails is the best source, though having TrailForks is nice to.
|
||||||
|
** TODO [#B] Add `garmin_activity_id` to the TrailMetadataLog class :vrobbler:trails:feature:personal:project:
|
||||||
|
Would be nice to have some loose connection to the actual event in my Garmin profile.
|
||||||
|
** TODO [#B] Explore a way to add metadata editing to scrobbles after saving :vrobbler:spike:scrobbling:personal:project:
|
||||||
|
Could be as simple as a JSON form on the scrobble detail page (do I have have one of those yet?).
|
||||||
|
** TODO [#B] Explore a good way to show notes and descriptions from scrobbles to users :personal:project:scrobbling:vrobbler:spike:
|
||||||
|
** TODO [#B] Add webdav syncing to retroarch imports :vrobbler:videogames:webdav:feature:project:personal:
|
||||||
|
** TODO [#B] Add CSV endpoint for book scrobbles that LibraryThing can ingest :personal:project:books:feature:export:
|
||||||
|
https://app.todoist.com/app/task/add-a-csv-endpoint-for-users-book-reads-that-library-thing-can-ingest-6X7QPMRp265xMXqg#comment-6X7QrXq6gJjMP4hg
|
||||||
|
** TODO [#B] Add youtube link in place of IMDB on video detail page :vrobbler:feature:videos:personal:project:
|
||||||
|
** TODO [#B] Fix PuzzleLogData has no attribute form :vrobbler:puzzles:personal:project:logdata:
|
||||||
|
** TODO [#B] Scrape ComicBookRoundUp ratings for comic book metadata :vrobbler:books:feature:comicbook:personal:project:
|
||||||
|
|
||||||
|
- Note taken on [2025-09-25 Thu 10:51]
|
||||||
|
|
||||||
|
As an example https://comicbookroundup.com/comic-books/reviews/humanoids-publishing/the-history-of-science-fiction
|
||||||
|
** TODO [#B] Add PuzzleLogData class with with_people and completed :vrobbler:feature:puzzles:logdata:personal:project:
|
||||||
|
** TODO [#A] Add classmethod for metadata fetching to tracks :vrobbler:feature:music:personal:project:
|
||||||
|
:PROPERTIES:
|
||||||
|
:ID: bc4b45e5-4c65-13c5-ab7b-1937d3fbf5c2
|
||||||
|
:END:
|
||||||
|
|
||||||
|
** TODO [#A] Tasks from org-mode should properly update notes and leave them out of the body :vrobbler:bug:tasks:
|
||||||
|
** TODO [#A] Fix views for TV series where next episode is now None :vrobbler:bug:personal:videos:
|
||||||
|
|
||||||
|
#+begin_src python
|
||||||
|
ERROR django.request:241 log_response Internal Server Error: /series/c24100d1-da45-4abe-86bf-27cfce9b1f89/
|
||||||
|
Traceback (most recent call last):
|
||||||
|
File "/usr/local/lib/python3.11/site-packages/django/core/handlers/exception.py", line 55, in inner
|
||||||
|
response = get_response(request)
|
||||||
|
^^^^^^^^^^^^^^^^^^^^^
|
||||||
|
File "/usr/local/lib/python3.11/site-packages/django/core/handlers/base.py", line 197, in _get_response
|
||||||
|
response = wrapped_callback(request, *callback_args, **callback_kwargs)
|
||||||
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||||
|
File "/usr/local/lib/python3.11/site-packages/django/views/generic/base.py", line 104, in view
|
||||||
|
return self.dispatch(request, *args, **kwargs)
|
||||||
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||||
|
File "/usr/local/lib/python3.11/site-packages/django/contrib/auth/mixins.py", line 73, in dispatch
|
||||||
|
return super().dispatch(request, *args, **kwargs)
|
||||||
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||||
|
File "/usr/local/lib/python3.11/site-packages/django/views/generic/base.py", line 143, in dispatch
|
||||||
|
return handler(request, *args, **kwargs)
|
||||||
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||||
|
File "/usr/local/lib/python3.11/site-packages/django/views/generic/detail.py", line 109, in get
|
||||||
|
context = self.get_context_data(object=self.object)
|
||||||
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||||
|
File "/usr/local/lib/python3.11/site-packages/vrobbler/apps/videos/views.py", line 33, in get_context_data
|
||||||
|
context_data["next_episode_id"] = "tt" + next_episode_id
|
||||||
|
~~~~~^~~~~~~~~~~~~~~~~
|
||||||
|
TypeError: can only concatenate str (not "NoneType") to str
|
||||||
|
#+end_src
|
||||||
|
|
||||||
|
** TODO [#A] Fix koreader scrobble imports to use DST properly :vrobbler:personal:bug:books:imports:
|
||||||
|
|
||||||
|
- Note taken on [2025-09-25 Thu 10:37] \\
|
||||||
|
|
||||||
|
This may already be fixed ... need to check.
|
||||||
|
|
||||||
|
- Note taken on [2025-02-25 12:34] \\
|
||||||
|
|
||||||
|
The page data has the canonical date something was read in it, but it seems
|
||||||
|
to be an hour off. I traced this back to being off during DST, so we just need
|
||||||
|
the importer to be aware of whether a user is using DST or not and roll back
|
||||||
|
an hour for part of the year. Also, we'd need to adjust any old scrobbles that
|
||||||
|
took place with DST off to roll them back by an hour.
|
||||||
|
|
||||||
|
** TODO [#A] Fix bug where podcast scrobbling creates duplicate Podcast :project:vrobbler:scrobbling:podcasts:bug:personal:
|
||||||
|
Rather than pick up an existing Podcast using the podcast title in the mopidy
|
||||||
|
file name, Vrobbler creates a new podcast with no enriched data. Not a big deal
|
||||||
|
for my use as the volume of podcasts I listen to makes manual fixes easy. But
|
||||||
|
it's annoying.
|
||||||
|
** TODO [#A] Allow scrobbling from the Food list page's start links :vrobbler:bug:food:scrobbling:personal:project:
|
||||||
|
https://life.lab.unbl.ink/scrobble/e39779c8-62a5-46a6-bdef-fb7662810dc6/start/
|
||||||
|
** TODO [#A] Allow reading comic books from readcomicsoline.ru :vrobbler:books:feature:comicbook:personal:project:scrobbling:
|
||||||
|
|
||||||
|
- Note taken on [2025-09-25 Thu 10:52]
|
||||||
|
|
||||||
|
Things to consider are whether we scrobble the issue on one page, send it to
|
||||||
|
archivebox? (yes), and how best to enrich the data
|
||||||
|
|
||||||
|
** TODO [#A] Puzzles (and all longplays) should have a "Completed?" column on their detail page :vrobbler:bug:puzzles:personal:project:
|
||||||
|
** TODO [#A] Fix raw text webpage title not truncating to 254 chars :vrobbler:personal:bug:webpages:
|
||||||
|
|
||||||
|
- Note taken on [2025-09-30 Tue 09:33]
|
||||||
|
|
||||||
|
This may have already been resolved ... need to just confirm it.
|
||||||
|
|
||||||
* Version 26.0 [3/3]
|
* Version 26.0 [3/3]
|
||||||
** DONE Clean up templates for scrobble details :vrobbler:personal:bug:templates:
|
** DONE Clean up templates for scrobble details :vrobbler:personal:bug:templates:
|
||||||
:PROPERTIES:
|
:PROPERTIES:
|
||||||
|
|||||||
Reference in New Issue
Block a user