todos.org 19 KB

TODOs

A fun way to keep track of things in the project to fix or improve.

Version 0.16.0

TODO [A] Jellyfin, bandcamp tracks from Mopidy create duplicate music tracks   bug scrobbling music

Effectively, any track that comes in without a MusicBrainz ID does some funky lookup where it doesn't find a track without an MB id and the track title / artist combination and creates a new track everytime. This has to be cleaend up by condensing the duplicated tracks into the original proper track.

But it opens a bigger quesiton about how much MB id should the drive the app lookup. If it can't be depended on to exist from all sources, it really can't be canonical. Instead, the combination of track title / artist is really the best we can do. Last.fm also has this problem, where it doesn't know about albums and definitely does not know or care about MB ids.

DONE Add a user profile page with ability to change settings   profiles improvement

  • Note taken on [2025-04-04 Fri 10:51] ~/src/code.unbl.ink/secstate/vrobbler/ (magit-rev 93c16d8)

    https://code.unbl.ink/secstate/vrobbler/commit/93c16d80ec

DONE What to do with Youtube videos from LastFM and web-scrobbler   bug source lastfm

  • Note taken on [2025-04-04 Fri 10:46]

    Nothing. Over the last few months I built out a youtube model in videos and use a bookmarklet scrobbling pattern. Now web-scrobbler is just disabled for Youtube.

    May want to revisit this at some point and only scrobble tracks from Youtube, because many people use YT for music listening.

DONE [C] Consider a purge command for duplicated and stuck in-progress scrobbles   utililty improvement

CLOSED: [2023-04-06 Thu 14:09]

DONE Add a "stop_timestamp" so we don't rely on content length   improvement scrobbling

CLOSED: [2023-04-02 Sun 23:58]

Essentially, we currently have the timestamp as when the content began scrobbling and then calculate the finish time from the length of the content. This works pretty well because we know how long most things are.

But in some cases, sports events or long podcasts, we may start mid-way through an event or finish halfway through but still want to mark it as done. In these cases, knowing the finish time could be useful, especially when interfacing with other scrobblers which may have different definitions of when a scrobble finishes or started.

DONE Fix bug with Various Artist albums being labeled with first artist as album artist   scrobbling bug music

CLOSED: [2023-03-27 Mon 20:18]

CLOCK: [2023-03-26 Sun 22:01]–[2023-03-27 Mon 01:07] => 3:06

DONE Fix bug with weekly aggregator being blank on Sundays   aggregators music bug

CLOSED: [2023-03-26 Sun 13:52]

DONE Fix KoReader scrobbling to use pages rather than time of last read   scrobbling books improvement

CLOSED: [2023-03-26 Sun 13:51]

CLOCK: [2023-03-26 Sun 13:11]–[2023-03-26 Sun 13:51] => 0:40

DONE [A] Add django-storage to store files on S3   settings improvement

CLOSED: [2023-03-24 Fri 14:46]

CLOCK: [2023-03-24 Fri 10:47]–[2023-03-24 Fri 14:46] => 3:59 CLOCK: [2023-03-24 Fri 10:36]–[2023-03-24 Fri 10:40] => 0:04

DONE Fix vrobbler settings not using booleans   settings bug

CLOSED: [2023-03-24 Fri 10:45]

CLOCK: [2023-03-24 Fri 10:40]–[2023-03-24 Fri 10:46] => 0:06

DONE Update weekly live chart to be 7-day continuous rather than weekly   views bug

CLOSED: [2023-03-24 Fri 00:31] The live view will be blank every Monday, no reason to tie it to a day of the week. It should be "the last 7 days"

DONE [B] Implement a detail view for TV shows   improvement views

CLOSED: [2023-03-22 Wed 17:05]

DONE [B] Implement a detail view for Movies   improvement views

CLOSED: [2023-03-22 Wed 17:05]

DONE Add "service provider" to TV Series, and use that for source when available   bug scrobbling

CLOSED: [2023-03-22 Wed 17:04]

DONE Add view for long-play content (books, video games) to restart them   views improvement

CLOSED: [2023-03-22 Wed 17:01]

DONE Add live chart view like Maloja   improvement views

CLOSED: [2023-03-07 Tue 11:13]

DONE [C] Figure out how to add to web-scrobbler   improvement scrobbling

CLOSED: [2023-03-22 Wed 17:06]

An example: https://github.com/web-scrobbler/web-scrobbler/blob/master/src/core/background/scrobbler/maloja-scrobbler.js

