diff --git a/todos.org b/todos.org index cff4672..809ee5f 100644 --- a/todos.org +++ b/todos.org @@ -1,52 +1,6 @@ #+title: TODOs -* Version 17 -** DONE [#A] Investigate new source of video metadata :personal:project:video:imdb: -:PROPERTIES: -:ID: df2b486c-1170-5199-c312-9bc87760d962 -:END: - -Cinemagoer broke and I probably should find a more reilable source of video data. - -- Note taken on [2025-06-13 Fri 11:19] - - TMDB is much more reliable, but does require an API key. That's all setup now, - so hopefully this breaking IMDB crap is over. - -** DONE IMDB video lookups are failing :personal:bug:video:imdb: -:PROPERTIES: -:ID: 38f1081f-37b4-f4f2-79aa-c1e87eca4b69 -:END: -<2025-06-13 Fri> - -- Note taken on [2025-06-13 Fri 08:24] - - Looks like Cinemagoer is broken: https://github.com/cinemagoer/cinemagoer/issues/537 - -** DONE [#A] Emacs is not syncing notes :personal:scrobbling:emacs:bug: -:PROPERTIES: -:ID: c79cd491-b30f-0945-d84b-b8cac7562791 -:END: -<2025-06-12 Thu 9:30> - -Not sure if the problem is in my Emacs hook sending or Vrobbler itself. - -- Note taken on [2025-06-12 Thu 09:47] - - Adding a quick note to check on it - -- Note taken on [2025-06-12 Thu 09:50] - - Ah ha. All the messing about with the source field meant that I was looking - for `emacs` as a source but the hook was initially setting sources to - `orgmode` I think I prefer `orgmode` as the source, so updating it thusly. - - Fixed in `490d60cbbb1f8bf90b5fc47d8685b15bdc1d485b` - -** DONE [#A] Show the description of a task in the string rep for a scrobble of a Task :personal:project:scrobbling:vrobbler:feature: -:PROPERTIES: -:ID: df58f8d0-fa4a-2037-c7d7-e5388c239042 -:END: +* Backlog [0/7] ** 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 @@ -66,197 +20,6 @@ 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. -* Version 0.16.0 -** DONE [#A] Jellyfin, bandcamp tracks from Mopidy create duplicate music tracks :bug:scrobbling:music: -:PROPERTIES: -:ID: 670e8634-49b5-dce9-1684-14f2ffb797f1 -:END: -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 every time. This has to be cleaned up -by condensing the duplicated tracks into the original proper track. - -But it opens a bigger question 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] - [[orgit-rev:~/src/code.unbl.ink/secstate/vrobbler/::93c16d80ecff4cd1663cf9ec40fbe6d8f58c3e44][~/src/code.unbl.ink/secstate/vrobbler/ (magit-rev 93c16d8)]] - - https://code.unbl.ink/secstate/vrobbler/commit/93c16d80ecff4cd1663cf9ec40fbe6d8f58c3e44 - -** 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] -:LOGBOOK: -CLOCK: [2023-03-26 Sun 22:01]--[2023-03-27 Mon 01:07] => 3:06 -:END: -** 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] -:LOGBOOK: -CLOCK: [2023-03-26 Sun 13:11]--[2023-03-26 Sun 13:51] => 0:40 -:END: -** DONE [#A] Add django-storage to store files on S3 :settings:improvement: -CLOSED: [2023-03-24 Fri 14:46] -:LOGBOOK: -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 -:END: -** DONE Fix vrobbler settings not using booleans :settings:bug: -CLOSED: [2023-03-24 Fri 10:45] -:LOGBOOK: -CLOCK: [2023-03-24 Fri 10:40]--[2023-03-24 Fri 10:46] => 0:06 -:END: -** 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] -:LOGBOOK: -CLOCK: [2023-01-30 Mon 18:00]--[2023-01-30 Mon 18:31] => 0:31 -:END: - -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: -#+begin_src csv -, -#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 -, -#+end_src -** 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] -:LOGBOOK: -CLOCK: [2023-01-30 Mon 16:30]--[2023-01-30 Mon 18:00] => 1:30 -:END: - -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 @@ -548,3 +311,240 @@ has to re-populate when the server restarts. } } #+end_src +* Version 17 [4/4] +** DONE [#A] Investigate new source of video metadata :personal:project:video:imdb: +:PROPERTIES: +:ID: df2b486c-1170-5199-c312-9bc87760d962 +:END: + +Cinemagoer broke and I probably should find a more reilable source of video data. + +- Note taken on [2025-06-13 Fri 11:19] + + TMDB is much more reliable, but does require an API key. That's all setup now, + so hopefully this breaking IMDB crap is over. + +** DONE IMDB video lookups are failing :personal:bug:video:imdb: +:PROPERTIES: +:ID: 38f1081f-37b4-f4f2-79aa-c1e87eca4b69 +:END: +<2025-06-13 Fri> + +- Note taken on [2025-06-13 Fri 08:24] + + Looks like Cinemagoer is broken: https://github.com/cinemagoer/cinemagoer/issues/537 + +** DONE [#A] Emacs is not syncing notes :personal:scrobbling:emacs:bug: +:PROPERTIES: +:ID: c79cd491-b30f-0945-d84b-b8cac7562791 +:END: +<2025-06-12 Thu 9:30> + +Not sure if the problem is in my Emacs hook sending or Vrobbler itself. + +- Note taken on [2025-06-12 Thu 09:47] + + Adding a quick note to check on it + +- Note taken on [2025-06-12 Thu 09:50] + + Ah ha. All the messing about with the source field meant that I was looking + for `emacs` as a source but the hook was initially setting sources to + `orgmode` I think I prefer `orgmode` as the source, so updating it thusly. + + Fixed in `490d60cbbb1f8bf90b5fc47d8685b15bdc1d485b` + +** DONE [#A] Show the description of a task in the string rep for a scrobble of a Task :personal:project:scrobbling:vrobbler:feature: +:PROPERTIES: +:ID: df58f8d0-fa4a-2037-c7d7-e5388c239042 +:END: +* Version 0.16.0 +** DONE [#A] Jellyfin, bandcamp tracks from Mopidy create duplicate music tracks :bug:scrobbling:music: +:PROPERTIES: +:ID: 670e8634-49b5-dce9-1684-14f2ffb797f1 +:END: +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 every time. This has to be cleaned up +by condensing the duplicated tracks into the original proper track. + +But it opens a bigger question 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] + [[orgit-rev:~/src/code.unbl.ink/secstate/vrobbler/::93c16d80ecff4cd1663cf9ec40fbe6d8f58c3e44][~/src/code.unbl.ink/secstate/vrobbler/ (magit-rev 93c16d8)]] + + https://code.unbl.ink/secstate/vrobbler/commit/93c16d80ecff4cd1663cf9ec40fbe6d8f58c3e44 + +** 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] +:LOGBOOK: +CLOCK: [2023-03-26 Sun 22:01]--[2023-03-27 Mon 01:07] => 3:06 +:END: +** 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] +:LOGBOOK: +CLOCK: [2023-03-26 Sun 13:11]--[2023-03-26 Sun 13:51] => 0:40 +:END: +** DONE [#A] Add django-storage to store files on S3 :settings:improvement: +CLOSED: [2023-03-24 Fri 14:46] +:LOGBOOK: +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 +:END: +** DONE Fix vrobbler settings not using booleans :settings:bug: +CLOSED: [2023-03-24 Fri 10:45] +:LOGBOOK: +CLOCK: [2023-03-24 Fri 10:40]--[2023-03-24 Fri 10:46] => 0:06 +:END: +** 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] +:LOGBOOK: +CLOCK: [2023-01-30 Mon 18:00]--[2023-01-30 Mon 18:31] => 0:31 +:END: + +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: +#+begin_src csv +, +#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 +, +#+end_src +** 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] +:LOGBOOK: +CLOCK: [2023-01-30 Mon 16:30]--[2023-01-30 Mon 18:00] => 1:30 +:END: + +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.