浏览代码

[project] Start adding features and update todos

Colin Powell 1 周之前
父节点
当前提交
aa644aa9cf
共有 1 个文件被更改,包括 206 次插入109 次删除
  1. 206 109
      PROJECT.org

+ 206 - 109
PROJECT.org

@@ -1,115 +1,103 @@
-#+title: TODOs
-
-* Backlog [1/20]
-** TODO [#A] Add email importer for BG stats file uploads :vrobbler:feature:boardgames:personal:project:
+#+title: Vrobbler Project
+
+* Overview
+* Features
+** Beer
+*** Triggers
+**** Bookmarklet
+**** Manual
+*** Metadata sources
+**** Untappd
+** Book
+*** Triggers
+**** Webdav via KoReader
+**** Manual
+*** Metadata sources
+**** Google Books
+This is the preferred method at this time. Also, the Book model implements a
+`find_or_create` classmethod which is an example of an interface we can use for
+other data models to get metadata in a way that provides easy testing, bulk
+fetching and simple saving.
+**** OpenLibrary
+**** ComicVine
+** Board Game
+*** Triggers
+**** IMAP import
+**** Bookmarklet
+**** Manual
+** Location
+*** Triggers
+**** GPSLogger (Android)
+*** Metadata sources
+**** User input
+** Music
+*** Triggers
+**** Last.FM
+**** Rockbox files
+**** Mopidy
+**** Jellyfin
+*** Metadata sources
+**** Musicbrainz
+** Podcast
+*** Triggers
+**** Mopidy
+*** Metadata sources
+**** Google Podcasts
+**** PodcastIndex
+** Sport
+*** Triggers
+**** Bookmarklet
+**** Manual
+*** Metadata sources
+**** Thes Sports DB
+** Task
+*** Triggers
+**** Todoist
+**** Org-mode
+*** Metadata sources
+**** User profile
+** Trails
+** Video
+*** Triggers
+**** Jellyfin
+**** Bookmarklet
+**** Manual
+*** Metadata sources
+**** IMDB
+**** Youtube
+** Web Page
+*** Triggers
+**** Bookmarklet
+*** Metadata sources
+**** Scraper
+* Release history
+* Chores
+** DONE Document various vrobbler features :chore:personal:project:vrobbler:documentation:
 :PROPERTIES:
-:ID:       116fe738-7966-615c-d195-ccff0337b101
+:ID:       514e9285-96f1-265f-56df-118c12f60918
+:END:
+:LOGBOOK:
+CLOCK: [2025-07-09 Wed 09:55]--[2025-07-09 Wed 10:15] =>  0:20
+:END:
+* Backlog [3/23]
+** TODO Add timezone awarness to IMAP importer :personal:project:vrobbler:feature:importer:imap:timezones:
+** DONE Track timezone changes for profiles :vrobbler:feature:profiles:personal:project:
+:PROPERTIES:
+:ID:       89ec867f-29fd-82f1-be17-b49dddc30c78
+:END:
+[2025-07-11 14:23]
+** TODO [#A] Add classmethod for metadata fetching to tracks :vrobbler:feature:music:personal:project:
+:PROPERTIES:
+:ID:       bc4b45e5-4c65-13c5-ab7b-1937d3fbf5c2
+:END:
+:LOGBOOK:
+CLOCK: [2025-07-09 Wed 10:15]
 :END:
-#+begin_src json example of a file
-{
-  "about": "This is a Play file that can be read by Board Game Stats. If you see this text, try to use a share, export or open-in function to open it with Board Game Stats.",
-  "players": [
-    {
-      "uuid": "31f8b92e-11d8-4162-88b1-fd9c79eea249",
-      "id": 2,
-      "name": "Colin",
-      "isAnonymous": false,
-      "modificationDate": "2025-07-01 18:10:32",
-      "metaData": "{\"isNpc\":0}"
-    },
-    {
-      "uuid": "00074700-cf4e-4ad3-b334-d35805bb0d90",
-      "id": 4,
-      "name": "Asa Sewell",
-      "isAnonymous": false,
-      "modificationDate": "2025-07-01 18:03:37"
-    }
-  ],
-  "locations": [
-    {
-      "uuid": "14f7389c-767f-4725-9b35-906c407b293c",
-      "id": 3,
-      "name": "Timberwyck Farm",
-      "modificationDate": "2025-07-01 18:03:38"
-    }
-  ],
-  "games": [
-    {
-      "uuid": "043a2851-f201-467a-a60c-0b0a7e9c33d2",
-      "id": 333,
-      "name": "Ghost Fightin' Treasure Hunters: Anniversary Edition",
-      "modificationDate": "2025-07-02 01:37:14",
-      "cooperative": true,
-      "highestWins": true,
-      "noPoints": false,
-      "usesTeams": false,
-      "urlThumb": "https://cf.geekdo-images.com/DHA-mcH3zzw_OjfDxOPj1A__thumb/img/UhaIm4KIDIiraUc44QIvSAbMUXI=/fit-in/200x150/filters:strip_icc()/pic8266874.jpg",
-      "urlImage": "https://cf.geekdo-images.com/DHA-mcH3zzw_OjfDxOPj1A__original/img/2-Lb6nLePhn0I0Hh2j1pOtbO4rg=/0x0/filters:format(jpeg)/pic8266874.jpg",
-      "bggName": "Ghost Fightin' Treasure Hunters: Anniversary Edition",
-      "bggYear": 2024,
-      "bggId": 422668,
-      "designers": "Brian Yu",
-      "isBaseGame": 1,
-      "isExpansion": 0,
-      "rating": 75,
-      "minPlayerCount": 2,
-      "maxPlayerCount": 5,
-      "minPlayTime": 30,
-      "maxPlayTime": 0,
-      "minAge": 8
-    }
-  ],
-  "plays": [
-    {
-      "uuid": "bae3f29e-5e1e-45d8-b409-47a665c8d5b5",
-      "modificationDate": "2025-07-02 01:37:59",
-      "entryDate": "2025-07-02 01:31:38",
-      "playDate": "2025-07-02 01:31:38",
-      "usesTeams": false,
-      "durationMin": 23,
-      "ignored": false,
-      "manualWinner": true,
-      "rounds": 3,
-      "scoresheet": "{\"bggId\":244711,\"version\":1,\"langCode\":\"en\",\"scoreType\":\"bestTotalWins\",\"groups\":[{\"templateId\":\"1\",\"maxRepeat\":-1,\"repetition\":1,\"hasSubTotal\":false,\"hideSingleGroupLabel\":false,\"isExtra\":false,\"rows\":[{\"templateId\":\"vptrack\",\"label\":\"VP track\",\"repetition\":1,\"repeatable\":false,\"negative\":false,\"isExtra\":false,\"scores\":{}},{\"templateId\":\"objectives\",\"label\":\"Objectives\",\"repetition\":1,\"repeatable\":false,\"negative\":false,\"isExtra\":false,\"scores\":{}},{\"templateId\":\"mastercards\",\"label\":\"Master cards\",\"repetition\":1,\"repeatable\":false,\"negative\":false,\"isExtra\":false,\"scores\":{}}]}]}",
-      "locationRefId": 3,
-      "gameRefId": 333,
-      "board": "",
-      "scoringSetting": 4,
-      "metaData": "{\"playUsedGameCopy\":2}",
-      "playerScores": [
-        {
-          "score": "",
-          "winner": true,
-          "newPlayer": true,
-          "startPlayer": false,
-          "playerRefId": 4,
-          "role": "",
-          "rank": 0,
-          "seatOrder": 0,
-          "metaData": "{\"scoreUuid\":\"00074700-cf4e-4ad3-b334-d35805bb0d90\"}"
-        },
-        {
-          "score": "",
-          "winner": true,
-          "newPlayer": true,
-          "startPlayer": false,
-          "playerRefId": 2,
-          "role": "",
-          "rank": 0,
-          "seatOrder": 0,
-          "metaData": "{\"scoreUuid\":\"31f8b92e-11d8-4162-88b1-fd9c79eea249\"}"
-        }
-      ],
-      "expansionPlays": []
-    }
-  ],
-  "userInfo": {
-    "meRefId": 2
-  }
-}
 
-#+end_src
-** TODO Add youtube link in place of IMDB on video detail page :vrobbler:feature:videos:personal:project:
+** TODO [#A] Geolocation notifications should go out for named locations :vrobbler:feature:geoloc:personal:project:
+:PROPERTIES:
+:ID:       5d086625-877c-df81-15b8-7ae0bc1ba2fc
+:END:
 ** 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:
 
@@ -147,6 +135,7 @@ The page data has the canonical date something was read in it, but it seems to b
 
 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] Aservicedd youtube link in place of IMDB on video detail page :vrobbler:feature:videos:personal:project:
 ** 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
@@ -462,6 +451,114 @@ it's annoying.
 ** TODO [#C] Allow users to see tasks on calendar view :vrobbler:personal:project:templates:feature:
 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:
+** DONE [#A] Add email importer for BG stats file uploads :vrobbler:feature:boardgames:personal:project:
+:PROPERTIES:
+:ID:       116fe738-7966-615c-d195-ccff0337b101
+:END:
+#+begin_src json example of a file
+{
+  "about": "This is a Play file that can be read by Board Game Stats. If you see this text, try to use a share, export or open-in function to open it with Board Game Stats.",
+  "players": [
+    {
+      "uuid": "31f8b92e-11d8-4162-88b1-fd9c79eea249",
+      "id": 2,
+      "name": "Colin",
+      "isAnonymous": false,
+      "modificationDate": "2025-07-01 18:10:32",
+      "metaData": "{\"isNpc\":0}"
+    },
+    {
+      "uuid": "00074700-cf4e-4ad3-b334-d35805bb0d90",
+      "id": 4,
+      "name": "Asa Sewell",
+      "isAnonymous": false,
+      "modificationDate": "2025-07-01 18:03:37"
+    }
+  ],
+  "locations": [
+    {
+      "uuid": "14f7389c-767f-4725-9b35-906c407b293c",
+      "id": 3,
+      "name": "Timberwyck Farm",
+      "modificationDate": "2025-07-01 18:03:38"
+    }
+  ],
+  "games": [
+    {
+      "uuid": "043a2851-f201-467a-a60c-0b0a7e9c33d2",
+      "id": 333,
+      "name": "Ghost Fightin' Treasure Hunters: Anniversary Edition",
+      "modificationDate": "2025-07-02 01:37:14",
+      "cooperative": true,
+      "highestWins": true,
+      "noPoints": false,
+      "usesTeams": false,
+      "urlThumb": "https://cf.geekdo-images.com/DHA-mcH3zzw_OjfDxOPj1A__thumb/img/UhaIm4KIDIiraUc44QIvSAbMUXI=/fit-in/200x150/filters:strip_icc()/pic8266874.jpg",
+      "urlImage": "https://cf.geekdo-images.com/DHA-mcH3zzw_OjfDxOPj1A__original/img/2-Lb6nLePhn0I0Hh2j1pOtbO4rg=/0x0/filters:format(jpeg)/pic8266874.jpg",
+      "bggName": "Ghost Fightin' Treasure Hunters: Anniversary Edition",
+      "bggYear": 2024,
+      "bggId": 422668,
+      "designers": "Brian Yu",
+      "isBaseGame": 1,
+      "isExpansion": 0,
+      "rating": 75,
+      "minPlayerCount": 2,
+      "maxPlayerCount": 5,
+      "minPlayTime": 30,
+      "maxPlayTime": 0,
+      "minAge": 8
+    }
+  ],
+  "plays": [
+    {
+      "uuid": "bae3f29e-5e1e-45d8-b409-47a665c8d5b5",
+      "modificationDate": "2025-07-02 01:37:59",
+      "entryDate": "2025-07-02 01:31:38",
+      "playDate": "2025-07-02 01:31:38",
+      "usesTeams": false,
+      "durationMin": 23,
+      "ignored": false,
+      "manualWinner": true,
+      "rounds": 3,
+      "scoresheet": "{\"bggId\":244711,\"version\":1,\"langCode\":\"en\",\"scoreType\":\"bestTotalWins\",\"groups\":[{\"templateId\":\"1\",\"maxRepeat\":-1,\"repetition\":1,\"hasSubTotal\":false,\"hideSingleGroupLabel\":false,\"isExtra\":false,\"rows\":[{\"templateId\":\"vptrack\",\"label\":\"VP track\",\"repetition\":1,\"repeatable\":false,\"negative\":false,\"isExtra\":false,\"scores\":{}},{\"templateId\":\"objectives\",\"label\":\"Objectives\",\"repetition\":1,\"repeatable\":false,\"negative\":false,\"isExtra\":false,\"scores\":{}},{\"templateId\":\"mastercards\",\"label\":\"Master cards\",\"repetition\":1,\"repeatable\":false,\"negative\":false,\"isExtra\":false,\"scores\":{}}]}]}",
+      "locationRefId": 3,
+      "gameRefId": 333,
+      "board": "",
+      "scoringSetting": 4,
+      "metaData": "{\"playUsedGameCopy\":2}",
+      "playerScores": [
+        {
+          "score": "",
+          "winner": true,
+          "newPlayer": true,
+          "startPlayer": false,
+          "playerRefId": 4,
+          "role": "",
+          "rank": 0,
+          "seatOrder": 0,
+          "metaData": "{\"scoreUuid\":\"00074700-cf4e-4ad3-b334-d35805bb0d90\"}"
+        },
+        {
+          "score": "",
+          "winner": true,
+          "newPlayer": true,
+          "startPlayer": false,
+          "playerRefId": 2,
+          "role": "",
+          "rank": 0,
+          "seatOrder": 0,
+          "metaData": "{\"scoreUuid\":\"31f8b92e-11d8-4162-88b1-fd9c79eea249\"}"
+        }
+      ],
+      "expansionPlays": []
+    }
+  ],
+  "userInfo": {
+    "meRefId": 2
+  }
+}
+
+#+end_src
 ** DONE [#B] Fix task app to only use one tag for the context a task was done in and allow configurable contexts by user profile :personal:vrobbler:feature:tasks:project:
 :PROPERTIES:
 :ID:       23f485e3-988c-6198-c79d-91fdf92f001c