This is actually going to be moot because we can import from LastFM, and web-scrobbler integrates well with LastFM. The only thing to think through here now is what to do with all the garbage web-scrobbler sometimes pushes to LastFM from Youtube (all videos get pushed, sigh).

DONE Add Amazon scraper to look up books when OL fails   books improvement

This turned out to be a non-starter … Amazon is aggressive at disallowing scraping quality. And all the OSS tools out there are stuck in an arms race trying to keep them from breaking.

That said, Google Books actually has a decent API (for now), and I've built this out using that.

DONE Fix bug in Jellyfin scrobbles that spam more scrobbles after completion   scrobbling videos bug

This was fixed a while ago, but there's a new manifested bug. Going to create a separate bug tracking ticket for that.

Version 0.11.4

DONE Add rudimentary video game scrobbling   improvement content videogames

CLOSED: [2023-03-07 Tue 11:11]

DONE Add ability to scrobble from KOReader statistics files   improvement books content

CLOSED: [2023-03-07 Tue 11:11]

DONE [A] Fix fetching artwork without release group   bug

CLOSED: [2023-01-29 Sun 14:27]

When we get artwork from Musicbrianz, and it's not found, we should check for release groups as well. This will stop issues with missing artwork because of obscure MB release matches.

DONE [A] Fix Jellyfin music scrobbling N+1 past 90 completion percent   bug

CLOSED: [2023-01-30 Mon 18:31]

CLOCK: [2023-01-30 Mon 18:00]–[2023-01-30 Mon 18:31] => 0:31

If we play music from Jellyfin and the track reaches 90% completion, the scrobbling goes crazy and starts creating new scrobbles with every update.

The cause is pretty simple, but the solution is hard. We want to mark a scrobble as complete for the following conditions:

  • Play stopped and percent played beyond 90%

  • Play completely finished

But if we keep listening beyond 90, we should basically ignore updates (or just update the existing scrobble)

DONE [A] Add support for Audioscrobbler tab-separated file uploads   improvement

CLOSED: [2023-02-03 Fri 16:52]

An example of the format:

,
#AUDIOSCROBBLER/1.1
#TZ/UNKNOWN
#CLIENT/Rockbox sansaclipplus $Revision$
75 Dollar Bill	I Was Real	I Was Real	4	1015	S	1740494944	64ff5f53-d187-4512-827e-7606c69e66ff
75 Dollar Bill	I Was Real	I Was Real	4	1015	S	1740494990	64ff5f53-d187-4512-827e-7606c69e66ff
311	311	Down	1	173	S	1740495003	00476c23-fd9e-464b-9b27-a62d69f3d4f4
311	311	Down	1	173	L	1740495049	00476c23-fd9e-464b-9b27-a62d69f3d4f4
311	311	Down	1	173	L	1740495113	00476c23-fd9e-464b-9b27-a62d69f3d4f4
311	311	Random	2	187	S	1740495190	530c09f3-46fe-4d90-b11f-7b63bcb4b373
311	311	Random	2	187	L	1740495194	530c09f3-46fe-4d90-b11f-7b63bcb4b373
311	311	Jackolantern’s Weather	3	204	L	1740495382	cc3b2dec-5d99-47ea-8930-20bf258be4ea
311	311	All Mixed Up	4	182	L	1740495586	980a78b5-5bdd-4f50-9e3a-e13261e2817b
311	311	Hive	5	179	L	1740495768	18f6dc98-d3a2-4f81-b967-97359d14c68c
311	311	Guns (Are for Pussies)	6	137	L	1740495948	5e97ed9f-c8cc-4282-9cbe-f8e17aee5128
311	311	Misdirected Hostility	7	179	S	1740496085	61ff2c1a-fc9c-44c3-8da1-5e50a44245af
,

DONE [B] Allow scrobbling music without MB IDs by grabbing them before scrobble   improvement

CLOSED: [2023-02-17 Fri 00:10]

This would allow a few nice flows. One, you'd be able to record the play of an entire album by just dropping the muscibrainz_id in. This could be helpful for offline listening. It would also mean bad metadata from mopidy would not break scrobbling.

DONE When updating musicbrainz IDs, clear and run fetch artwrok   improvement

CLOSED: [2023-02-17 Fri 00:11]

DONE [A] Add ability to manually scrobble albums or tracks from MB   improvement

CLOSED: [2023-03-07 Tue 11:09]

Given a UUID from musicbrainz, we should be able to scrobble an album or individual track.

DONE [C] Implement keeping track of week/month/year chart-toppers   improvement

CLOSED: [2023-03-07 Tue 11:10]

CLOCK: [2023-01-30 Mon 16:30]–[2023-01-30 Mon 18:00] => 1:30

Maloja does this cool thing where artists and tracks get recorded as the top track of a given week, month or year. They get gold, silver or bronze stars for their place in the time period.

I could see this being implemented as a separate Chart table which gets populated at the end of a time period and has a start and end date that defines a period, along with a one, two, three instance.

Of course, it could also be a data model without a table, where it runs some fun calculations, stores it's values in Redis as a long-term lookup table and just has to re-populate when the server restarts.

Backlog

TODO [C] Move to using more robust mopidy-webhooks pacakge form pypi   utility improvement

Example payloads from mopidy-webhooks

Podcast playback ended
{
    "type": "event",
    "event": "track_playback_ended",
    "data": {
        "tl_track": {
            "__model__": "TlTrack",
            "tlid": 13,
            "track": {
                "__model__": "Track",
                "uri": "file:///var/lib/mopidy/media/podcasts/The%20Prince/2022-09-28-Wolf-warriors.mp3",
                "name": "Wolf warriors",
                "artists": [
                    {
                        "__model__": "Artist",
                        "name": "The Economist"
                    }
                ],
                "album": {
                    "__model__": "Album",
                    "name": "The Prince",
                    "date": "2022"
                },
                "genre": "Blues",
                "date": "2022",
                "length": 2437778,
                "bitrate": 127988
            }
        },
        "time_position": 3290
    }
}
Podcast playback state changes
{
    "type": "event",
    "event": "playback_state_changed",
    "data": {
        "old_state": "paused",
        "new_state": "playing"
    }
}
{
    "type": "event",
    "event": "playback_state_changed",
    "data": {
        "old_state": "stopped",
        "new_state": "playing"
    }
}
Podcast playback started
{
    "type": "event",
    "event": "track_playback_started",
    "data": {
        "tl_track": {
            "__model__": "TlTrack",
            "tlid": 13,
            "track": {
                "__model__": "Track",
                "uri": "file:///var/lib/mopidy/media/podcasts/The%20Prince/2022-09-28-Wolf-warriors.mp3",
                "name": "Wolf warriors",
                "artists": [
                    {
                        "__model__": "Artist",
                        "name": "The Economist"
                    }
                ],
                "album": {
                    "__model__": "Album",
                    "name": "The Prince",
                    "date": "2022"
                },
                "genre": "Blues",
                "date": "2022",
                "length": 2437778,
                "bitrate": 127988
            }
        }
    }
}
Podcast playback paused
{
    "type": "status",
    "data": {
        "state": "paused",
        "current_track": {
            "__model__": "Track",
            "uri": "file:///var/lib/mopidy/media/podcasts/The%20Prince/2022-09-28-Wolf-warriors.mp3",
            "name": "Wolf warriors",
            "artists": [
                {
                    "__model__": "Artist",
                    "name": "The Economist"
                }
            ],
            "album": {
                "__model__": "Album",
                "name": "The Prince",
                "date": "2022"
            },
            "genre": "Blues",
            "date": "2022",
            "length": 2437778,
            "bitrate": 127988
        },
        "time_position": 2350
    }
}
Track playback started
{
    "type": "event",
    "event": "track_playback_started",
    "data": {
        "tl_track": {
            "__model__": "TlTrack",
            "tlid": 14,
            "track": {
                "__model__": "Track",
                "uri": "local:track:Various%20Artists%20-%202008%20-%20Twilight%20OST/01-muse-supermassive_black_hole.mp3",
                "name": "Supermassive Black Hole",
                "artists": [
                    {
                        "__model__": "Artist",
                        "uri": "local:artist:md5:250dd6551b66a58a6b4897aa697f200c",
                        "name": "Muse",
                        "musicbrainz_id": "9c9f1380-2516-4fc9-a3e6-f9f61941d090"
                    }
                ],
                "album": {
                    "__model__": "Album",
                    "uri": "local:album:md5:455343d54cdd89cb5a3b5ad537ea99d0",
                    "name": "Twilight: Original Motion Picture Soundtrack",
                    "artists": [
                        {
                            "__model__": "Artist",
                            "uri": "local:artist:md5:54e4db2d5624f80b0cc290346e696756",
                            "name": "Various Artists",
                            "musicbrainz_id": "89ad4ac3-39f7-470e-963a-56509c546377"
                        }
                    ],
                    "num_tracks": 12,
                    "num_discs": 1,
                    "date": "2008-11-04",
                    "musicbrainz_id": "b4889eaf-d9f4-434c-a68d-69227b12b6a4"
                },
                "composers": [
                    {
                        "__model__": "Artist",
                        "uri": "local:artist:md5:4d49cbca0b347e0a89047bb019d2779d",
                        "name": "Matt Bellamy"
                    }
                ],
                "genre": "Rock",
                "track_no": 1,
                "disc_no": 1,
                "date": "2008-11-04",
                "length": 211121,
                "musicbrainz_id": "ff1e3e1a-f6e8-4692-b426-355880383bb6",
                "last_modified": 1672712949510
            }
        }
    }
}
Track playback in progress
{
    "type": "status",
    "data": {
        "state": "playing",
        "current_track": {
            "__model__": "Track",
            "uri": "local:track:Various%20Artists%20-%202008%20-%20Twilight%20OST/01-muse-supermassive_black_hole.mp3",
            "name": "Supermassive Black Hole",
            "artists": [
                {
                    "__model__": "Artist",
                    "uri": "local:artist:md5:250dd6551b66a58a6b4897aa697f200c",
                    "name": "Muse",
                    "musicbrainz_id": "9c9f1380-2516-4fc9-a3e6-f9f61941d090"
                }
            ],
            "album": {
                "__model__": "Album",
                "uri": "local:album:md5:455343d54cdd89cb5a3b5ad537ea99d0",
                "name": "Twilight: Original Motion Picture Soundtrack",
                "artists": [
                    {
                        "__model__": "Artist",
                        "uri": "local:artist:md5:54e4db2d5624f80b0cc290346e696756",
                        "name": "Various Artists",
                        "musicbrainz_id": "89ad4ac3-39f7-470e-963a-56509c546377"
                    }
                ],
                "num_tracks": 12,
                "num_discs": 1,
                "date": "2008-11-04",
                "musicbrainz_id": "b4889eaf-d9f4-434c-a68d-69227b12b6a4"
            },
            "composers": [
                {
                    "__model__": "Artist",
                    "uri": "local:artist:md5:4d49cbca0b347e0a89047bb019d2779d",
                    "name": "Matt Bellamy"
                }
            ],
            "genre": "Rock",
            "track_no": 1,
            "disc_no": 1,
            "date": "2008-11-04",
            "length": 211121,
            "musicbrainz_id": "ff1e3e1a-f6e8-4692-b426-355880383bb6",
            "last_modified": 1672712949510
        },
        "time_position": 17031
    }
}
Track event playback paused
{
    "type": "event",
    "event": "track_playback_paused",
    "data": {
        "tl_track": {
            "__model__": "TlTrack",
            "tlid": 14,
            "track": {
                "__model__": "Track",
                "uri": "local:track:Various%20Artists%20-%202008%20-%20Twilight%20OST/01-muse-supermassive_black_hole.mp3",
                "name": "Supermassive Black Hole",
                "artists": [
                    {
                        "__model__": "Artist",
                        "uri": "local:artist:md5:250dd6551b66a58a6b4897aa697f200c",
                        "name": "Muse",
                        "musicbrainz_id": "9c9f1380-2516-4fc9-a3e6-f9f61941d090"
                    }
                ],
                "album": {
                    "__model__": "Album",
                    "uri": "local:album:md5:455343d54cdd89cb5a3b5ad537ea99d0",
                    "name": "Twilight: Original Motion Picture Soundtrack",
                    "artists": [
                        {
                            "__model__": "Artist",
                            "uri": "local:artist:md5:54e4db2d5624f80b0cc290346e696756",
                            "name": "Various Artists",
                            "musicbrainz_id": "89ad4ac3-39f7-470e-963a-56509c546377"
                        }
                    ],
                    "num_tracks": 12,
                    "num_discs": 1,
                    "date": "2008-11-04",
                    "musicbrainz_id": "b4889eaf-d9f4-434c-a68d-69227b12b6a4"
                },
                "composers": [
                    {
                        "__model__": "Artist",
                        "uri": "local:artist:md5:4d49cbca0b347e0a89047bb019d2779d",
                        "name": "Matt Bellamy"
                    }
                ],
                "genre": "Rock",
                "track_no": 1,
                "disc_no": 1,
                "date": "2008-11-04",
                "length": 211121,
                "musicbrainz_id": "ff1e3e1a-f6e8-4692-b426-355880383bb6",
                "last_modified": 1672712949510
            }
        },
        "time_position": 67578
    }
}

TODO Fix bug in podcast scrobbling where a second scrobble is created after completion   scrobbling podcasts bug