├── 1 Currently Reading ├── 0 Currently Reading.md ├── Follett, The Pillars of the Earth.md ├── Green, An Absolutely Remarkable Thing.md ├── King, The Shining.md ├── Liu, The Grace of Kings.md ├── Lynch, Red Seas Under Red Skies.md └── Stephenson, Snow Crash.md ├── 2 Book Log ├── 2021 │ ├── 10 │ │ └── 2021-10-26 Flynn, Gone Girl.md │ ├── 11 │ │ └── 2021-11-29 Orwell, Animal Farm.md │ ├── 12 │ │ └── 2021-12-27 Lee, Jade City.md │ ├── 01 │ │ └── 2021-01-09 Martin, A Game of Thrones.md │ ├── 02 │ │ └── 2021-02-07 Jemisin, The City We Became.md │ ├── 03 │ │ └── 2021-03-07 Corey, Leviathan Wakes.md │ ├── 04 │ │ └── 2021-04-14 Pratchett, Equal Rites.md │ ├── 05 │ │ └── 2021-05-08 Kepnes, You.md │ ├── 06 │ │ └── 2021-06-07 Jackson, The Haunting of Hill House.md │ ├── 07 │ │ └── 2021-07-26 Zelazny, Lord of Light.md │ ├── 08 │ │ └── 2021-08-31 Morgenstern, The Night Circus.md │ └── 09 │ │ └── 2021-09-07 Haig, The Midnight Library.md ├── 2022 │ ├── 10 │ │ └── 2022-10-07 Fforde, The Eyre Affair.md │ ├── 11 │ │ └── 2022-11-09 Sloan, Mr Penumbra's 24-hour Bookstore.md │ ├── 12 │ │ └── 2022-12-12 Matthews, Red Sparrow.md │ ├── 01 │ │ ├── 2022-01-09 Gaiman, Sandman Vol. 3.md │ │ ├── 2022-01-17 Dazai, No longer Human.md │ │ └── 2022-01-29 Verne, Around the World in Eighty Days.md │ ├── 02 │ │ └── 2022-02-05 King, The Drawing of the Three.md │ ├── 03 │ │ └── 2022-03-15 King, The Stand.md │ ├── 04 │ │ └── 2022-04-04 Le Guin, Planet of Exile.md │ ├── 05 │ │ └── 2022-05-16 Crouch, Recursion.md │ ├── 06 │ │ └── 2022-06-15 Hill, Horns.md │ ├── 07 │ │ └── 2022-07-24 Butler, Mind of My Mind.md │ ├── 08 │ │ └── 2022-08-12 Kowal, Word Puppets.md │ └── 09 │ │ └── 2022-09-15 Corey, Abaddon's Gate.md └── 2023 │ └── 01 │ ├── 2023-01-19 Winslow, Satori.md │ └── 2023-01-29 Carlin, Ghosts of the Ostfront (Hardcore History 27-30 & Eps. 31-33).md ├── 3 Movies and Games ├── 2022 │ ├── 10 │ │ └── 2022-10-18 Reservoir Dogs.md │ ├── 11 │ │ └── 2022-11-10 Ocean's Eleven.md │ ├── 12 │ │ └── 2022-12-10 Marriage Story.md │ ├── 02 │ │ └── 2022-02-20 I am Mother.md │ ├── 03 │ │ └── 2022-03-24 Escape Room (2017).md │ ├── 05 │ │ └── 2022-05-23 Everything Everywhere All at Once.md │ └── 07 │ │ └── 2022-07-20 Breaking Bad (Season 1).md └── 2023 │ ├── 01 │ ├── 2023-01-05 Sicario.md │ ├── 2023-01-28 You People.md │ └── 2023-01-30 The Watcher.md │ ├── 02 │ ├── 2023-02-01 Inception.md │ └── 2023-02-02 Batman Begins.md │ └── Games │ ├── 2023-01-25 Castlevania.md │ └── 2023-02-01 Castlevania III Dracula's Curse.md ├── Countries ├── Argentina.md ├── Australia.md ├── Austria.md ├── Bahamas.md ├── Bangladesh.md ├── Brazil.md ├── Canada.md ├── Chile.md ├── China.md ├── Czech Republic.md ├── Denmark.md ├── France.md ├── Germany.md ├── Hong Kong.md ├── India.md ├── Iran.md ├── Ireland.md ├── Italy.md ├── Japan.md ├── Kenya.md ├── Malaysia.md ├── Mexico.md ├── Mongolia.md ├── New Zealand.md ├── Nigeria.md ├── Poland.md ├── Romania.md ├── Scotland.md ├── Slovenia.md ├── Spain.md ├── Sweden.md ├── Switzerland.md ├── Turkey.md ├── United Kingdom.md ├── United States of America.md └── Wales.md ├── LICENSE ├── README.md ├── Scripts └── Movie.js ├── Set Aside └── Allighieri, Purgatorio (Divine Comedy 2).md ├── Templates ├── Template - Academic Article.md ├── Template - Academic Book.md ├── Template - Audiobook.md ├── Template - Author.md ├── Template - Book.md ├── Template - Catalog.md ├── Template - Center Text.md ├── Template - Game.md ├── Template - Movie.md ├── Template - Podcast.md ├── Template - TV.md └── Template - eBook.md └── Trackers and Galleries ├── Current ├── 2023.md └── Homepage.md ├── Things ├── Attachments │ ├── Banners │ │ ├── arcade.jpg │ │ ├── book-banner.gif │ │ ├── daily-note-banner.gif │ │ ├── home-books.jpg │ │ ├── library.jpg │ │ ├── other-library.jpg │ │ ├── rainy-day-bird-2.gif │ │ ├── rainy-day-bird.gif │ │ └── videostore.jpg │ └── Images │ │ ├── scatter.png │ │ └── years.png └── Buttons.md ├── Want to Read ├── Adams, Dirk Gently's Holistic Detective Agency (Dirk Gently, 1).md ├── Butcher, Furies of Calderon (Codex Alera, 1).md └── King, Fairy Tale.md ├── Years Past ├── 2021.md └── 2022.md └── Z General ├── All Audiobooks.md ├── All Books.md ├── Book Gallery since 2020.md ├── Favorite Things.md ├── Game Gallery.md ├── Movie and Games Stats.md ├── Movies and Games Gallery.md ├── Reading Stats.md └── Want to Read.md /1 Currently Reading/0 Currently Reading.md: -------------------------------------------------------------------------------- 1 | --- 2 | obsidianUIMode: preview 3 | cssClasses: cards, cards-cover, cards-2-3, table-max, max 4 | --- 5 | ### Currently Reading 6 | 7 | ```dataviewjs 8 | let BookCount = (dv.pages('"0 Currently Reading"').where(p => p.Medium == "Book" || p.Medium == "eBook").length); 9 | 10 | let AudioCount = (dv.pages('"0 Currently Reading"').where(p => p.Medium == "Audiobook" || p.Medium == "Podcast").length); 11 | 12 | let pagesum = 0; 13 | for(let i = 0; i < dv.pages('"2 Book Log/2023"').where(p => p.Medium == "Book" || p.Medium == "eBook" || p.Medium == "Article" || p.Medium == "Chapter" || p.Medium == "Monograph" || p.Medium == "GraphicNovel").length; i++) { 14 | if(dv.pages('"2 Book Log/2023"').where(p => p.Medium == "Book" || p.Medium == "eBook" || p.Medium == "Article" || p.Medium == "Chapter" || p.Medium == "Monograph" || p.Medium == "GraphicNovel")[i].Length) { 15 | pagesum += dv.pages('"2 Book Log/2023"').where(p => p.Medium == "Book" || p.Medium == "eBook" || p.Medium == "Article" || p.Medium == "Chapter" || p.Medium == "Monograph" || p.Medium == "GraphicNovel")[i].Length; 16 | } 17 | } 18 | 19 | let academicpages = 0; 20 | for(let i = 0; i < dv.pages('"2 Book Log/2023"').where(p => p.Medium == "Article" || p.Medium == "Chapter" || p.Medium == "Monograph").length; i++) { 21 | if(dv.pages('"2 Book Log/2023"').where(p => p.Medium == "Article" || p.Medium == "Chapter" || p.Medium == "Monograph")[i].Length) { 22 | pagesum += dv.pages('"2 Book Log/2023"').where(p => p.Medium == "Article" || p.Medium == "Chapter" || p.Medium == "Monograph")[i].Length; 23 | } 24 | } 25 | 26 | let hoursum = 0; 27 | for(let i = 0; i < dv.pages('"2 Book Log/2023"').where(p => p.Medium == "Audiobook" || p.Medium == "Podcast").length;i++) { 28 | if(dv.pages('"2 Book Log/2023"').where(p => p.Medium == "Audiobook" || p.Medium == "Podcast")[i].Length) { 29 | hoursum += dv.pages('"2 Book Log/2023"').where(p => p.Medium == "Audiobook" || p.Medium == "Podcast")[i].Length; 30 | } 31 | } 32 | 33 | let today = DateTime.now().toFormat("ooo"); 34 | 35 | dv.paragraph("#### Right now, I'm reading " + BookCount + " books and I'm listening to " + AudioCount + " audiobooks of which " + dv.pages('"2 Book Log/2023/0 Currently Reading"').where(p => p.Medium == "Podcast").length + " are podcasts.") 36 | 37 | dv.paragraph("#### I've read " + pagesum + " pages this year. On this day, I should have read " + (today * 50) + " pages, so I've read " + (pagesum - (today * 50)) + " pages more than the goal of 50 pages per day.") 38 | 39 | dv.paragraph("#### 50 pages a day would be 18,250 pages for one year, so I have " + (18250 - pagesum) + " pages left to read this year.") 40 | 41 | ``` 42 | 43 | ```dataview 44 | TABLE without id 45 | ("![](" + Cover + ")") AS "Cover", 46 | P_BookByAuthor + P_MediumIcon + P_FavoriteIcon AS "Title", 47 | Q_YearRating + Q_PagesHours + " || " + Q_FLAG AS "Time and Place", 48 | R_Dates AS "Dates", 49 | S_ReadingTime AS "Reading Time" 50 | 51 | FROM "1 Currently Reading" 52 | 53 | WHERE Medium != null 54 | SORT DateStarted desc 55 | 56 | 57 | FLATTEN link(file.link, Alias) + " by " + Author AS P_BookByAuthor 58 | FLATTEN choice(contains(tags, "Favorite"), "💛", "") AS P_FavoriteIcon 59 | 60 | FLATTEN { 61 | "Book": " 📖 ", 62 | "Audiobook": " 🎧 ", 63 | "Podcast": " 📻 ", 64 | "eBook": " 📃 ", 65 | "Monograph": " 📚🎓 ", 66 | "Article": " 📰🎓 ", 67 | "Chapter": " 📔🎓 ", 68 | "GraphicNovel": " 💬 " 69 | }[Medium] AS P_MediumIcon 70 | 71 | 72 | 73 | FLATTEN DateStarted + " — " + DateFinished AS R_Dates 74 | FLATTEN "(" + choice((DateFinished != DateStarted), (DateFinished - DateStarted).days + " days", "0 days" ) + ")" AS S_ReadingTime 75 | 76 | 77 | 78 | FLATTEN Year + " || " + " ⭐ " + Rating + " || " AS Q_YearRating 79 | 80 | FLATTEN { 81 | "Book": Length + " p", 82 | "Audiobook": Length + " h", 83 | "Podcast": Length + " h", 84 | "eBook": Length + " p" 85 | }[Medium] AS Q_PagesHours 86 | 87 | 88 | FLATTEN join(map(split(Country, ", "), (c) => { 89 | AD: "🇦🇩", 90 | AE: "🇦🇪", 91 | AF: "🇦🇫", 92 | AG: "🇦🇬", 93 | AI: "🇦🇮", 94 | AL: "🇦🇱", 95 | AM: "🇦🇲", 96 | AO: "🇦🇴", 97 | AQ: "🇦🇶", 98 | AR: "🇦🇷", 99 | AS: "🇦🇸", 100 | AT: "🇦🇹", 101 | AU: "🇦🇺", 102 | AW: "🇦🇼", 103 | AX: "🇦🇽", 104 | AZ: "🇦🇿", 105 | BA: "🇧🇦", 106 | BB: "🇧🇧", 107 | BD: "🇧🇩", 108 | BE: "🇧🇪", 109 | BF: "🇧🇫", 110 | BG: "🇧🇬", 111 | BH: "🇧🇭", 112 | BI: "🇧🇮", 113 | BJ: "🇧🇯", 114 | BL: "🇧🇱", 115 | BM: "🇧🇲", 116 | BN: "🇧🇳", 117 | BO: "🇧🇴", 118 | BQ: "🇧🇶", 119 | BR: "🇧🇷", 120 | BS: "🇧🇸", 121 | BT: "🇧🇹", 122 | BV: "🇧🇻", 123 | BW: "🇧🇼", 124 | BY: "🇧🇾", 125 | BZ: "🇧🇿", 126 | CA: "🇨🇦", 127 | CC: "🇨🇨", 128 | CD: "🇨🇩", 129 | CF: "🇨🇫", 130 | CG: "🇨🇬", 131 | CH: "🇨🇭", 132 | CI: "🇨🇮", 133 | CK: "🇨🇰", 134 | CL: "🇨🇱", 135 | CM: "🇨🇲", 136 | CN: "🇨🇳", 137 | CO: "🇨🇴", 138 | CR: "🇨🇷", 139 | CU: "🇨🇺", 140 | CV: "🇨🇻", 141 | CW: "🇨🇼", 142 | CX: "🇨🇽", 143 | CY: "🇨🇾", 144 | CYMRU: "🏴󠁧󠁢󠁷󠁬󠁳󠁿", 145 | CZ: "🇨🇿", 146 | DE: "🇩🇪", 147 | DJ: "🇩🇯", 148 | DK: "🇩🇰", 149 | DM: "🇩🇲", 150 | DO: "🇩🇴", 151 | DZ: "🇩🇿", 152 | EC: "🇪🇨", 153 | EE: "🇪🇪", 154 | EG: "🇪🇬", 155 | EH: "🇪🇭", 156 | ENG: "🏴󠁧󠁢󠁥󠁮󠁧󠁿", 157 | ER: "🇪🇷", 158 | ES: "🇪🇸", 159 | ET: "🇪🇹", 160 | FI: "🇫🇮", 161 | FJ: "🇫🇯", 162 | FK: "🇫🇰", 163 | FM: "🇫🇲", 164 | FO: "🇫🇴", 165 | FR: "🇫🇷", 166 | GA: "🇬🇦", 167 | GB: "🇬🇧", 168 | GD: "🇬🇩", 169 | GE: "🇬🇪", 170 | GF: "🇬🇫", 171 | GG: "🇬🇬", 172 | GH: "🇬🇭", 173 | GI: "🇬🇮", 174 | GL: "🇬🇱", 175 | GM: "🇬🇲", 176 | GN: "🇬🇳", 177 | GP: "🇬🇵", 178 | GQ: "🇬🇶", 179 | GR: "🇬🇷", 180 | GS: "🇬🇸", 181 | GT: "🇬🇹", 182 | GU: "🇬🇺", 183 | GW: "🇬🇼", 184 | GY: "🇬🇾", 185 | HK: "🇭🇰", 186 | HM: "🇭🇲", 187 | HN: "🇭🇳", 188 | HR: "🇭🇷", 189 | HT: "🇭🇹", 190 | HU: "🇭🇺", 191 | ID: "🇮🇩", 192 | IE: "🇮🇪", 193 | IL: "🇮🇱", 194 | IM: "🇮🇲", 195 | IN: "🇮🇳", 196 | IO: "🇮🇴", 197 | IQ: "🇮🇶", 198 | IR: "🇮🇷", 199 | IS: "🇮🇸", 200 | IT: "🇮🇹", 201 | JE: "🇯🇪", 202 | JM: "🇯🇲", 203 | JO: "🇯🇴", 204 | JP: "🇯🇵", 205 | KE: "🇰🇪", 206 | KG: "🇰🇬", 207 | KH: "🇰🇭", 208 | KI: "🇰🇮", 209 | KM: "🇰🇲", 210 | KN: "🇰🇳", 211 | KP: "🇰🇵", 212 | KR: "🇰🇷", 213 | KW: "🇰🇼", 214 | KY: "🇰🇾", 215 | KZ: "🇰🇿", 216 | LA: "🇱🇦", 217 | LB: "🇱🇧", 218 | LC: "🇱🇨", 219 | LI: "🇱🇮", 220 | LK: "🇱🇰", 221 | LR: "🇱🇷", 222 | LS: "🇱🇸", 223 | LT: "🇱🇹", 224 | LU: "🇱🇺", 225 | LV: "🇱🇻", 226 | LY: "🇱🇾", 227 | MA: "🇲🇦", 228 | MC: "🇲🇨", 229 | MD: "🇲🇩", 230 | ME: "🇲🇪", 231 | MF: "🇲🇫", 232 | MG: "🇲🇬", 233 | MH: "🇲🇭", 234 | MK: "🇲🇰", 235 | ML: "🇲🇱", 236 | MM: "🇲🇲", 237 | MN: "🇲🇳", 238 | MO: "🇲🇴", 239 | MP: "🇲🇵", 240 | MQ: "🇲🇶", 241 | MR: "🇲🇷", 242 | MS: "🇲🇸", 243 | MT: "🇲🇹", 244 | MU: "🇲🇺", 245 | MV: "🇲🇻", 246 | MW: "🇲🇼", 247 | MX: "🇲🇽", 248 | MY: "🇲🇾", 249 | MZ: "🇲🇿", 250 | NA: "🇳🇦", 251 | NC: "🇳🇨", 252 | NE: "🇳🇪", 253 | NF: "🇳🇫", 254 | NG: "🇳🇬", 255 | NI: "🇳🇮", 256 | NL: "🇳🇱", 257 | NO: "🇳🇴", 258 | NP: "🇳🇵", 259 | NR: "🇳🇷", 260 | NU: "🇳🇺", 261 | NZ: "🇳🇿", 262 | OM: "🇴🇲", 263 | PA: "🇵🇦", 264 | PE: "🇵🇪", 265 | PF: "🇵🇫", 266 | PG: "🇵🇬", 267 | PH: "🇵🇭", 268 | PK: "🇵🇰", 269 | PL: "🇵🇱", 270 | PM: "🇵🇲", 271 | PN: "🇵🇳", 272 | PR: "🇵🇷", 273 | PS: "🇵🇸", 274 | PT: "🇵🇹", 275 | PW: "🇵🇼", 276 | PY: "🇵🇾", 277 | QA: "🇶🇦", 278 | RE: "🇷🇪", 279 | RO: "🇷🇴", 280 | RS: "🇷🇸", 281 | RU: "🇷🇺", 282 | RW: "🇷🇼", 283 | SA: "🇸🇦", 284 | SB: "🇸🇧", 285 | SC: "🇸🇨", 286 | SCOT: "🏴󠁧󠁢󠁳󠁣󠁴󠁿", 287 | SD: "🇸🇩", 288 | SE: "🇸🇪", 289 | SG: "🇸🇬", 290 | SH: "🇸🇭", 291 | SI: "🇸🇮", 292 | SJ: "🇸🇯", 293 | SK: "🇸🇰", 294 | SL: "🇸🇱", 295 | SM: "🇸🇲", 296 | SN: "🇸🇳", 297 | SO: "🇸🇴", 298 | SR: "🇸🇷", 299 | SS: "🇸🇸", 300 | ST: "🇸🇹", 301 | SV: "🇸🇻", 302 | SX: "🇸🇽", 303 | SY: "🇸🇾", 304 | SZ: "🇸🇿", 305 | TC: "🇹🇨", 306 | TD: "🇹🇩", 307 | TF: "🇹🇫", 308 | TG: "🇹🇬", 309 | TH: "🇹🇭", 310 | TJ: "🇹🇯", 311 | TK: "🇹🇰", 312 | TL: "🇹🇱", 313 | TM: "🇹🇲", 314 | TN: "🇹🇳", 315 | TO: "🇹🇴", 316 | TR: "🇹🇷", 317 | TT: "🇹🇹", 318 | TV: "🇹🇻", 319 | TW: "🇹🇼", 320 | TZ: "🇹🇿", 321 | UA: "🇺🇦", 322 | UG: "🇺🇬", 323 | UM: "🇺🇲", 324 | US: "🇺🇸", 325 | UY: "🇺🇾", 326 | UZ: "🇺🇿", 327 | VA: "🇻🇦", 328 | VC: "🇻🇨", 329 | VE: "🇻🇪", 330 | VG: "🇻🇬", 331 | VI: "🇻🇮", 332 | VN: "🇻🇳", 333 | VU: "🇻🇺", 334 | WF: "🇼🇫", 335 | WS: "🇼🇸", 336 | YE: "🇾🇪", 337 | YT: "🇾🇹", 338 | ZA: "🇿🇦", 339 | ZM: "🇿🇲", 340 | ZW: "🇿🇼" 341 | }[c])) AS Q_FLAG -------------------------------------------------------------------------------- /1 Currently Reading/Follett, The Pillars of the Earth.md: -------------------------------------------------------------------------------- 1 | --- 2 | Author: Ken Follett 3 | Alias: The Pillars of the Earth 4 | Year: 1989 5 | Medium: Book 6 | Length: 1076 7 | Rating: 8 | DateStarted: 2022-11-01 9 | DateFinished: 10 | Cover: http://books.google.com/books/content?id=VB7IAgAAQBAJ&printsec=frontcover&img=1&zoom=1&edge=curl&source=gbs_api 11 | Tags: 12 | Country: UK 13 | --- 14 | 15 | # Notes -------------------------------------------------------------------------------- /1 Currently Reading/Green, An Absolutely Remarkable Thing.md: -------------------------------------------------------------------------------- 1 | --- 2 | Author: Hank Green 3 | Alias: An Absolutely Remarkable Thing 4 | Year: 2018 5 | Medium: Book 6 | Length: 352 7 | Rating: 8 | DateStarted: 2023-01-29 9 | DateFinished: 10 | Cover: http://books.google.com/books/content?id=gA1IDwAAQBAJ&printsec=frontcover&img=1&zoom=1&edge=curl&source=gbs_api 11 | Tags: 12 | Country: 13 | --- 14 | 15 | # Notes -------------------------------------------------------------------------------- /1 Currently Reading/King, The Shining.md: -------------------------------------------------------------------------------- 1 | --- 2 | Author: Stephen King 3 | Alias: The Shining 4 | Year: 1977 5 | Medium: Book 6 | Length: 312 7 | Rating: 8 | DateStarted: 2022-07-24 9 | DateFinished: 10 | Cover: https://books.google.com/books/content?id=8VnJLu3AvvQC&printsec=frontcover&img=1&zoom=1&edge=curl&source=gbs_api 11 | Tags: 12 | Country: US 13 | --- 14 | [[United States of America|USA]] 15 | # Notes -------------------------------------------------------------------------------- /1 Currently Reading/Liu, The Grace of Kings.md: -------------------------------------------------------------------------------- 1 | --- 2 | Author: Ken Liu 3 | Alias: The Grace of Kings 4 | Year: 2015 5 | Medium: Book 6 | Length: 699 7 | Rating: 8 | DateStarted: 2023-01-28 9 | DateFinished: 10 | Cover: http://books.google.com/books/content?id=tbGfEAAAQBAJ&printsec=frontcover&img=1&zoom=1&edge=curl&source=gbs_api 11 | Tags: 12 | Country: 13 | --- 14 | 15 | # Notes -------------------------------------------------------------------------------- /1 Currently Reading/Lynch, Red Seas Under Red Skies.md: -------------------------------------------------------------------------------- 1 | --- 2 | Author: Scott Lynch 3 | Alias: Red Seas Under Red Skies 4 | Year: 2007 5 | Medium: Book 6 | Length: 628 7 | Rating: 8 | DateStarted: 2022-06-16 9 | DateFinished: 10 | Cover: https://books.google.com/books/content?id=ey2SvgEACAAJ&printsec=frontcover&img=1&zoom=1&source=gbs_api 11 | Tags: Adventure/Heists, Fantasy/Epic, Mystery 12 | Country: US 13 | --- 14 | [[United States of America|USA]] 15 | # Notes -------------------------------------------------------------------------------- /1 Currently Reading/Stephenson, Snow Crash.md: -------------------------------------------------------------------------------- 1 | --- 2 | Author: Neal Stephenson 3 | Alias: Snow Crash 4 | Year: 2022-11-22 5 | Medium: Book 6 | Length: 576 7 | Rating: 8 | DateStarted: 2023-01-05 9 | DateFinished: 10 | Cover: http://books.google.com/books/content?id=PnqTEAAAQBAJ&printsec=frontcover&img=1&zoom=1&source=gbs_api 11 | Tags: 12 | Country: 13 | --- 14 | 15 | # Notes -------------------------------------------------------------------------------- /2 Book Log/2021/01/2021-01-09 Martin, A Game of Thrones.md: -------------------------------------------------------------------------------- 1 | --- 2 | Author: George R. R. Martin 3 | Alias: A Game of Thrones (ASOIAF 1) 4 | Year: 1996 5 | Medium: Book 6 | Length: 880 7 | Rating: 10 8 | DateStarted: 2020-12-25 9 | DateFinished: 2021-01-09 10 | Cover: https://i.gr-assets.com/images/S/compressed.photo.goodreads.com/books/1566973539l/31834320.jpg 11 | Tags: Fantasy/Epic, Fantasy, Fantasy/Political, Series/ASoIaF, Topic/DynasticWars 12 | Country: US 13 | 14 | --- 15 | [[United States of America|USA]], [[Martin, George R.R.]] 16 | #### Notes -------------------------------------------------------------------------------- /2 Book Log/2021/02/2021-02-07 Jemisin, The City We Became.md: -------------------------------------------------------------------------------- 1 | --- 2 | Author: N. K. Jemisin 3 | Alias: The City We Became 4 | Year: 2020 5 | Medium: Audiobook 6 | Length: 16.2 7 | Rating: 3 8 | DateStarted: 2021-02-01 9 | DateFinished: 2021-02-07 10 | Cover: https://i.gr-assets.com/images/S/compressed.photo.goodreads.com/books/1567991118l/43523325._SY475_.jpg 11 | Tags: Setting/NewYork, Fantasy/Urban, ScienceFiction/Queer 12 | Country: US 13 | 14 | --- 15 | [[United States of America|USA]], [[Jemisin, N. K.]] 16 | #### Notes -------------------------------------------------------------------------------- /2 Book Log/2021/03/2021-03-07 Corey, Leviathan Wakes.md: -------------------------------------------------------------------------------- 1 | --- 2 | Author: James S. A. Corey 3 | Alias: Leviathan Wakes (The Expanse 1) 4 | Year: 2011 5 | Medium: Book 6 | Length: 572 7 | Rating: 8 8 | DateStarted: 2021-02-19 9 | DateFinished: 2021-03-07 10 | Cover: https://i.gr-assets.com/images/S/compressed.photo.goodreads.com/books/1538986117l/12386949._SY475_.jpg 11 | Tags: ScienceFiction, ScienceFiction/SpaceOpera, Mystery, Series/TheExpanse 12 | Country: US 13 | --- 14 | [[United States of America|USA]], [[Corey, James S. A.]] 15 | #### Notes -------------------------------------------------------------------------------- /2 Book Log/2021/04/2021-04-14 Pratchett, Equal Rites.md: -------------------------------------------------------------------------------- 1 | --- 2 | Author: Terry Pratchett 3 | Alias: Equal Rites (Discworld 3) 4 | Year: 1987 5 | Medium: Book 6 | Length: 205 7 | Rating: 7 8 | DateStarted: 2021-04-12 9 | DateFinished: 2021-04-14 10 | Cover: https://i.gr-assets.com/images/S/compressed.photo.goodreads.com/books/1469284402l/31202813.jpg 11 | Tags: Series/Discworld, Fantasy, Topic/Humor, Fantasy/Witches 12 | Country: GB 13 | --- 14 | [[United Kingdom]], [[Pratchett, Terry]] 15 | #### Notes -------------------------------------------------------------------------------- /2 Book Log/2021/05/2021-05-08 Kepnes, You.md: -------------------------------------------------------------------------------- 1 | --- 2 | Author: Caroline Kepnes 3 | Alias: You (You 1) 4 | Year: 2014 5 | Medium: Audiobook 6 | Length: 11 7 | Rating: 9 8 | DateStarted: 2021-05-05 9 | DateFinished: 2021-05-08 10 | Cover: https://i.gr-assets.com/images/S/compressed.photo.goodreads.com/books/1407719396l/20894087.jpg 11 | Tags: Horror, Thriller, Horror/Psychopath, Series/You 12 | Country: US 13 | 14 | --- 15 | [[United States of America|USA]], [[Kepnes, Caroline]] 16 | #### Notes -------------------------------------------------------------------------------- /2 Book Log/2021/06/2021-06-07 Jackson, The Haunting of Hill House.md: -------------------------------------------------------------------------------- 1 | --- 2 | Author: Shirley Jackson 3 | Alias: The Haunting of Hill House 4 | Year: 1959 5 | Medium: Audiobook 6 | Length: 7 7 | Rating: 6 8 | DateStarted: 2021-05-27 9 | DateFinished: 2021-06-07 10 | Cover: https://i.gr-assets.com/images/S/compressed.photo.goodreads.com/books/1507631764l/36386030._SX318_.jpg 11 | Tags: Horror, Horror/Paranormal, Thriller, Horror/Ghosts, Discourse/Classic 12 | Country: US 13 | 14 | --- 15 | [[United States of America|USA]], [[Jackson, Shirley]] 16 | #### Notes -------------------------------------------------------------------------------- /2 Book Log/2021/07/2021-07-26 Zelazny, Lord of Light.md: -------------------------------------------------------------------------------- 1 | --- 2 | Author: Roger Zelazny 3 | Alias: Lord of Light 4 | Year: 1967 5 | Medium: Book 6 | Length: 261 7 | Rating: 8 8 | DateStarted: 2021-06-30 9 | DateFinished: 2021-07-26 10 | Cover: https://i.gr-assets.com/images/S/compressed.photo.goodreads.com/books/1610849804l/1025148._SY475_.jpg 11 | Tags: Fantasy/Myths, Fantasy/Gods, Discourse/Classic, NonFiction/Religion, ScienceFiction 12 | Country: US 13 | --- 14 | [[United States of America|USA]], [[Zelazny, Roger]] 15 | #### Notes -------------------------------------------------------------------------------- /2 Book Log/2021/08/2021-08-31 Morgenstern, The Night Circus.md: -------------------------------------------------------------------------------- 1 | --- 2 | Author: Erin Morgenstern 3 | Alias: The Night Circus 4 | Year: 2011 5 | Medium: Audiobook 6 | Length: 14 7 | Rating: 8 8 | DateStarted: 2021-08-24 9 | DateFinished: 2021-08-31 10 | Cover: https://i.gr-assets.com/images/S/compressed.photo.goodreads.com/books/1479361717l/12606483.jpg 11 | Tags: Fantasy/Magic, History, Romance, Fantasy/MagicalRealism 12 | Country: US 13 | 14 | --- 15 | [[United States of America|USA]], [[Morgenstern, Erin]] 16 | #### Notes -------------------------------------------------------------------------------- /2 Book Log/2021/09/2021-09-07 Haig, The Midnight Library.md: -------------------------------------------------------------------------------- 1 | --- 2 | Author: Matt Haig 3 | Alias: The Midnight Library 4 | Year: 2020 5 | Medium: Audiobook 6 | Length: 9 7 | Rating: 6 8 | DateStarted: 2021-08-31 9 | DateFinished: 2021-09-07 10 | Cover: https://i.gr-assets.com/images/S/compressed.photo.goodreads.com/books/1596026608l/54744876._SX318_.jpg 11 | Tags: Topic/Death, Topic/philosophical, Fantasy/MagicalRealism, Fantasy 12 | Country: GB 13 | --- 14 | [[United Kingdom]], [[Haig, Matt]] 15 | #### Notes -------------------------------------------------------------------------------- /2 Book Log/2021/10/2021-10-26 Flynn, Gone Girl.md: -------------------------------------------------------------------------------- 1 | --- 2 | Author: Gillian Flynn 3 | Alias: Gone Girl 4 | Year: 2012 5 | Medium: Audiobook 6 | Length: 19 7 | Rating: 9 8 | DateStarted: 2021-10-18 9 | DateFinished: 2021-10-26 10 | Cover: https://i.gr-assets.com/images/S/compressed.photo.goodreads.com/books/1410881685l/23223667.jpg 11 | Tags: Mystery, Thriller/Psychological 12 | Country: US 13 | --- 14 | [[United States of America|USA]], [[Flynn, Gillian]] 15 | #### Notes -------------------------------------------------------------------------------- /2 Book Log/2021/11/2021-11-29 Orwell, Animal Farm.md: -------------------------------------------------------------------------------- 1 | --- 2 | Author: George Orwell 3 | Alias: Animal Farm 4 | Year: 1945 5 | Medium: Audiobook 6 | Length: 4 7 | Rating: 9 8 | DateStarted: 2021-11-27 9 | DateFinished: 2021-11-29 10 | Cover: https://i.gr-assets.com/images/S/compressed.photo.goodreads.com/books/1278209397l/8535458.jpg 11 | Tags: ScienceFiction/Dystopian, Topic/Politics, Discourse/Classic, Discourse/Literature 12 | Country: GB 13 | 14 | --- 15 | [[United Kingdom]], [[Orwell, George]] 16 | #### Notes -------------------------------------------------------------------------------- /2 Book Log/2021/12/2021-12-27 Lee, Jade City.md: -------------------------------------------------------------------------------- 1 | --- 2 | Author: Fonda Lee 3 | Alias: Jade City (The Green Bone Saga 1) 4 | Year: 2017 5 | Medium: Audiobook 6 | Length: 19 7 | Rating: 10 8 | DateStarted: 2021-12-20 9 | DateFinished: 2021-12-27 10 | Cover: https://i.gr-assets.com/images/S/compressed.photo.goodreads.com/books/1515138582l/36755624.jpg 11 | Tags: Fantasy/Magic, Mystery, Crime/Organized, Favorite, Series/GreenBoneSaga 12 | Country: US 13 | --- 14 | [[United States of America|USA]], [[Lee, Fonda]] 15 | #### Notes -------------------------------------------------------------------------------- /2 Book Log/2022/01/2022-01-09 Gaiman, Sandman Vol. 3.md: -------------------------------------------------------------------------------- 1 | --- 2 | Author: Neil Gaiman 3 | Alias: The Sandman Vol. 3 - Dream Country 4 | Year: 1990 5 | Medium: GraphicNovel 6 | Length: 160 7 | Rating: 10 8 | DateStarted: 2022-01-08 9 | DateFinished: 2022-01-09 10 | Cover: https://i.gr-assets.com/images/S/compressed.photo.goodreads.com/books/1540050564l/40512291.jpg 11 | Tags: Fantasy, Fantasy/Myths, Series/TheSandman 12 | Country: GB, US 13 | --- 14 | [[United Kingdom]], [[United States of America|USA]], [[Gaiman, Neil]] 15 | #### Notes -------------------------------------------------------------------------------- /2 Book Log/2022/01/2022-01-17 Dazai, No longer Human.md: -------------------------------------------------------------------------------- 1 | --- 2 | Author: Dazai Osamu 3 | Alias: No longer Human 4 | Year: 1948 5 | Medium: Audiobook 6 | Length: 4 7 | Rating: 7 8 | DateStarted: 2022-01-15 9 | DateFinished: 2022-01-17 10 | Cover: https://i.gr-assets.com/images/S/compressed.photo.goodreads.com/books/1554394738l/44785196._SX318_.jpg 11 | Tags: Topic/psychological, Topic/Addiction 12 | Country: JP 13 | --- 14 | [[Japan]], [[Dazai Osamu]] 15 | #### Notes -------------------------------------------------------------------------------- /2 Book Log/2022/01/2022-01-29 Verne, Around the World in Eighty Days.md: -------------------------------------------------------------------------------- 1 | --- 2 | Author: Jules Verne 3 | Alias: Around the World in Eighty Days (Le Tour du monde en quatre-vingts jours) 4 | Year: 1872 5 | Medium: Audiobook 6 | Length: 7.9 7 | Rating: 7 8 | DateStarted: 2022-01-23 9 | DateFinished: 2022-01-29 10 | Cover: https://i.gr-assets.com/images/S/compressed.photo.goodreads.com/books/1342991005l/15765329.jpg 11 | Tags: Topic/Travel, History, Discourse/Classic 12 | Country: FR 13 | --- 14 | [[France]], [[Verne, Jules]] 15 | #### Notes -------------------------------------------------------------------------------- /2 Book Log/2022/02/2022-02-05 King, The Drawing of the Three.md: -------------------------------------------------------------------------------- 1 | --- 2 | Author: Stephen King 3 | Alias: The Drawing of the Three (The Dark Tower 2) 4 | Year: 1987 5 | Medium: Audiobook 6 | Length: 12.75 7 | Rating: 8 8 | DateStarted: 2022-02-01 9 | DateFinished: 2022-02-05 10 | Cover: https://i.gr-assets.com/images/S/compressed.photo.goodreads.com/books/1327411785l/12754892.jpg 11 | Tags: Fantasy, ScienceFiction/Meta, Setting/Western, Author/King, Series/DarkTower 12 | Country: US 13 | --- 14 | [[United States of America|USA]], [[King, Stephen]] 15 | #### Notes -------------------------------------------------------------------------------- /2 Book Log/2022/03/2022-03-15 King, The Stand.md: -------------------------------------------------------------------------------- 1 | --- 2 | Author: Stephen King 3 | Alias: The Stand 4 | Year: 1978 5 | Medium: Book 6 | Length: 1325 7 | Rating: 7 8 | DateStarted: 2022-02-09 9 | DateFinished: 2022-03-15 10 | Cover: https://i.gr-assets.com/images/S/compressed.photo.goodreads.com/books/1370940533l/11232016.jpg 11 | Tags: Horror, ScienceFiction/Post-Apocalypse, Favorite 12 | Country: US 13 | --- 14 | [[United States of America|USA]], [[King, Stephen]] 15 | #### Notes (added on 2022-06-26) 16 | -------------------------------------------------------------------------------- /2 Book Log/2022/04/2022-04-04 Le Guin, Planet of Exile.md: -------------------------------------------------------------------------------- 1 | --- 2 | Author: Ursula K. Le Guin 3 | Alias: Planet of Exile (Hainish Cycle 2) 4 | Year: 1966 5 | Medium: Book 6 | Length: 126 7 | Rating: 7 8 | DateStarted: 2022-03-21 9 | DateFinished: 2022-04-04 10 | Cover: https://i.gr-assets.com/images/S/compressed.photo.goodreads.com/books/1286221041l/429974.jpg 11 | Tags: ScienceFiction, ScienceFiction/Interstellar, Discourse/Classic, ScienceFiction/SpaceOpera, Fantasy, NonFiction/Anthropology, Series/HainishCycle 12 | Country: US 13 | --- 14 | [[United States of America|USA]], [[Le Guin, Ursula K.]] 15 | #### Notes 16 | 17 | -------------------------------------------------------------------------------- /2 Book Log/2022/05/2022-05-16 Crouch, Recursion.md: -------------------------------------------------------------------------------- 1 | --- 2 | Author: Blake Crouch 3 | Alias: Recursion 4 | Year: 2019 5 | Medium: Audiobook 6 | Length: 10.75 7 | Rating: 7 8 | DateStarted: 2022-05-14 9 | DateFinished: 2022-05-16 10 | Cover: https://i.gr-assets.com/images/S/compressed.photo.goodreads.com/books/1577960011l/46133009._SX318_.jpg 11 | Tags: ScienceFiction/TimeTravel, Topic/philosophical, ScienceFiction 12 | Country: US 13 | 14 | --- 15 | [[United States of America|USA]], [[Crouch, Blake]] 16 | #### Notes 17 | -------------------------------------------------------------------------------- /2 Book Log/2022/06/2022-06-15 Hill, Horns.md: -------------------------------------------------------------------------------- 1 | --- 2 | Author: Joe Hill 3 | Alias: Horns 4 | Year: 2009 5 | Medium: Audiobook 6 | Length: 13.9 7 | Rating: 9.9 8 | DateStarted: 2022-06-09 9 | DateFinished: 2022-06-15 10 | Cover: https://i.gr-assets.com/images/S/compressed.photo.goodreads.com/books/1406004459l/22755712.jpg 11 | Tags: Fantasy/Gods, Romance, Topic/philosophical 12 | Country: US 13 | 14 | --- 15 | [[United States of America|USA]], [[Hill, Joe]] 16 | #### Notes 17 | -------------------------------------------------------------------------------- /2 Book Log/2022/07/2022-07-24 Butler, Mind of My Mind.md: -------------------------------------------------------------------------------- 1 | --- 2 | Author: Octavia E. Butler 3 | Alias: Mind of My Mind 4 | Year: 1977 5 | Medium: Book 6 | Length: 237 7 | Rating: 9 8 | DateStarted: 2022-07-21 9 | DateFinished: 2022-07-24 10 | Cover: https://i.gr-assets.com/images/S/compressed.photo.goodreads.com/books/1586833920l/52594480.jpg 11 | Tags: Fantasy/Immortal, ScienceFiction, History/Alternate, Series/Patternist 12 | Country: US 13 | 14 | --- 15 | [[United States of America|USA]], [[Butler, Octavia E.]] 16 | #### Notes 17 | 18 | -------------------------------------------------------------------------------- /2 Book Log/2022/08/2022-08-12 Kowal, Word Puppets.md: -------------------------------------------------------------------------------- 1 | --- 2 | Author: Mary Robinette Kowal 3 | Alias: Word Puppets 4 | Year: 2015 5 | Medium: Book 6 | Length: 371 7 | Rating: 10 8 | DateStarted: 2022-08-04 9 | DateFinished: 2022-08-12 10 | Cover: https://books.google.com/books/content?id=tuXesgEACAAJ&printsec=frontcover&img=1&zoom=1&source=gbs_api 11 | Tags: ScienceFiction/Space, ScienceFiction/Mars, Fantasy, Discourse/ShortStories, Series/LadyAstronaut 12 | Country: US 13 | --- 14 | [[United States of America|USA]], [[Kowal, Mary Robinette]] 15 | #### Notes 16 | -------------------------------------------------------------------------------- /2 Book Log/2022/09/2022-09-15 Corey, Abaddon's Gate.md: -------------------------------------------------------------------------------- 1 | --- 2 | Author: James S. A. Corey 3 | Alias: Abaddon's Gate (The Expanse 3) 4 | Year: 2013 5 | Medium: Audiobook 6 | Length: 18.4 7 | Rating: 5 8 | DateStarted: 2022-08-29 9 | DateFinished: 2022-09-15 10 | Cover: http://books.google.com/books/content?id=fL8kbfvGhtcC&printsec=frontcover&img=1&zoom=1&edge=curl&source=gbs_api 11 | Tags: ScienceFiction/Space, ScienceFiction, ScienceFiction/SpaceOpera, Mystery, Series/TheExpanse 12 | Country: US 13 | --- 14 | [[United States of America|USA]], [[Corey, James S. A.]] 15 | #### Notes 16 | 17 | -------------------------------------------------------------------------------- /2 Book Log/2022/10/2022-10-07 Fforde, The Eyre Affair.md: -------------------------------------------------------------------------------- 1 | --- 2 | Author: Jasper Fforde 3 | Alias: The Eyre Affair 4 | Year: 2001 5 | Medium: Book 6 | Length: 384 7 | Rating: 9 8 | DateStarted: 2022-09-30 9 | DateFinished: 2022-10-07 10 | Cover: https://external-content.duckduckgo.com/iu/?u=http%3A%2F%2F2.bp.blogspot.com%2F-or8nxcyTZ8U%2FTzs4s505YhI%2FAAAAAAAAHbo%2Fr2Ruo3VSDOQ%2Fs1600%2Fthe_eyre_affair.jpg&f=1&nofb=1&ipt=71453ca7074a05d4db9fadd77a131ca7c50c1e369fc224878a1a762070e5fdc7&ipo=images 11 | Tags: Topic/Humor, ScienceFiction, Discourse/Literature, Topic/Books, Series/ThursdayNext 12 | Country: GB 13 | --- 14 | [[United Kingdom]], [[Fforde, Jasper]] 15 | #### Notes 16 | -------------------------------------------------------------------------------- /2 Book Log/2022/11/2022-11-09 Sloan, Mr Penumbra's 24-hour Bookstore.md: -------------------------------------------------------------------------------- 1 | --- 2 | Author: Robin Sloan 3 | Alias: Mr Penumbra's 24-hour Bookstore 4 | Year: 2012 5 | Medium: Book 6 | Length: 288 7 | Rating: 7 8 | DateStarted: 2022-11-01 9 | DateFinished: 2022-11-09 10 | Cover: https://images-na.ssl-images-amazon.com/images/S/compressed.photo.goodreads.com/books/1345089845i/13538873.jpg 11 | Tags: Topic/Books, Topic/Conspiracy, Mystery 12 | Country: US 13 | --- 14 | [[United States of America|USA]], [[Sloan, Robin]] 15 | #### Notes 16 | -------------------------------------------------------------------------------- /2 Book Log/2022/12/2022-12-12 Matthews, Red Sparrow.md: -------------------------------------------------------------------------------- 1 | --- 2 | Author: Jason Matthews 3 | Alias: Red Sparrow 4 | Year: 2013 5 | Medium: Audiobook 6 | Length: 17.9 7 | Rating: 4 8 | DateStarted: 2022-12-03 9 | DateFinished: 2022-12-12 10 | Cover: http://books.google.com/books/content?id=Kzuwa5CX8NwC&printsec=frontcover&img=1&zoom=1&edge=curl&source=gbs_api 11 | Tags: Topic/Spies, Mystery, Thriller/Political 12 | Country: US 13 | --- 14 | [[United States of America|USA]], [[Matthews, Jason]] 15 | #### Notes 16 | -------------------------------------------------------------------------------- /2 Book Log/2023/01/2023-01-19 Winslow, Satori.md: -------------------------------------------------------------------------------- 1 | --- 2 | Author: Don Winslow 3 | Alias: Satori 4 | Year: 2011 5 | Medium: Book 6 | Length: 537 7 | Rating: 9 8 | DateStarted: 2022-12-31 9 | DateFinished: 2023-01-19 10 | Cover: https://images-na.ssl-images-amazon.com/images/S/compressed.photo.goodreads.com/books/1355041432i/12283632.jpg 11 | Tags: History, Topic/Spies, Topic/Assassins, Thriller, Topic/Humor, Topic/Politics, Series/NicolaiHel 12 | Country: US 13 | --- 14 | [[United States of America|USA]], [[Trevanian]], [[Winslow, Don]] 15 | #### Notes 16 | -------------------------------------------------------------------------------- /2 Book Log/2023/01/2023-01-29 Carlin, Ghosts of the Ostfront (Hardcore History 27-30 & Eps. 31-33).md: -------------------------------------------------------------------------------- 1 | --- 2 | Author: Dan Carlin 3 | Alias: Ghosts of the Ostfront (Hardcore History 27-30 & Episodes 31-33) 4 | Year: 2009 5 | Medium: Podcast 6 | Length: 9.3 7 | Rating: 8 8 | DateStarted: 2023-01-25 9 | DateFinished: 2023-01-29 10 | Cover: https://www.dancarlin.com/wp-content/uploads/2009/04/HH-30.5-700x700.jpg 11 | Tags: NonFiction, History, Series/HardcoreHistory 12 | Country: US 13 | --- 14 | [[United States of America|USA]], [[Carlin, Dan]] 15 | #### Notes 16 | 17 | # Other Episodes 18 | (Blitz) Suffer the Children 19 | Globalization Unto Death 20 | (Blitz) Old School Toughness -------------------------------------------------------------------------------- /3 Movies and Games/2022/02/2022-02-20 I am Mother.md: -------------------------------------------------------------------------------- 1 | --- 2 | Director: Grant Sputore 3 | Screenplay: Michael Lloyd Green 4 | Alias: I am Mother 5 | Actors: Clara Rugaard, LGBe Hawker, Rose Byrne, and Hilary Swank 6 | Year: 2019 7 | Medium: Movie 8 | Length: 113 9 | Rating: 5 10 | DateStarted: 2022-02-19 11 | DateFinished: 2022-02-20 12 | Cover: https://upload.wikimedia.org/wikipedia/en/thumb/a/a4/I_Am_Mother_poster.png/220px-I_Am_Mother_poster.png 13 | Tags: ScienceFiction/Dystopian, ScienceFiction/AI, Netflix 14 | Country: AU 15 | --- 16 | [[Australia]], [[Sputore, Grant]] 17 | #### Notes -------------------------------------------------------------------------------- /3 Movies and Games/2022/03/2022-03-24 Escape Room (2017).md: -------------------------------------------------------------------------------- 1 | --- 2 | Director: Will Wernick 3 | Screenplay: Will Wernick, Noah Dorsey 4 | Alias: Escape Room 5 | Actors: Evan Williams, Annabelle Stephenson, Elisabeth Hower 6 | Year: 2017 7 | Medium: Movie 8 | Length: 99 9 | Rating: 2 10 | DateStarted: 2022-03-24 11 | DateFinished: 2022-03-24 12 | Cover: https://external-content.duckduckgo.com/iu/?u=https%3A%2F%2Ftse1.mm.bing.net%2Fth%3Fid%3DOIP.YiU1A9NmaiMJmVujAb53yQHaLH%26pid%3DApi&f=1 13 | Tags: Horror/Psychological, Thriller/Psychological, Topic/Terrible, Netflix 14 | Country: US 15 | --- 16 | [[United States of America|USA]], [[Wernick, Will]] 17 | #### Notes 18 | 19 | Hot garbage -------------------------------------------------------------------------------- /3 Movies and Games/2022/05/2022-05-23 Everything Everywhere All at Once.md: -------------------------------------------------------------------------------- 1 | --- 2 | Director: Dan Kwan and Daniel Scheinert (collectively known as "Daniels") 3 | Screenplay: Daniels 4 | Alias: Everything Everywhere All at Once 5 | Actors: Michelle Yeoh, Stephanie Hsu, Ke Huy Quan, Jenny Slate, Harry Shum Jr., James Hong, and Jamie Lee Curtis 6 | Year: 2022 7 | Medium: Movie 8 | Length: 139 9 | Rating: 10 10 | DateStarted: 2022-05-23 11 | DateFinished: 2022-05-23 12 | Cover: https://upload.wikimedia.org/wikipedia/en/1/1e/Everything_Everywhere_All_at_Once.jpg?20220302000125 13 | Tags: Topic/Mindfuck, ScienceFiction/Multiverse, Topic/Family, Favorite 14 | Country: US 15 | --- 16 | [[United States of America|USA]], [[Daniels]] 17 | Watched with Jürgen at Ostentor 18 | #### Notes 19 | Things that this reminded me of: 20 | - Hitchhiker’s Guide to the Galaxy 21 | - The Matrix 22 | - The Nines 23 | - Scott Pilgrim vs. the World 24 | - Slaughterhouse-Five 25 | - Alamut 26 | 27 | A fantastic movie! Really awesome. It takes different ideas like in the stories above and turns it up a notch, and tells a story about family, expectations, self-doubt/-confidence/-acceptance. 28 | 29 | I pre-/ordered the DVD just now, because I want to re-watch immediately. I’m already forgetting what I want to say about it, but I really enjoyed it. Funny, sad, profound. Maybe the latter profundity was especially “poignant” in contrast to the initial setting of mundanity. 30 | 31 | The obvious plot of expectations towards life in the role of a first (and second) generation immigrant is there, but it sort of takes a back seat to the filial relationship of the main character, Evelyn. Because here we see not simply her projection onto her daughter of having a plan and making something out of her life, but the apparently involuntary conservatism that Evelyn brings, perhaps from the “old country”. She says at one point that her daughter, Joy, is young and is constantly changing herd. This is a rather obvious parallel to her own life, since we witness Evelyn try and deduct lots of “hobby” equipment, such as a karaoke machine, as the remnants of dreams of possible life-paths lost. 32 | 33 | In this regard there is an unfortunate comparison to be made to [[2021-09-07 Haig, The Midnight Library]], which reads like a bad self-help book, since the main character does commit suicide but then in those between worlds chooses to return to life after all, in an obvious almost retelling of *It’s a wonderful Life*, both of which I find depressing. Haig shouldn’t be giving out life advice, especially since this book is touted online as a book for depressed people, since she does very much (attempt to) kill herself. 34 | 35 | [[2022-05-23 Everything Everywhere All at Once]], however, evades the cloyingly sweet self-help-ish-ness, since it’s overarching message is a simplistically nihilistic “Nothing matters”. Thus sorting making a connection to [[2022-04-03 Bartol, Alamut]]’s “Nothing is true, everything is permitted.” In a life, or a multiverse, where all expectations are simply illusions, we can boil life to its most basic tenets and do whatever the fuck makes us happy. -------------------------------------------------------------------------------- /3 Movies and Games/2022/07/2022-07-20 Breaking Bad (Season 1).md: -------------------------------------------------------------------------------- 1 | --- 2 | Director: Vince Gilligan 3 | Screenplay: Vince Gilligan 4 | Alias: Breaking Bad (Season 1) 5 | Actors: Bryan Cranston, Aaron Paul, Anna Gunn 6 | Year: 2008 7 | Medium: TV 8 | Length: 344 9 | Rating: 10 10 | DateStarted: 2022-07-13 11 | DateFinished: 2022-07-20 12 | Cover: https://external-content.duckduckgo.com/iu/?u=http%3A%2F%2Fimages3.wikia.nocookie.net%2F__cb20120617213533%2Fbreakingbad%2Fimages%2F4%2F47%2FSeason_1_AMC_Poster.jpg&f=1&nofb=1&ipt=abc9e99536bc808583915a1662cc5d0772cb244c4c2278bf20708ff22f2a847f&ipo=images 13 | Tags: Setting/Neo-Western, Setting/Western, Mystery/Crime, Crime/Drugs, Netflix 14 | Country: US 15 | --- 16 | [[United States of America|USA]], [[Gilligan, Vince]] 17 | #### Notes 18 | -------------------------------------------------------------------------------- /3 Movies and Games/2022/10/2022-10-18 Reservoir Dogs.md: -------------------------------------------------------------------------------- 1 | --- 2 | Director: Quentin Tarantino 3 | Screenplay: Quentin Tarantino, Roger Avary 4 | Alias: Reservoir Dogs 5 | Actors: Harvey Keitel, Tim Roth, Michael Madsen 6 | Year: 1992 7 | Medium: Movie 8 | Length: 99 9 | Rating: 9 10 | DateStarted: 2022-10-18 11 | DateFinished: 2022-10-18 12 | Cover: https://m.media-amazon.com/images/M/MV5BZmExNmEwYWItYmQzOS00YjA5LTk2MjktZjEyZDE1Y2QxNjA1XkEyXkFqcGdeQXVyMTQxNzMzNDI@._V1_SX300.jpg 13 | Tags: Violent 14 | Country: US 15 | --- 16 | [[United States of America|USA]], [[Tarantino, Quentin]] 17 | #### Notes 18 | -------------------------------------------------------------------------------- /3 Movies and Games/2022/11/2022-11-10 Ocean's Eleven.md: -------------------------------------------------------------------------------- 1 | --- 2 | Director: Steven Soderbergh 3 | Screenplay: George Clayton Johnson, Jack Golden Russell, Harry Brown 4 | Alias: Ocean's Eleven 5 | Actors: George Clooney, Brad Pitt, Julia Roberts 6 | Year: 2001 7 | Medium: Movie 8 | Length: 116 9 | Rating: 8 10 | DateStarted: 2022-11-10 11 | DateFinished: 2022-11-10 12 | Cover: https://m.media-amazon.com/images/M/MV5BYzVmYzVkMmUtOGRhMi00MTNmLThlMmUtZTljYjlkMjNkMjJkXkEyXkFqcGdeQXVyNDk3NzU2MTQ@._V1_SX300.jpg 13 | Tags: Adventure/Heists, Mystery/Crime, Netflix 14 | Country: US 15 | --- 16 | [[United States of America|USA]], [[Soderbergh, Steven]] 17 | #### Notes 18 | -------------------------------------------------------------------------------- /3 Movies and Games/2022/12/2022-12-10 Marriage Story.md: -------------------------------------------------------------------------------- 1 | --- 2 | Director: Noah Baumbach 3 | Screenplay: Noah Baumbach 4 | Alias: Marriage Story 5 | Actors: Adam Driver, Scarlett Johansson, Julia Greer 6 | Year: 2019 7 | Medium: Movie 8 | Length: 137 9 | Rating: 8 10 | DateStarted: 2022-12-09 11 | DateFinished: 2022-12-10 12 | Cover: https://m.media-amazon.com/images/M/MV5BZGVmY2RjNDgtMTc3Yy00YmY0LTgwODItYzBjNWJhNTRlYjdkXkEyXkFqcGdeQXVyMjM4NTM5NDY@._V1_SX300.jpg 13 | Tags: Topic/Family, Topic/Drama, Netflix 14 | Country: UK, US 15 | --- 16 | [[United Kingdom|UK]], [[United States of America|USA]], [[Baumbach, Noah]] 17 | 18 | #### Notes 19 | 20 | -------------------------------------------------------------------------------- /3 Movies and Games/2023/01/2023-01-05 Sicario.md: -------------------------------------------------------------------------------- 1 | --- 2 | Director: Denis Villeneuve 3 | Screenplay: Taylor Sheridan 4 | Alias: Sicario 5 | Actors: Emily Blunt, Josh Brolin, Benicio Del Toro 6 | Year: 2015 7 | Medium: Movie 8 | Length: 121 9 | Rating: 8 10 | DateStarted: 2023-01-04 11 | DateFinished: 2023-01-05 12 | Cover: https://m.media-amazon.com/images/M/MV5BMjA5NjM3NTk1M15BMl5BanBnXkFtZTgwMzg1MzU2NjE@._V1_SX300.jpg 13 | Tags: Violent, Crime/Organized, Series/Sicario 14 | Country: US, MX, HK 15 | --- 16 | [[Villeneuve, Denis]], [[United States of America|USA]], [[Mexico|MX]], [[Hong Kong]] 17 | #### Notes 18 | 19 | 20 | -------------------------------------------------------------------------------- /3 Movies and Games/2023/01/2023-01-28 You People.md: -------------------------------------------------------------------------------- 1 | --- 2 | Director: Kenya Barris 3 | Screenplay: Jonah Hill, Kenya Barris 4 | Alias: You People 5 | Actors: Jonah Hill, Lauren London, Eddie Murphy 6 | Year: 2023 7 | Medium: Movie 8 | Length: 117 9 | Rating: 7 10 | DateStarted: 2023-01-28 11 | DateFinished: 2023-01-28 12 | Cover: https://m.media-amazon.com/images/M/MV5BN2Q3MTA3NGItZDQ0MS00ZTE0LWFmZDMtZTcwNDk0MDA4YmMwXkEyXkFqcGdeQXVyODk4OTc3MTY@._V1_SX300.jpg 13 | Tags: Topic/Race, Topic/SocialCriticism, Topic/Humor, Romance 14 | Country: US 15 | --- 16 | [[United States of America|USA]], [[Barris, Kenya]] 17 | #### Notes 18 | -------------------------------------------------------------------------------- /3 Movies and Games/2023/01/2023-01-30 The Watcher.md: -------------------------------------------------------------------------------- 1 | --- 2 | Director: Ryan Murphy 3 | Screenplay: Ian Brennan, Ryan Murphy 4 | Alias: The Watcher 5 | Actors: Naomi Watts, Bobby Cannavale, Mia Farrow 6 | Year: 2022 7 | Medium: Movie 8 | Length: 332 9 | Rating: 7 10 | DateStarted: 2023-01-27 11 | DateFinished: 2023-01-30 12 | Cover: https://m.media-amazon.com/images/M/MV5BMTY3OGQxNTItYWEwZS00ZTg0LWE1MjYtMTcxNTUzYzk0ZjdmXkEyXkFqcGdeQXVyMDM2NDM2MQ@@._V1_SX300.jpg 13 | Tags: Horror, Mystery/Stepford 14 | Country: US 15 | --- 16 | [[United States of America|USA]], [[Murphy, Ryan]] 17 | #### Notes 18 | 19 | -------------------------------------------------------------------------------- /3 Movies and Games/2023/02/2023-02-01 Inception.md: -------------------------------------------------------------------------------- 1 | --- 2 | Director: Christopher Nolan 3 | Screenplay: Christopher Nolan 4 | Alias: Inception 5 | Actors: Leonardo DiCaprio, Joseph Gordon-Levitt, Elliot Page 6 | Year: 2010 7 | Medium: Movie 8 | Length: 148 9 | Rating: 10 10 | DateStarted: 2023-02-01 11 | DateFinished: 2023-02-01 12 | Cover: https://m.media-amazon.com/images/M/MV5BMjAxMzY3NjcxNF5BMl5BanBnXkFtZTcwNTI5OTM0Mw@@._V1_SX300.jpg 13 | Tags: ScienceFiction, Thriller/Psychological, Matrix, Favorite 14 | Country: US, GB 15 | --- 16 | [[United States of America|USA]], [[United Kingdom|GB]] 17 | #### Notes 18 | -------------------------------------------------------------------------------- /3 Movies and Games/2023/02/2023-02-02 Batman Begins.md: -------------------------------------------------------------------------------- 1 | --- 2 | Director: Christopher Nolan 3 | Screenplay: Bob Kane, David S. Goyer, Christopher Nolan 4 | Alias: Batman Begins 5 | Actors: Christian Bale, Michael Caine, Ken Watanabe 6 | Year: 2005 7 | Medium: Movie 8 | Length: 140 9 | Rating: 9 10 | DateStarted: 2023-02-02 11 | DateFinished: 2023-02-02 12 | Cover: https://m.media-amazon.com/images/M/MV5BOTY4YjI2N2MtYmFlMC00ZjcyLTg3YjEtMDQyM2ZjYzQ5YWFkXkEyXkFqcGdeQXVyMTQxNzMzNDI@._V1_SX300.jpg 13 | Tags: Series/Batman, Series/DarkKnight, Movies/Superhero, violent 14 | Country: US, GB 15 | --- 16 | [[United States of America|USA]], [[United Kingdom|GB]], [[Nolan, Christopher]] 17 | #### Notes 18 | -------------------------------------------------------------------------------- /3 Movies and Games/2023/Games/2023-01-25 Castlevania.md: -------------------------------------------------------------------------------- 1 | --- 2 | Alias: "Castlevania (悪魔城ドラキュラ: Akumajō Dracula)" 3 | Director: Hitoshi Akamatsu 4 | Company: Konami 5 | Year: 1986 6 | Medium: Game 7 | Length: 5 8 | Rating: 6 9 | DateStarted: 2023-01-21 10 | DateFinished: 2023-01-25 11 | Cover: https://upload.wikimedia.org/wikipedia/en/5/51/Castlevania_1_cover.png?20181026220115 12 | Tags: Series/Castlevania, Difficulty/Hard, Console/NES 13 | Country: JP 14 | --- 15 | [[Japan]], [[Akamatsu Hitoshi]] 16 | #### Notes 17 | 18 | -------------------------------------------------------------------------------- /3 Movies and Games/2023/Games/2023-02-01 Castlevania III Dracula's Curse.md: -------------------------------------------------------------------------------- 1 | --- 2 | Alias: "Castlevania III: Dracula's Curse (悪魔城伝説 Akumajō Densetsu)" 3 | Director: Hitoshi Akamatsu 4 | Company: Konami 5 | Year: 1990 6 | Medium: Game 7 | Length: 17.8 8 | Rating: 8 9 | DateStarted: 2023-01-28 10 | DateFinished: 2023-02-01 11 | Cover: https://upload.wikimedia.org/wikipedia/en/9/95/Castlevania_III_Dracula%27s_Curse.jpg 12 | Tags: Series/Castlevania, Difficulty/Hard, Console/NES 13 | Country: JP 14 | --- 15 | [[Japan]], [[Akamatsu Hitoshi]] 16 | #### Notes 17 | -------------------------------------------------------------------------------- /Countries/Argentina.md: -------------------------------------------------------------------------------- 1 | --- 2 | alias: AR 3 | --- -------------------------------------------------------------------------------- /Countries/Australia.md: -------------------------------------------------------------------------------- 1 | --- 2 | alias: AU 3 | --- 4 | -------------------------------------------------------------------------------- /Countries/Austria.md: -------------------------------------------------------------------------------- 1 | --- 2 | alias: AT 3 | --- 4 | -------------------------------------------------------------------------------- /Countries/Bahamas.md: -------------------------------------------------------------------------------- 1 | --- 2 | alias: BS 3 | --- -------------------------------------------------------------------------------- /Countries/Bangladesh.md: -------------------------------------------------------------------------------- 1 | --- 2 | alias: BD 3 | --- 4 | -------------------------------------------------------------------------------- /Countries/Brazil.md: -------------------------------------------------------------------------------- 1 | --- 2 | alias: BR 3 | --- 4 | -------------------------------------------------------------------------------- /Countries/Canada.md: -------------------------------------------------------------------------------- 1 | --- 2 | alias: CA 3 | --- 4 | -------------------------------------------------------------------------------- /Countries/Chile.md: -------------------------------------------------------------------------------- 1 | --- 2 | alias: CL 3 | --- 4 | -------------------------------------------------------------------------------- /Countries/China.md: -------------------------------------------------------------------------------- 1 | --- 2 | alias: CN 3 | --- 4 | -------------------------------------------------------------------------------- /Countries/Czech Republic.md: -------------------------------------------------------------------------------- 1 | --- 2 | alias: CZ 3 | --- -------------------------------------------------------------------------------- /Countries/Denmark.md: -------------------------------------------------------------------------------- 1 | --- 2 | alias: DK 3 | --- -------------------------------------------------------------------------------- /Countries/France.md: -------------------------------------------------------------------------------- 1 | --- 2 | alias: FR 3 | --- 4 | -------------------------------------------------------------------------------- /Countries/Germany.md: -------------------------------------------------------------------------------- 1 | --- 2 | alias: DE 3 | --- 4 | -------------------------------------------------------------------------------- /Countries/Hong Kong.md: -------------------------------------------------------------------------------- 1 | --- 2 | alias: HK 3 | --- 4 | -------------------------------------------------------------------------------- /Countries/India.md: -------------------------------------------------------------------------------- 1 | --- 2 | alias: IN 3 | --- 4 | -------------------------------------------------------------------------------- /Countries/Iran.md: -------------------------------------------------------------------------------- 1 | --- 2 | alias: IR, Persia 3 | --- 4 | -------------------------------------------------------------------------------- /Countries/Ireland.md: -------------------------------------------------------------------------------- 1 | --- 2 | alias: IE, Éire, Ire 3 | --- 4 | -------------------------------------------------------------------------------- /Countries/Italy.md: -------------------------------------------------------------------------------- 1 | --- 2 | alias: IT 3 | --- 4 | -------------------------------------------------------------------------------- /Countries/Japan.md: -------------------------------------------------------------------------------- 1 | --- 2 | alias: JP 3 | --- 4 | -------------------------------------------------------------------------------- /Countries/Kenya.md: -------------------------------------------------------------------------------- 1 | --- 2 | alias: KE 3 | --- 4 | -------------------------------------------------------------------------------- /Countries/Malaysia.md: -------------------------------------------------------------------------------- 1 | --- 2 | alias: MY 3 | --- 4 | -------------------------------------------------------------------------------- /Countries/Mexico.md: -------------------------------------------------------------------------------- 1 | --- 2 | alias: MX 3 | --- 4 | -------------------------------------------------------------------------------- /Countries/Mongolia.md: -------------------------------------------------------------------------------- 1 | --- 2 | alias: MN 3 | --- 4 | -------------------------------------------------------------------------------- /Countries/New Zealand.md: -------------------------------------------------------------------------------- 1 | --- 2 | alias: NZ 3 | --- 4 | -------------------------------------------------------------------------------- /Countries/Nigeria.md: -------------------------------------------------------------------------------- 1 | --- 2 | alias: NG 3 | --- 4 | -------------------------------------------------------------------------------- /Countries/Poland.md: -------------------------------------------------------------------------------- 1 | --- 2 | alias: PL 3 | --- 4 | -------------------------------------------------------------------------------- /Countries/Romania.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ReaderGuy42/ReadingIsFun/8f18c9ae94eb8ee83b4cd561fd47bea2ea17c739/Countries/Romania.md -------------------------------------------------------------------------------- /Countries/Scotland.md: -------------------------------------------------------------------------------- 1 | --- 2 | alias: SCOT 3 | --- 4 | 5 | -------------------------------------------------------------------------------- /Countries/Slovenia.md: -------------------------------------------------------------------------------- 1 | --- 2 | alias: SI 3 | --- 4 | -------------------------------------------------------------------------------- /Countries/Spain.md: -------------------------------------------------------------------------------- 1 | --- 2 | alias: SP 3 | --- 4 | -------------------------------------------------------------------------------- /Countries/Sweden.md: -------------------------------------------------------------------------------- 1 | --- 2 | alias: SE 3 | --- 4 | -------------------------------------------------------------------------------- /Countries/Switzerland.md: -------------------------------------------------------------------------------- 1 | --- 2 | alias: CH 3 | --- 4 | -------------------------------------------------------------------------------- /Countries/Turkey.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ReaderGuy42/ReadingIsFun/8f18c9ae94eb8ee83b4cd561fd47bea2ea17c739/Countries/Turkey.md -------------------------------------------------------------------------------- /Countries/United Kingdom.md: -------------------------------------------------------------------------------- 1 | --- 2 | alias: UK, GB 3 | --- 4 | -------------------------------------------------------------------------------- /Countries/United States of America.md: -------------------------------------------------------------------------------- 1 | --- 2 | alias: USA 3 | --- 4 | -------------------------------------------------------------------------------- /Countries/Wales.md: -------------------------------------------------------------------------------- 1 | --- 2 | aliases: CY, Cymru 3 | --- -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2023 ReaderGuy42 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # This is my Book tracking database 2 | 3 | I like reading. I enjoy tracking what I read, and have been using Goodreads since 2020. However, I like Obsidian’s local-first even better because 4 | a) your stuff stays your stuff, 5 | b) it’s more flexible. 6 | 7 | E.g. if I really enjoy a book, I can give it 11 stars instead of the usual maximum of 10. 8 | 9 | In the attempt to move away from Goodreads, I’ve been working on emulating several of their functions, such as the scatter chart of the years of publications of books read. 10 | 11 | In this example vault I’ve intentionally kept the books to a minimum, as this is just supposed to be a tech-demo, because with the amount of books I currently have in their Dataview will take up to a minute to render tables, etc. Therefore the scatter chart found in [[Reading Stats]] is pretty minimal. But it can also look like this, if you enter more books: 12 | ![Scatter Chart](/Trackers%20and%20Galleries/Things/Attachments/Images/scatter.png) 13 | Thanks to the awesome [Chartsview Plugin](https://github.com/caronchen/obsidian-chartsview-plugin) for making this possible! 14 | 15 | Then there’s also the chart that shows the amount of books you’ve read over time: 16 | ![Year Chart](/Trackers%20and%20Galleries/Things/Attachments/Images/years.png) 17 | 18 | This is courtesy of an awesome redditor who really helped me out with this last year. 19 | 20 | I like folders. I like being able to sort my notes into them. I’ve seen lots example videos on YouTube where it seems that all the notes are in the root directory. This Book Tracking vault is based on folders, but I don’t think it would be too difficult to adapt if you’d prefer not using folders. You do you! 21 | # Acknowledgments 22 | The homepage is directly inspired by [Rainbell’s Homepage](https://github.com/Rainbell129/Obsidian-Homepage/), I just simplified it and am just using the bullet points to buttons snippet. On that homepage I also used the [Advanced URI](https://github.com/Vinzent03/obsidian-advanced-uri) plugin to trigger the “New Book” (via the [Book Search Plugin](https://github.com/anpigon/obsidian-book-search-plugin/)) and the “New Movie” (via the [Quickadd Plugin](https://github.com/chhoumann/quickadd)) commands via links (that look like buttons). 23 | 24 | On the Obsidian Forum lots of people have really helped out too, including but not limited to `holroy`, `justdoitcc`, `mnvwvnmm` and others (sorry if I’ve forgotten!) 25 | 26 | This whole thing is based on [Minimal Theme’s Card layout](https://github.com/kepano/obsidian-minimal), which is really awesome! 27 | 28 | # To Do 29 | I’ve not yet found a satisfying way to organize my Want to Read books. In this sample vault there are only three books in that folder/category, but in my personal vault there’s almost 2000 so I’m having a hard time coming up with a good way to sort them. 30 | 31 | If anyone has any ideas or improvements please try doing a Pull Request or opening an Issue, I’m always open for ideas and suggestions :) 32 | -------------------------------------------------------------------------------- /Scripts/Movie.js: -------------------------------------------------------------------------------- 1 | const notice = (msg) => new Notice(msg, 5000); 2 | const log = (msg) => console.log(msg); 3 | 4 | const API_KEY_OPTION = "OMDb API Key"; 5 | const API_URL = "https://www.omdbapi.com/"; 6 | 7 | module.exports = { 8 | entry: start, 9 | settings: { 10 | name: "Movie Script", 11 | author: "Christian B. B. Houmann", 12 | options: { 13 | [API_KEY_OPTION]: { 14 | type: "text", 15 | defaultValue: "", 16 | placeholder: "OMDb API Key", 17 | }, 18 | }, 19 | }, 20 | }; 21 | 22 | let QuickAdd; 23 | let Settings; 24 | 25 | async function start(params, settings) { 26 | QuickAdd = params; 27 | Settings = settings; 28 | 29 | const query = await QuickAdd.quickAddApi.inputPrompt( 30 | "Enter movie title or IMDB ID: " 31 | ); 32 | if (!query) { 33 | notice("No query entered."); 34 | throw new Error("No query entered."); 35 | } 36 | 37 | let selectedShow; 38 | 39 | if (isImdbId(query)) { 40 | selectedShow = await getByImdbId(query); 41 | } else { 42 | const results = await getByQuery(query); 43 | 44 | const choice = await QuickAdd.quickAddApi.suggester( 45 | results.map(formatTitleForSuggestion), 46 | results 47 | ); 48 | if (!choice) { 49 | notice("No choice selected."); 50 | throw new Error("No choice selected."); 51 | } 52 | 53 | selectedShow = await getByImdbId(choice.imdbID); 54 | } 55 | 56 | QuickAdd.variables = { 57 | ...selectedShow, 58 | actorLinks: linkifyList(selectedShow.Actors.split(",")), 59 | genreLinks: linkifyList(selectedShow.Genre.split(",")), 60 | directorLink: 61 | selectedShow.Director === "N/A" ? " " : `[[${selectedShow.Director}]]`, 62 | fileName: replaceIllegalFileNameCharactersInString(selectedShow.Title), 63 | typeLink: `[[${selectedShow.Type === "movie" ? "Movies" : "Series"}]]`, 64 | }; 65 | } 66 | 67 | function isImdbId(str) { 68 | return /^tt\d+$/.test(str); 69 | } 70 | 71 | function formatTitleForSuggestion(resultItem) { 72 | return `(${resultItem.Type === "movie" ? "M" : "TV"}) ${resultItem.Title} (${ 73 | resultItem.Year 74 | })`; 75 | } 76 | 77 | async function getByQuery(query) { 78 | const searchResults = await apiGet(API_URL, { 79 | s: query, 80 | }); 81 | 82 | if (!searchResults.Search || !searchResults.Search.length) { 83 | notice("No results found."); 84 | throw new Error("No results found."); 85 | } 86 | 87 | return searchResults.Search; 88 | } 89 | 90 | async function getByImdbId(id) { 91 | const res = await apiGet(API_URL, { 92 | i: id, 93 | }); 94 | 95 | if (!res) { 96 | notice("No results found."); 97 | throw new Error("No results found."); 98 | } 99 | 100 | return res; 101 | } 102 | 103 | function linkifyList(list) { 104 | if (list.length === 0) return ""; 105 | if (list.length === 1) return `[[${list[0]}]]`; 106 | 107 | return list.map((item) => `[[${item.trim()}]]`).join(", "); 108 | } 109 | 110 | function replaceIllegalFileNameCharactersInString(string) { 111 | return string.replace(/[\\,#%&\{\}\/*<>?$\'\":@]*/g, ""); 112 | } 113 | 114 | async function apiGet(url, data) { 115 | let finalURL = new URL(url); 116 | if (data) 117 | Object.keys(data).forEach((key) => 118 | finalURL.searchParams.append(key, data[key]) 119 | ); 120 | 121 | finalURL.searchParams.append("apikey", Settings[API_KEY_OPTION]); 122 | 123 | const res = await request({ 124 | url: finalURL.href, 125 | method: "GET", 126 | cache: "no-cache", 127 | headers: { 128 | "Content-Type": "application/json", 129 | }, 130 | }); 131 | 132 | return JSON.parse(res); 133 | } 134 | 135 | -------------------------------------------------------------------------------- /Set Aside/Allighieri, Purgatorio (Divine Comedy 2).md: -------------------------------------------------------------------------------- 1 | --- 2 | Author: Allighieri, Dante; Longfellow, Henry Wadsworth 3 | Alias: Purgatorio - The Divine Comedy Part 2 (La Divina Commedia) 4 | Year: 1320 5 | Medium: Book 6 | Length: 74 7 | Rating: 8 | DateStarted: 2022-04-16 9 | DateFinished: 10 | Cover: https://i.gr-assets.com/images/S/compressed.photo.goodreads.com/books/1347334460l/8665149.jpg 11 | Tags: Discourse/Classic, Fantasy/Gods 12 | Country: IT 13 | --- 14 | [[Italy]] 15 | # Notes 16 | -------------------------------------------------------------------------------- /Templates/Template - Academic Article.md: -------------------------------------------------------------------------------- 1 | --- 2 | Author: 3 | Alias: 4 | Year: 5 | Medium: AcademicArticle 6 | Length: 7 | Rating: 8 | DateStarted: <% tp.file.creation_date("YYYY-MM-DD") %> 9 | DateFinished: 10 | Cover: 11 | Tags: 12 | Country: 13 | --- 14 | 15 | #### Notes -------------------------------------------------------------------------------- /Templates/Template - Academic Book.md: -------------------------------------------------------------------------------- 1 | --- 2 | Author: 3 | Alias: 4 | Year: 5 | Medium: AcademicBook 6 | Length: 7 | Rating: 8 | DateStarted: <% tp.file.creation_date("YYYY-MM-DD") %> 9 | DateFinished: 10 | Cover: 11 | Tags: 12 | Country: 13 | --- 14 | 15 | # Notes -------------------------------------------------------------------------------- /Templates/Template - Audiobook.md: -------------------------------------------------------------------------------- 1 | --- 2 | Author: 3 | Alias: 4 | Year: 5 | Medium: Audiobook 6 | Length: 7 | Rating: 8 | DateStarted: <% tp.date.now() %> 9 | DateFinished: 10 | Cover: 11 | Tags: 12 | Country: 13 | --- 14 | 15 | #### Notes -------------------------------------------------------------------------------- /Templates/Template - Author.md: -------------------------------------------------------------------------------- 1 | --- 2 | Name: 3 | Years: 4 | Photo: 5 | Tags: 6 | Country: 7 | --- 8 | 9 | #### Notes -------------------------------------------------------------------------------- /Templates/Template - Book.md: -------------------------------------------------------------------------------- 1 | --- 2 | Author: {{author}} 3 | Alias: {{title}} 4 | Year: {{publishDate}} 5 | Medium: Book 6 | Length: {{totalPage}} 7 | Rating: 8 | DateStarted: {{DATE:YYYY-MM-DD}} 9 | DateFinished: 10 | Cover: {{coverUrl}} 11 | Tags: 12 | Country: 13 | --- 14 | 15 | #### Notes -------------------------------------------------------------------------------- /Templates/Template - Catalog.md: -------------------------------------------------------------------------------- 1 | --- 2 | Author: {{author}} 3 | Alias: {{title}} 4 | Year: {{publishDate}} 5 | Medium: Book 6 | Length: {{totalPage}} 7 | Rating: 8 | DateStarted: 9 | DateFinished: 10 | Cover: {{coverUrl}} 11 | Tags: 12 | Country: 13 | --- 14 | 15 | #### Notes -------------------------------------------------------------------------------- /Templates/Template - Center Text.md: -------------------------------------------------------------------------------- 1 |

<% tp.file.selection ( ) %>

-------------------------------------------------------------------------------- /Templates/Template - Game.md: -------------------------------------------------------------------------------- 1 | --- 2 | Alias: 3 | Director: 4 | Company: 5 | Year: 6 | Medium: Game 7 | Length: 8 | Rating: 9 | DateStarted: 10 | DateFinished: 11 | Cover: 12 | Tags: 13 | Country: 14 | --- 15 | 16 | #### Notes -------------------------------------------------------------------------------- /Templates/Template - Movie.md: -------------------------------------------------------------------------------- 1 | --- 2 | Director: {{VALUE:Director}} 3 | Screenplay: {{VALUE:Writer}} 4 | Alias: {{VALUE:fileName}} 5 | Actors: {{VALUE:Actors}} 6 | Year: {{VALUE:Year}} 7 | Medium: Movie 8 | Length: {{VALUE:Runtime}} 9 | Rating: 10 | DateStarted: {{DATE:YYYY-MM-DD}} 11 | DateFinished: 12 | Cover: {{VALUE:Poster}} 13 | Tags: 14 | Country: {{VALUE:Country}} 15 | --- 16 | 17 | #### Notes -------------------------------------------------------------------------------- /Templates/Template - Podcast.md: -------------------------------------------------------------------------------- 1 | --- 2 | Author: 3 | Alias: 4 | Year: 5 | Medium: Podcast 6 | Length: 7 | Rating: 8 | DateStarted: <% tp.date.now() %> 9 | DateFinished: 10 | Cover: 11 | Tags: 12 | Country: 13 | --- 14 | 15 | #### Notes -------------------------------------------------------------------------------- /Templates/Template - TV.md: -------------------------------------------------------------------------------- 1 | --- 2 | Director: 3 | Alias: 4 | Actors: 5 | Year: 6 | Medium: Movie 7 | Length: 8 | Rating: 9 | DateStarted 10 | DateFinished: <% tp.date.now() %> 11 | Cover: 12 | Tags: 13 | Country: 14 | --- 15 | 16 | #### Notes -------------------------------------------------------------------------------- /Templates/Template - eBook.md: -------------------------------------------------------------------------------- 1 | --- 2 | Author: 3 | Alias: 4 | Year: 5 | Medium: eBook 6 | Length: 7 | Rating: 8 | DateStarted: <% tp.date.now() %> 9 | DateFinished: 10 | Cover: 11 | Tags: 12 | Country: 13 | --- 14 | 15 | #### Notes -------------------------------------------------------------------------------- /Trackers and Galleries/Current/2023.md: -------------------------------------------------------------------------------- 1 | --- 2 | obsidianUIMode: preview 3 | cssClasses: cards, cards-cover, cards-2-3, table-max, max 4 | --- 5 | `button-bookgallery` 6 | 7 | ```dataviewjs 8 | let BookCount = (dv.pages('"2 Book Log/2023"').where(p => p.Medium == "Book" || p.Medium == "eBook" || p.Medium == "GraphicNovel").length); 9 | 10 | let AudioCount = (dv.pages('"2 Book Log/2023"').where(p => p.Medium == "Audiobook" || p.Medium == "Podcast").length); 11 | 12 | let AcademicCount = (dv.pages('"2 Book Log/2023"').where(p => p.Medium == p.Medium == "AcademicBook" || p.Medium == "AcademicArticle").length); 13 | 14 | let pagesum = 0; 15 | for(let i = 0; i < dv.pages('"2 Book Log/2023"').where(p => p.Medium == "Book" || p.Medium == "eBook" || p.Medium == "GraphicNovel" || p.Medium == p.Medium == "AcademicBook" || p.Medium == "AcademicArticle").length; i++) { 16 | if(dv.pages('"2 Book Log/2023"').where(p => p.Medium == "Book" || p.Medium == "eBook" || p.Medium == "GraphicNovel" || p.Medium == "AcademicBook" || p.Medium == "AcademicArticle" || p.Medium == p.Medium == "AcademicBook" || p.Medium == "AcademicArticle")[i].Length) { 17 | pagesum += dv.pages('"2 Book Log/2023"').where(p => p.Medium == "Book" || p.Medium == "eBook" || p.Medium == "GraphicNovel" || p.Medium == "AcademicBook" || p.Medium == "AcademicArticle")[i].Length; 18 | } 19 | } 20 | 21 | let academicpages = 0; 22 | for(let i = 0; i < dv.pages('"2 Book Log/2023"').where(p => p.Medium == p.Medium == "AcademicBook" || p.Medium == "AcademicArticle").length; i++) { 23 | if(dv.pages('"2 Book Log/2023"').where(p => p.Medium == p.Medium == "AcademicBook" || p.Medium == "AcademicArticle")[i].Length) { 24 | academicpages += dv.pages('"2 Book Log/2023"').where(p => p.Medium == p.Medium == "AcademicBook" || p.Medium == "AcademicArticle")[i].Length; 25 | } 26 | } 27 | 28 | let hoursum = 0; 29 | for(let i = 0; i < dv.pages('"2 Book Log/2023"').where(p => p.Medium == "Audiobook" || p.Medium == "Podcast").length;i++) { 30 | if(dv.pages('"2 Book Log/2023"').where(p => p.Medium == "Audiobook" || p.Medium == "Podcast")[i].Length) { 31 | hoursum += dv.pages('"2 Book Log/2023"').where(p => p.Medium == "Audiobook" || p.Medium == "Podcast")[i].Length; 32 | } 33 | } 34 | 35 | let Grade = 0; 36 | for(let i = 0; i < dv.pages('"2 Book Log/2023"').length;i++) { 37 | if(dv.pages('"2 Book Log/2023"')[i].Rating) { 38 | Grade += dv.pages('"2 Book Log/2023"')[i].Rating; 39 | } 40 | } 41 | let AvgRating = (Grade / (dv.pages('"2 Book Log/2023"').where(p => p.Medium == "Book" || p.Medium == "eBook" || p.Medium == "Audiobook" || p.Medium == "Podcast" || p.Medium == "GraphicNovel" || p.Medium == "Article" || p.Medium == "Chapter" || p.Medium == "Monograph").length)) 42 | 43 | let today = DateTime.now().toFormat("ooo"); 44 | 45 | dv.paragraph("#### This year, I've read " + BookCount + " books and I've listened to " + AudioCount + " audiobooks (of which " + dv.pages('"2 Book Log/2023"').where(p => p.Medium == "Podcast").length + " were podcasts), so " + (BookCount + AudioCount) + " regular books and audiobooks read. And I've read " + (AcademicCount) + " academic articles, monographs, etc, for a total " + (BookCount + AudioCount + AcademicCount) + " things read this year.") 46 | 47 | dv.paragraph("#### I've read " + pagesum + " pages this year, of which " + academicpages + " pages were academic. And I've listened to " + (hoursum.toFixed(1)) + " hours of audiobooks and podcasts.") 48 | 49 | 50 | dv.paragraph("#### The average rating for the overall " + (BookCount + AudioCount) + " books and audiobooks is " + AvgRating.toFixed(1) + " out of 10.") 51 | 52 | dv.paragraph("#### Average book length: " + (pagesum / BookCount).toFixed() + " pages") 53 | 54 | dv.paragraph("#### Average audiobook length: " + (hoursum / AudioCount).toFixed(1) + " hours") 55 | 56 | dv.paragraph("#### Average pages read per day: " + (pagesum / today).toFixed(1) + " pages") 57 | 58 | dv.paragraph("#### Average hours listened per day: " + (hoursum / today).toFixed(2) + " hours — this does not include the fact that most audiobooks are listened to at at least 2x speed") 59 | ``` 60 | 61 | 62 | ### Overall Books (and Audiobooks) read 63 | ``` dataviewjs 64 | var labels = ["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"]; 65 | var colors = [['#ff6384'],['#36a2eb'],['#ffce56'],['#4bc0c0'],['#9966ff'],['#ff9f40']] 66 | var datasets = []; 67 | 68 | for( 69 | let results of dv.pages('"2 Book Log"') 70 | .where(p => p.DateFinished) //or p.DateFinished && p.Pages 71 | .sort(p => p.DateFinished, 'asc') 72 | .groupBy(p => (dv.date(p.DateFinished).toFormat("MMMM yyyy"))) 73 | .sort(ym => ym.rows.DateFinished.first(), 'asc') 74 | .groupBy(ym => (dv.date(ym.rows.DateFinished.first()).year)) 75 | .sort(y => y.key, 'asc') 76 | ) { 77 | let lbl = "Books read in " + results.key; 78 | let backCol = colors[datasets.length%colors.length]; 79 | let bordCol = colors[datasets.length%colors.length]; 80 | let bWidth = 1; 81 | 82 | let innerArray = [0,0,0,0,0,0,0,0,0,0,0,0]; 83 | results.rows.forEach(m => { 84 | let numBooks = dv.array(m.rows).length; 85 | //OR .Pages.array().reduce((s,r) => s + r, 0); 86 | innerArray[m.rows.DateFinished.first().month-1] = numBooks; 87 | }) 88 | 89 | let da = {label: lbl, data: innerArray, backgroundColor: backCol, 90 | borderColor: bordCol, borderWidth: bWidth}; 91 | 92 | datasets.push(da) 93 | } 94 | 95 | const chartData = { 96 | type: 'line', 97 | data: {labels: labels, datasets: datasets}, 98 | options: {scales: {yAxis: {suggestedMin: 0, ticks: {stepSize: 1}}} 99 | }} 100 | window.renderChart(chartData, this.container); 101 | ``` 102 | 103 | ### Three longest books this year 104 | 105 | ```dataview 106 | TABLE without id 107 | ("![](" + Cover + ")") AS "Cover", 108 | P_BookByAuthor + P_MediumIcon + P_FavoriteIcon AS "Title", 109 | Q_YearRating + Q_PagesHours + " || " + Q_FLAG AS "Time and Place", 110 | R_Dates AS "Dates", 111 | S_ReadingTime AS "Reading Time" 112 | 113 | FROM "2 Book Log/2023" 114 | 115 | WHERE Medium != null 116 | SORT DateFinished desc 117 | 118 | 119 | FLATTEN link(file.link, Alias) + " by " + Author AS P_BookByAuthor 120 | FLATTEN choice(contains(tags, "Favorite"), "💛", "") AS P_FavoriteIcon 121 | 122 | FLATTEN { 123 | "Book": " 📖 ", 124 | "Audiobook": " 🎧 ", 125 | "Podcast": " 📻 ", 126 | "eBook": " 📃 ", 127 | "GraphicNovel": " 💬 ", 128 | "AcademicBook": " 📚🎓 ", 129 | "AcademicArticle": " 📰 " 130 | }[Medium] AS P_MediumIcon 131 | 132 | 133 | 134 | FLATTEN DateStarted + " — " + DateFinished AS R_Dates 135 | FLATTEN "(" + choice((DateFinished != DateStarted), (DateFinished - DateStarted).days + " days", "0 days" ) + ")" AS S_ReadingTime 136 | 137 | 138 | 139 | FLATTEN Year + " || " + " ⭐ " + Rating + " || " AS Q_YearRating 140 | 141 | FLATTEN { 142 | "Book": Length + " p", 143 | "Audiobook": Length + " h", 144 | "Podcast": Length + " h", 145 | "eBook": Length + " p", 146 | "GraphicNovel": Length + " p", 147 | "AcademicBook": Length + " p", 148 | "AcademicArticle": Length + " p" 149 | }[Medium] AS Q_PagesHours 150 | 151 | 152 | FLATTEN join(map(split(Country, ", "), (c) => { 153 | AD: "🇦🇩", 154 | AE: "🇦🇪", 155 | AF: "🇦🇫", 156 | AG: "🇦🇬", 157 | AI: "🇦🇮", 158 | AL: "🇦🇱", 159 | AM: "🇦🇲", 160 | AO: "🇦🇴", 161 | AQ: "🇦🇶", 162 | AR: "🇦🇷", 163 | AS: "🇦🇸", 164 | AT: "🇦🇹", 165 | AU: "🇦🇺", 166 | AW: "🇦🇼", 167 | AX: "🇦🇽", 168 | AZ: "🇦🇿", 169 | BA: "🇧🇦", 170 | BB: "🇧🇧", 171 | BD: "🇧🇩", 172 | BE: "🇧🇪", 173 | BF: "🇧🇫", 174 | BG: "🇧🇬", 175 | BH: "🇧🇭", 176 | BI: "🇧🇮", 177 | BJ: "🇧🇯", 178 | BL: "🇧🇱", 179 | BM: "🇧🇲", 180 | BN: "🇧🇳", 181 | BO: "🇧🇴", 182 | BQ: "🇧🇶", 183 | BR: "🇧🇷", 184 | BS: "🇧🇸", 185 | BT: "🇧🇹", 186 | BV: "🇧🇻", 187 | BW: "🇧🇼", 188 | BY: "🇧🇾", 189 | BZ: "🇧🇿", 190 | CA: "🇨🇦", 191 | CC: "🇨🇨", 192 | CD: "🇨🇩", 193 | CF: "🇨🇫", 194 | CG: "🇨🇬", 195 | CH: "🇨🇭", 196 | CI: "🇨🇮", 197 | CK: "🇨🇰", 198 | CL: "🇨🇱", 199 | CM: "🇨🇲", 200 | CN: "🇨🇳", 201 | CO: "🇨🇴", 202 | CR: "🇨🇷", 203 | CU: "🇨🇺", 204 | CV: "🇨🇻", 205 | CW: "🇨🇼", 206 | CX: "🇨🇽", 207 | CY: "🇨🇾", 208 | CYMRU: "🏴󠁧󠁢󠁷󠁬󠁳󠁿", 209 | CZ: "🇨🇿", 210 | DE: "🇩🇪", 211 | DJ: "🇩🇯", 212 | DK: "🇩🇰", 213 | DM: "🇩🇲", 214 | DO: "🇩🇴", 215 | DZ: "🇩🇿", 216 | EC: "🇪🇨", 217 | EE: "🇪🇪", 218 | EG: "🇪🇬", 219 | EH: "🇪🇭", 220 | ENG: "🏴󠁧󠁢󠁥󠁮󠁧󠁿", 221 | ER: "🇪🇷", 222 | ES: "🇪🇸", 223 | ET: "🇪🇹", 224 | FI: "🇫🇮", 225 | FJ: "🇫🇯", 226 | FK: "🇫🇰", 227 | FM: "🇫🇲", 228 | FO: "🇫🇴", 229 | FR: "🇫🇷", 230 | GA: "🇬🇦", 231 | GB: "🇬🇧", 232 | GD: "🇬🇩", 233 | GE: "🇬🇪", 234 | GF: "🇬🇫", 235 | GG: "🇬🇬", 236 | GH: "🇬🇭", 237 | GI: "🇬🇮", 238 | GL: "🇬🇱", 239 | GM: "🇬🇲", 240 | GN: "🇬🇳", 241 | GP: "🇬🇵", 242 | GQ: "🇬🇶", 243 | GR: "🇬🇷", 244 | GS: "🇬🇸", 245 | GT: "🇬🇹", 246 | GU: "🇬🇺", 247 | GW: "🇬🇼", 248 | GY: "🇬🇾", 249 | HK: "🇭🇰", 250 | HM: "🇭🇲", 251 | HN: "🇭🇳", 252 | HR: "🇭🇷", 253 | HT: "🇭🇹", 254 | HU: "🇭🇺", 255 | ID: "🇮🇩", 256 | IE: "🇮🇪", 257 | IL: "🇮🇱", 258 | IM: "🇮🇲", 259 | IN: "🇮🇳", 260 | IO: "🇮🇴", 261 | IQ: "🇮🇶", 262 | IR: "🇮🇷", 263 | IS: "🇮🇸", 264 | IT: "🇮🇹", 265 | JE: "🇯🇪", 266 | JM: "🇯🇲", 267 | JO: "🇯🇴", 268 | JP: "🇯🇵", 269 | KE: "🇰🇪", 270 | KG: "🇰🇬", 271 | KH: "🇰🇭", 272 | KI: "🇰🇮", 273 | KM: "🇰🇲", 274 | KN: "🇰🇳", 275 | KP: "🇰🇵", 276 | KR: "🇰🇷", 277 | KW: "🇰🇼", 278 | KY: "🇰🇾", 279 | KZ: "🇰🇿", 280 | LA: "🇱🇦", 281 | LB: "🇱🇧", 282 | LC: "🇱🇨", 283 | LI: "🇱🇮", 284 | LK: "🇱🇰", 285 | LR: "🇱🇷", 286 | LS: "🇱🇸", 287 | LT: "🇱🇹", 288 | LU: "🇱🇺", 289 | LV: "🇱🇻", 290 | LY: "🇱🇾", 291 | MA: "🇲🇦", 292 | MC: "🇲🇨", 293 | MD: "🇲🇩", 294 | ME: "🇲🇪", 295 | MF: "🇲🇫", 296 | MG: "🇲🇬", 297 | MH: "🇲🇭", 298 | MK: "🇲🇰", 299 | ML: "🇲🇱", 300 | MM: "🇲🇲", 301 | MN: "🇲🇳", 302 | MO: "🇲🇴", 303 | MP: "🇲🇵", 304 | MQ: "🇲🇶", 305 | MR: "🇲🇷", 306 | MS: "🇲🇸", 307 | MT: "🇲🇹", 308 | MU: "🇲🇺", 309 | MV: "🇲🇻", 310 | MW: "🇲🇼", 311 | MX: "🇲🇽", 312 | MY: "🇲🇾", 313 | MZ: "🇲🇿", 314 | NA: "🇳🇦", 315 | NC: "🇳🇨", 316 | NE: "🇳🇪", 317 | NF: "🇳🇫", 318 | NG: "🇳🇬", 319 | NI: "🇳🇮", 320 | NL: "🇳🇱", 321 | NO: "🇳🇴", 322 | NP: "🇳🇵", 323 | NR: "🇳🇷", 324 | NU: "🇳🇺", 325 | NZ: "🇳🇿", 326 | OM: "🇴🇲", 327 | PA: "🇵🇦", 328 | PE: "🇵🇪", 329 | PF: "🇵🇫", 330 | PG: "🇵🇬", 331 | PH: "🇵🇭", 332 | PK: "🇵🇰", 333 | PL: "🇵🇱", 334 | PM: "🇵🇲", 335 | PN: "🇵🇳", 336 | PR: "🇵🇷", 337 | PS: "🇵🇸", 338 | PT: "🇵🇹", 339 | PW: "🇵🇼", 340 | PY: "🇵🇾", 341 | QA: "🇶🇦", 342 | RE: "🇷🇪", 343 | RO: "🇷🇴", 344 | RS: "🇷🇸", 345 | RU: "🇷🇺", 346 | RW: "🇷🇼", 347 | SA: "🇸🇦", 348 | SB: "🇸🇧", 349 | SC: "🇸🇨", 350 | SCOT: "🏴󠁧󠁢󠁳󠁣󠁴󠁿", 351 | SD: "🇸🇩", 352 | SE: "🇸🇪", 353 | SG: "🇸🇬", 354 | SH: "🇸🇭", 355 | SI: "🇸🇮", 356 | SJ: "🇸🇯", 357 | SK: "🇸🇰", 358 | SL: "🇸🇱", 359 | SM: "🇸🇲", 360 | SN: "🇸🇳", 361 | SO: "🇸🇴", 362 | SR: "🇸🇷", 363 | SS: "🇸🇸", 364 | ST: "🇸🇹", 365 | SV: "🇸🇻", 366 | SX: "🇸🇽", 367 | SY: "🇸🇾", 368 | SZ: "🇸🇿", 369 | TC: "🇹🇨", 370 | TD: "🇹🇩", 371 | TF: "🇹🇫", 372 | TG: "🇹🇬", 373 | TH: "🇹🇭", 374 | TJ: "🇹🇯", 375 | TK: "🇹🇰", 376 | TL: "🇹🇱", 377 | TM: "🇹🇲", 378 | TN: "🇹🇳", 379 | TO: "🇹🇴", 380 | TR: "🇹🇷", 381 | TT: "🇹🇹", 382 | TV: "🇹🇻", 383 | TW: "🇹🇼", 384 | TZ: "🇹🇿", 385 | UA: "🇺🇦", 386 | UG: "🇺🇬", 387 | UM: "🇺🇲", 388 | US: "🇺🇸", 389 | UY: "🇺🇾", 390 | UZ: "🇺🇿", 391 | VA: "🇻🇦", 392 | VC: "🇻🇨", 393 | VE: "🇻🇪", 394 | VG: "🇻🇬", 395 | VI: "🇻🇮", 396 | VN: "🇻🇳", 397 | VU: "🇻🇺", 398 | WF: "🇼🇫", 399 | WS: "🇼🇸", 400 | YE: "🇾🇪", 401 | YT: "🇾🇹", 402 | ZA: "🇿🇦", 403 | ZM: "🇿🇲", 404 | ZW: "🇿🇼" 405 | }[c])) AS Q_FLAG 406 | WHERE Medium = "Book" OR Medium = "eBook" OR Medium = "GraphicNovel" 407 | SORT Length desc 408 | LIMIT 3 409 | ``` 410 | 411 | ### Three longest audiobooks this year 412 | ```dataview 413 | TABLE without id 414 | ("![](" + Cover + ")") AS "Cover", 415 | P_BookByAuthor + P_MediumIcon + P_FavoriteIcon AS "Title", 416 | Q_YearRating + Q_PagesHours + " || " + Q_FLAG AS "Time and Place", 417 | R_Dates AS "Dates", 418 | S_ReadingTime AS "Reading Time" 419 | 420 | FROM "2 Book Log/2023" 421 | 422 | WHERE Medium != null 423 | SORT DateFinished desc 424 | 425 | 426 | FLATTEN link(file.link, Alias) + " by " + Author AS P_BookByAuthor 427 | FLATTEN choice(contains(tags, "Favorite"), "💛", "") AS P_FavoriteIcon 428 | 429 | FLATTEN { 430 | "Book": " 📖 ", 431 | "Audiobook": " 🎧 ", 432 | "Podcast": " 📻 ", 433 | "eBook": " 📃 ", 434 | "GraphicNovel": " 💬 ", 435 | "AcademicBook": " 📚🎓 ", 436 | "AcademicArticle": " 📰 " 437 | }[Medium] AS P_MediumIcon 438 | 439 | 440 | 441 | FLATTEN DateStarted + " — " + DateFinished AS R_Dates 442 | FLATTEN "(" + choice((DateFinished != DateStarted), (DateFinished - DateStarted).days + " days", "0 days" ) + ")" AS S_ReadingTime 443 | 444 | 445 | 446 | FLATTEN Year + " || " + " ⭐ " + Rating + " || " AS Q_YearRating 447 | 448 | FLATTEN { 449 | "Book": Length + " p", 450 | "Audiobook": Length + " h", 451 | "Podcast": Length + " h", 452 | "eBook": Length + " p", 453 | "GraphicNovel": Length + " p", 454 | "AcademicBook": Length + " p", 455 | "AcademicArticle": Length + " p" 456 | }[Medium] AS Q_PagesHours 457 | 458 | 459 | FLATTEN join(map(split(Country, ", "), (c) => { 460 | AD: "🇦🇩", 461 | AE: "🇦🇪", 462 | AF: "🇦🇫", 463 | AG: "🇦🇬", 464 | AI: "🇦🇮", 465 | AL: "🇦🇱", 466 | AM: "🇦🇲", 467 | AO: "🇦🇴", 468 | AQ: "🇦🇶", 469 | AR: "🇦🇷", 470 | AS: "🇦🇸", 471 | AT: "🇦🇹", 472 | AU: "🇦🇺", 473 | AW: "🇦🇼", 474 | AX: "🇦🇽", 475 | AZ: "🇦🇿", 476 | BA: "🇧🇦", 477 | BB: "🇧🇧", 478 | BD: "🇧🇩", 479 | BE: "🇧🇪", 480 | BF: "🇧🇫", 481 | BG: "🇧🇬", 482 | BH: "🇧🇭", 483 | BI: "🇧🇮", 484 | BJ: "🇧🇯", 485 | BL: "🇧🇱", 486 | BM: "🇧🇲", 487 | BN: "🇧🇳", 488 | BO: "🇧🇴", 489 | BQ: "🇧🇶", 490 | BR: "🇧🇷", 491 | BS: "🇧🇸", 492 | BT: "🇧🇹", 493 | BV: "🇧🇻", 494 | BW: "🇧🇼", 495 | BY: "🇧🇾", 496 | BZ: "🇧🇿", 497 | CA: "🇨🇦", 498 | CC: "🇨🇨", 499 | CD: "🇨🇩", 500 | CF: "🇨🇫", 501 | CG: "🇨🇬", 502 | CH: "🇨🇭", 503 | CI: "🇨🇮", 504 | CK: "🇨🇰", 505 | CL: "🇨🇱", 506 | CM: "🇨🇲", 507 | CN: "🇨🇳", 508 | CO: "🇨🇴", 509 | CR: "🇨🇷", 510 | CU: "🇨🇺", 511 | CV: "🇨🇻", 512 | CW: "🇨🇼", 513 | CX: "🇨🇽", 514 | CY: "🇨🇾", 515 | CYMRU: "🏴󠁧󠁢󠁷󠁬󠁳󠁿", 516 | CZ: "🇨🇿", 517 | DE: "🇩🇪", 518 | DJ: "🇩🇯", 519 | DK: "🇩🇰", 520 | DM: "🇩🇲", 521 | DO: "🇩🇴", 522 | DZ: "🇩🇿", 523 | EC: "🇪🇨", 524 | EE: "🇪🇪", 525 | EG: "🇪🇬", 526 | EH: "🇪🇭", 527 | ENG: "🏴󠁧󠁢󠁥󠁮󠁧󠁿", 528 | ER: "🇪🇷", 529 | ES: "🇪🇸", 530 | ET: "🇪🇹", 531 | FI: "🇫🇮", 532 | FJ: "🇫🇯", 533 | FK: "🇫🇰", 534 | FM: "🇫🇲", 535 | FO: "🇫🇴", 536 | FR: "🇫🇷", 537 | GA: "🇬🇦", 538 | GB: "🇬🇧", 539 | GD: "🇬🇩", 540 | GE: "🇬🇪", 541 | GF: "🇬🇫", 542 | GG: "🇬🇬", 543 | GH: "🇬🇭", 544 | GI: "🇬🇮", 545 | GL: "🇬🇱", 546 | GM: "🇬🇲", 547 | GN: "🇬🇳", 548 | GP: "🇬🇵", 549 | GQ: "🇬🇶", 550 | GR: "🇬🇷", 551 | GS: "🇬🇸", 552 | GT: "🇬🇹", 553 | GU: "🇬🇺", 554 | GW: "🇬🇼", 555 | GY: "🇬🇾", 556 | HK: "🇭🇰", 557 | HM: "🇭🇲", 558 | HN: "🇭🇳", 559 | HR: "🇭🇷", 560 | HT: "🇭🇹", 561 | HU: "🇭🇺", 562 | ID: "🇮🇩", 563 | IE: "🇮🇪", 564 | IL: "🇮🇱", 565 | IM: "🇮🇲", 566 | IN: "🇮🇳", 567 | IO: "🇮🇴", 568 | IQ: "🇮🇶", 569 | IR: "🇮🇷", 570 | IS: "🇮🇸", 571 | IT: "🇮🇹", 572 | JE: "🇯🇪", 573 | JM: "🇯🇲", 574 | JO: "🇯🇴", 575 | JP: "🇯🇵", 576 | KE: "🇰🇪", 577 | KG: "🇰🇬", 578 | KH: "🇰🇭", 579 | KI: "🇰🇮", 580 | KM: "🇰🇲", 581 | KN: "🇰🇳", 582 | KP: "🇰🇵", 583 | KR: "🇰🇷", 584 | KW: "🇰🇼", 585 | KY: "🇰🇾", 586 | KZ: "🇰🇿", 587 | LA: "🇱🇦", 588 | LB: "🇱🇧", 589 | LC: "🇱🇨", 590 | LI: "🇱🇮", 591 | LK: "🇱🇰", 592 | LR: "🇱🇷", 593 | LS: "🇱🇸", 594 | LT: "🇱🇹", 595 | LU: "🇱🇺", 596 | LV: "🇱🇻", 597 | LY: "🇱🇾", 598 | MA: "🇲🇦", 599 | MC: "🇲🇨", 600 | MD: "🇲🇩", 601 | ME: "🇲🇪", 602 | MF: "🇲🇫", 603 | MG: "🇲🇬", 604 | MH: "🇲🇭", 605 | MK: "🇲🇰", 606 | ML: "🇲🇱", 607 | MM: "🇲🇲", 608 | MN: "🇲🇳", 609 | MO: "🇲🇴", 610 | MP: "🇲🇵", 611 | MQ: "🇲🇶", 612 | MR: "🇲🇷", 613 | MS: "🇲🇸", 614 | MT: "🇲🇹", 615 | MU: "🇲🇺", 616 | MV: "🇲🇻", 617 | MW: "🇲🇼", 618 | MX: "🇲🇽", 619 | MY: "🇲🇾", 620 | MZ: "🇲🇿", 621 | NA: "🇳🇦", 622 | NC: "🇳🇨", 623 | NE: "🇳🇪", 624 | NF: "🇳🇫", 625 | NG: "🇳🇬", 626 | NI: "🇳🇮", 627 | NL: "🇳🇱", 628 | NO: "🇳🇴", 629 | NP: "🇳🇵", 630 | NR: "🇳🇷", 631 | NU: "🇳🇺", 632 | NZ: "🇳🇿", 633 | OM: "🇴🇲", 634 | PA: "🇵🇦", 635 | PE: "🇵🇪", 636 | PF: "🇵🇫", 637 | PG: "🇵🇬", 638 | PH: "🇵🇭", 639 | PK: "🇵🇰", 640 | PL: "🇵🇱", 641 | PM: "🇵🇲", 642 | PN: "🇵🇳", 643 | PR: "🇵🇷", 644 | PS: "🇵🇸", 645 | PT: "🇵🇹", 646 | PW: "🇵🇼", 647 | PY: "🇵🇾", 648 | QA: "🇶🇦", 649 | RE: "🇷🇪", 650 | RO: "🇷🇴", 651 | RS: "🇷🇸", 652 | RU: "🇷🇺", 653 | RW: "🇷🇼", 654 | SA: "🇸🇦", 655 | SB: "🇸🇧", 656 | SC: "🇸🇨", 657 | SCOT: "🏴󠁧󠁢󠁳󠁣󠁴󠁿", 658 | SD: "🇸🇩", 659 | SE: "🇸🇪", 660 | SG: "🇸🇬", 661 | SH: "🇸🇭", 662 | SI: "🇸🇮", 663 | SJ: "🇸🇯", 664 | SK: "🇸🇰", 665 | SL: "🇸🇱", 666 | SM: "🇸🇲", 667 | SN: "🇸🇳", 668 | SO: "🇸🇴", 669 | SR: "🇸🇷", 670 | SS: "🇸🇸", 671 | ST: "🇸🇹", 672 | SV: "🇸🇻", 673 | SX: "🇸🇽", 674 | SY: "🇸🇾", 675 | SZ: "🇸🇿", 676 | TC: "🇹🇨", 677 | TD: "🇹🇩", 678 | TF: "🇹🇫", 679 | TG: "🇹🇬", 680 | TH: "🇹🇭", 681 | TJ: "🇹🇯", 682 | TK: "🇹🇰", 683 | TL: "🇹🇱", 684 | TM: "🇹🇲", 685 | TN: "🇹🇳", 686 | TO: "🇹🇴", 687 | TR: "🇹🇷", 688 | TT: "🇹🇹", 689 | TV: "🇹🇻", 690 | TW: "🇹🇼", 691 | TZ: "🇹🇿", 692 | UA: "🇺🇦", 693 | UG: "🇺🇬", 694 | UM: "🇺🇲", 695 | US: "🇺🇸", 696 | UY: "🇺🇾", 697 | UZ: "🇺🇿", 698 | VA: "🇻🇦", 699 | VC: "🇻🇨", 700 | VE: "🇻🇪", 701 | VG: "🇻🇬", 702 | VI: "🇻🇮", 703 | VN: "🇻🇳", 704 | VU: "🇻🇺", 705 | WF: "🇼🇫", 706 | WS: "🇼🇸", 707 | YE: "🇾🇪", 708 | YT: "🇾🇹", 709 | ZA: "🇿🇦", 710 | ZM: "🇿🇲", 711 | ZW: "🇿🇼" 712 | }[c])) AS Q_FLAG 713 | WHERE Medium = "Audiobook" OR Medium = "Podcast" 714 | SORT Length desc 715 | LIMIT 3 716 | ``` 717 | 718 | 719 | ### Gallery 720 | ```dataview 721 | TABLE without id 722 | ("![](" + Cover + ")") AS "Cover", 723 | P_BookByAuthor + P_MediumIcon + P_FavoriteIcon AS "Title", 724 | Q_YearRating + Q_PagesHours + " || " + Q_FLAG AS "Time and Place", 725 | R_Dates AS "Dates", 726 | "(" + S_ReadingTime + " || " + S_ReadingSpeed + ")" AS "Reading Time" 727 | 728 | FROM "2 Book Log/2023" 729 | 730 | WHERE Medium != null 731 | SORT DateFinished desc 732 | 733 | 734 | FLATTEN link(file.link, Alias) + " by " + Author AS P_BookByAuthor 735 | FLATTEN choice(contains(tags, "Favorite"), "💛", "") AS P_FavoriteIcon 736 | 737 | FLATTEN { 738 | "Book": " 📖 ", 739 | "Audiobook": " 🎧 ", 740 | "Podcast": " 📻 ", 741 | "eBook": " 📃 ", 742 | "GraphicNovel": " 💬 ", 743 | "AcademicBook": " 📚🎓 ", 744 | "AcademicArticle": " 📰 " 745 | }[Medium] AS P_MediumIcon 746 | 747 | 748 | FLATTEN DateStarted + " — " + DateFinished AS R_Dates 749 | 750 | FLATTEN choice(((DateFinished - DateStarted).days = 1), "1 day", choice((DateFinished != DateStarted), (DateFinished - DateStarted).days + " days", "0 days" )) AS S_ReadingTime 751 | 752 | 753 | FLATTEN { 754 | "Book": round(choice((DateFinished = DateStarted), Length, (Length / (DateFinished - DateStarted).days)), 1) + " p/d", 755 | "Audiobook": round(choice((DateFinished = DateStarted), Length, (Length / (DateFinished - DateStarted).days)), 2) + " h/d", 756 | "Podcast": round(choice((DateFinished = DateStarted), Length, (Length / (DateFinished - DateStarted).days)), 2)+ " h/d", 757 | "eBook": round(choice((DateFinished = DateStarted), Length, (Length / (DateFinished - DateStarted).days)), 1) + " p/d", 758 | "GraphicNovel": round(choice((DateFinished = DateStarted), Length, (Length / (DateFinished - DateStarted).days)), 1) + " p/d", 759 | "AcademicBook": round(choice((DateFinished = DateStarted), Length, (Length / (DateFinished - DateStarted).days)), 1) + " p/d", 760 | "AcademicArticle": round(choice((DateFinished = DateStarted), Length, (Length / (DateFinished - DateStarted).days)), 1) + " p/d" 761 | }[Medium] AS S_ReadingSpeed 762 | 763 | FLATTEN Year + " || " + " ⭐ " + Rating + " || " AS Q_YearRating 764 | 765 | FLATTEN { 766 | "Book": Length + " p", 767 | "Audiobook": Length + " h", 768 | "Podcast": Length + " h", 769 | "eBook": Length + " p", 770 | "GraphicNovel": Length + " p", 771 | "AcademicBook": Length + " p", 772 | "AcademicArticle": Length + " p" 773 | }[Medium] AS Q_PagesHours 774 | 775 | 776 | FLATTEN join(map(split(Country, ", "), (c) => { 777 | AD: "🇦🇩", 778 | AE: "🇦🇪", 779 | AF: "🇦🇫", 780 | AG: "🇦🇬", 781 | AI: "🇦🇮", 782 | AL: "🇦🇱", 783 | AM: "🇦🇲", 784 | AO: "🇦🇴", 785 | AQ: "🇦🇶", 786 | AR: "🇦🇷", 787 | AS: "🇦🇸", 788 | AT: "🇦🇹", 789 | AU: "🇦🇺", 790 | AW: "🇦🇼", 791 | AX: "🇦🇽", 792 | AZ: "🇦🇿", 793 | BA: "🇧🇦", 794 | BB: "🇧🇧", 795 | BD: "🇧🇩", 796 | BE: "🇧🇪", 797 | BF: "🇧🇫", 798 | BG: "🇧🇬", 799 | BH: "🇧🇭", 800 | BI: "🇧🇮", 801 | BJ: "🇧🇯", 802 | BL: "🇧🇱", 803 | BM: "🇧🇲", 804 | BN: "🇧🇳", 805 | BO: "🇧🇴", 806 | BQ: "🇧🇶", 807 | BR: "🇧🇷", 808 | BS: "🇧🇸", 809 | BT: "🇧🇹", 810 | BV: "🇧🇻", 811 | BW: "🇧🇼", 812 | BY: "🇧🇾", 813 | BZ: "🇧🇿", 814 | CA: "🇨🇦", 815 | CC: "🇨🇨", 816 | CD: "🇨🇩", 817 | CF: "🇨🇫", 818 | CG: "🇨🇬", 819 | CH: "🇨🇭", 820 | CI: "🇨🇮", 821 | CK: "🇨🇰", 822 | CL: "🇨🇱", 823 | CM: "🇨🇲", 824 | CN: "🇨🇳", 825 | CO: "🇨🇴", 826 | CR: "🇨🇷", 827 | CU: "🇨🇺", 828 | CV: "🇨🇻", 829 | CW: "🇨🇼", 830 | CX: "🇨🇽", 831 | CY: "🇨🇾", 832 | CYMRU: "🏴󠁧󠁢󠁷󠁬󠁳󠁿", 833 | CZ: "🇨🇿", 834 | DE: "🇩🇪", 835 | DJ: "🇩🇯", 836 | DK: "🇩🇰", 837 | DM: "🇩🇲", 838 | DO: "🇩🇴", 839 | DZ: "🇩🇿", 840 | EC: "🇪🇨", 841 | EE: "🇪🇪", 842 | EG: "🇪🇬", 843 | EH: "🇪🇭", 844 | ENG: "🏴󠁧󠁢󠁥󠁮󠁧󠁿", 845 | ER: "🇪🇷", 846 | ES: "🇪🇸", 847 | ET: "🇪🇹", 848 | FI: "🇫🇮", 849 | FJ: "🇫🇯", 850 | FK: "🇫🇰", 851 | FM: "🇫🇲", 852 | FO: "🇫🇴", 853 | FR: "🇫🇷", 854 | GA: "🇬🇦", 855 | GB: "🇬🇧", 856 | GD: "🇬🇩", 857 | GE: "🇬🇪", 858 | GF: "🇬🇫", 859 | GG: "🇬🇬", 860 | GH: "🇬🇭", 861 | GI: "🇬🇮", 862 | GL: "🇬🇱", 863 | GM: "🇬🇲", 864 | GN: "🇬🇳", 865 | GP: "🇬🇵", 866 | GQ: "🇬🇶", 867 | GR: "🇬🇷", 868 | GS: "🇬🇸", 869 | GT: "🇬🇹", 870 | GU: "🇬🇺", 871 | GW: "🇬🇼", 872 | GY: "🇬🇾", 873 | HK: "🇭🇰", 874 | HM: "🇭🇲", 875 | HN: "🇭🇳", 876 | HR: "🇭🇷", 877 | HT: "🇭🇹", 878 | HU: "🇭🇺", 879 | ID: "🇮🇩", 880 | IE: "🇮🇪", 881 | IL: "🇮🇱", 882 | IM: "🇮🇲", 883 | IN: "🇮🇳", 884 | IO: "🇮🇴", 885 | IQ: "🇮🇶", 886 | IR: "🇮🇷", 887 | IS: "🇮🇸", 888 | IT: "🇮🇹", 889 | JE: "🇯🇪", 890 | JM: "🇯🇲", 891 | JO: "🇯🇴", 892 | JP: "🇯🇵", 893 | KE: "🇰🇪", 894 | KG: "🇰🇬", 895 | KH: "🇰🇭", 896 | KI: "🇰🇮", 897 | KM: "🇰🇲", 898 | KN: "🇰🇳", 899 | KP: "🇰🇵", 900 | KR: "🇰🇷", 901 | KW: "🇰🇼", 902 | KY: "🇰🇾", 903 | KZ: "🇰🇿", 904 | LA: "🇱🇦", 905 | LB: "🇱🇧", 906 | LC: "🇱🇨", 907 | LI: "🇱🇮", 908 | LK: "🇱🇰", 909 | LR: "🇱🇷", 910 | LS: "🇱🇸", 911 | LT: "🇱🇹", 912 | LU: "🇱🇺", 913 | LV: "🇱🇻", 914 | LY: "🇱🇾", 915 | MA: "🇲🇦", 916 | MC: "🇲🇨", 917 | MD: "🇲🇩", 918 | ME: "🇲🇪", 919 | MF: "🇲🇫", 920 | MG: "🇲🇬", 921 | MH: "🇲🇭", 922 | MK: "🇲🇰", 923 | ML: "🇲🇱", 924 | MM: "🇲🇲", 925 | MN: "🇲🇳", 926 | MO: "🇲🇴", 927 | MP: "🇲🇵", 928 | MQ: "🇲🇶", 929 | MR: "🇲🇷", 930 | MS: "🇲🇸", 931 | MT: "🇲🇹", 932 | MU: "🇲🇺", 933 | MV: "🇲🇻", 934 | MW: "🇲🇼", 935 | MX: "🇲🇽", 936 | MY: "🇲🇾", 937 | MZ: "🇲🇿", 938 | NA: "🇳🇦", 939 | NC: "🇳🇨", 940 | NE: "🇳🇪", 941 | NF: "🇳🇫", 942 | NG: "🇳🇬", 943 | NI: "🇳🇮", 944 | NL: "🇳🇱", 945 | NO: "🇳🇴", 946 | NP: "🇳🇵", 947 | NR: "🇳🇷", 948 | NU: "🇳🇺", 949 | NZ: "🇳🇿", 950 | OM: "🇴🇲", 951 | PA: "🇵🇦", 952 | PE: "🇵🇪", 953 | PF: "🇵🇫", 954 | PG: "🇵🇬", 955 | PH: "🇵🇭", 956 | PK: "🇵🇰", 957 | PL: "🇵🇱", 958 | PM: "🇵🇲", 959 | PN: "🇵🇳", 960 | PR: "🇵🇷", 961 | PS: "🇵🇸", 962 | PT: "🇵🇹", 963 | PW: "🇵🇼", 964 | PY: "🇵🇾", 965 | QA: "🇶🇦", 966 | RE: "🇷🇪", 967 | RO: "🇷🇴", 968 | RS: "🇷🇸", 969 | RU: "🇷🇺", 970 | RW: "🇷🇼", 971 | SA: "🇸🇦", 972 | SB: "🇸🇧", 973 | SC: "🇸🇨", 974 | SCOT: "🏴󠁧󠁢󠁳󠁣󠁴󠁿", 975 | SD: "🇸🇩", 976 | SE: "🇸🇪", 977 | SG: "🇸🇬", 978 | SH: "🇸🇭", 979 | SI: "🇸🇮", 980 | SJ: "🇸🇯", 981 | SK: "🇸🇰", 982 | SL: "🇸🇱", 983 | SM: "🇸🇲", 984 | SN: "🇸🇳", 985 | SO: "🇸🇴", 986 | SR: "🇸🇷", 987 | SS: "🇸🇸", 988 | ST: "🇸🇹", 989 | SV: "🇸🇻", 990 | SX: "🇸🇽", 991 | SY: "🇸🇾", 992 | SZ: "🇸🇿", 993 | TC: "🇹🇨", 994 | TD: "🇹🇩", 995 | TF: "🇹🇫", 996 | TG: "🇹🇬", 997 | TH: "🇹🇭", 998 | TJ: "🇹🇯", 999 | TK: "🇹🇰", 1000 | TL: "🇹🇱", 1001 | TM: "🇹🇲", 1002 | TN: "🇹🇳", 1003 | TO: "🇹🇴", 1004 | TR: "🇹🇷", 1005 | TT: "🇹🇹", 1006 | TV: "🇹🇻", 1007 | TW: "🇹🇼", 1008 | TZ: "🇹🇿", 1009 | UA: "🇺🇦", 1010 | UG: "🇺🇬", 1011 | UM: "🇺🇲", 1012 | US: "🇺🇸", 1013 | UY: "🇺🇾", 1014 | UZ: "🇺🇿", 1015 | VA: "🇻🇦", 1016 | VC: "🇻🇨", 1017 | VE: "🇻🇪", 1018 | VG: "🇻🇬", 1019 | VI: "🇻🇮", 1020 | VN: "🇻🇳", 1021 | VU: "🇻🇺", 1022 | WF: "🇼🇫", 1023 | WS: "🇼🇸", 1024 | YE: "🇾🇪", 1025 | YT: "🇾🇹", 1026 | ZA: "🇿🇦", 1027 | ZM: "🇿🇲", 1028 | ZW: "🇿🇼" 1029 | }[c])) AS Q_FLAG 1030 | 1031 | 1032 | ``` 1033 | 1034 | -------------------------------------------------------------------------------- /Trackers and Galleries/Current/Homepage.md: -------------------------------------------------------------------------------- 1 | --- 2 | cssClasses: myhome, cards, cards-cover, cards-2-3 3 | banner: "Trackers and Galleries/Things/Attachments/Banners/home-books.jpg" 4 | obsidianUIMode: preview 5 | banner_y: 0.22691 6 | --- 7 | # My Books and Stuff 8 | - **Books** 9 | 10 | - [New Book](obsidian://advanced-uri?vault=Books%20and%20Movies&commandid=obsidian-book-search-plugin%253Aopen-book-search-modal) 11 | - [[Book Gallery since 2020|Gallery]] 12 | - [[0 Currently Reading|Current]] 13 | - [[Reading Stats|Stats]] 14 | - [[2020]] 15 | - [[2021]] 16 | - [[2022]] 17 | - [[2023]] 18 | - **Movies and Games** 19 | - [New Movie](obsidian://advanced-uri?vault=Books%20and%20Movies&commandid=quickadd%253Achoice%253Ad33aa448-645b-4990-992e-429df752fef5) 20 | - [[Movies and Games Gallery|Movies]] 21 | - [[Movie and Games Stats|Stats]] 22 | - [[Game Gallery|Games]] 23 | 24 | 25 | #### Latest Books Finished 26 | ```dataview 27 | TABLE without id 28 | ("![](" + Cover + ")") as Cover, 29 | link(file.link, Alias) + " by " + Author + (choice(medium = "Book", " 📖 ", choice(medium = "Audiobook", " 🎧 ", choice(medium = "Podcast", " 📻 ", choice(medium = "eBook", " 📃 ", ""))))) + choice(contains(tags, "Favorite"), "💛", "") as Title, 30 | Year + " || " + " ⭐ " + Rating + " || " + (choice(medium = "Book", Length + " p", choice(medium = "Audiobook", Length + " h", choice(medium = "Podcast", Length + " h", choice(medium = "eBook", Length + " p", ""))))) + " || " + Country as "Time and Place" 31 | FROM "2 Book Log" 32 | WHERE Medium = "Book" OR Medium = "eBook" OR Medium = "GraphicNovel" OR Medium = "Audiobook" OR Medium = "Podcast" OR Medium = "AcademicBook" OR Medium = "AcademicArticle" 33 | SORT DateFinished desc 34 | LIMIT 3 35 | ``` 36 | 37 | #### Last Book added 38 | ```dataview 39 | TABLE without id 40 | ("![](" + Cover + ")") as Cover, 41 | link(file.link, Alias) + " by " + Author + (choice(medium = "Book", " 📖 ", choice(medium = "Audiobook", " 🎧 ", choice(medium = "Podcast", " 📻 ", choice(medium = "eBook", " 📃 ", ""))))) + choice(contains(tags, "Favorite"), "💛", "") as Title, 42 | Year + " || " + " ⭐ " + Rating + " || " + (choice(medium = "Book", Length + " p", choice(medium = "Audiobook", Length + " h", choice(medium = "Podcast", Length + " h", choice(medium = "eBook", Length + " p", ""))))) + " || " + Country as "Time and Place" 43 | FROM "1 Currently Reading" 44 | WHERE Medium = "Book" OR Medium = "eBook" OR Medium = "GraphicNovel" OR Medium = "Audiobook" OR Medium = "Podcast" OR Medium = "AcademicBook" OR Medium = "AcademicArticle" 45 | SORT DateStarted desc 46 | LIMIT 3 47 | ``` 48 | 49 | 50 | #### Newest Movies watched 51 | ```dataview 52 | TABLE without id 53 | ("![](" + Cover + ")") as Cover, 54 | link(file.link, Alias) + " by " + Director + (choice(medium = "Movie", " 🎞️ ", choice(medium = "TV", " 📺 ", choice(medium = "Game", " 🎮 ", choice(medium = "eBook", " 📃 ", ""))))) + choice(contains(tags, "Favorite"), "💛", "") as Title, 55 | Year + " || " + " ⭐ " + Rating + " || " + (choice(medium = "Book", Length + " p", choice(medium = "Audiobook", Length + " h", choice(medium = "Podcast", Length + " h", choice(medium = "eBook", Length + " p", ""))))) + " || " + Country as "Time and Place" 56 | FROM "3 Movies and Games" 57 | WHERE Medium = "Movie" OR Medium = "TV" OR Medium = "Game" 58 | SORT DateFinished desc 59 | LIMIT 3 60 | ``` 61 | -------------------------------------------------------------------------------- /Trackers and Galleries/Things/Attachments/Banners/arcade.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ReaderGuy42/ReadingIsFun/8f18c9ae94eb8ee83b4cd561fd47bea2ea17c739/Trackers and Galleries/Things/Attachments/Banners/arcade.jpg -------------------------------------------------------------------------------- /Trackers and Galleries/Things/Attachments/Banners/book-banner.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ReaderGuy42/ReadingIsFun/8f18c9ae94eb8ee83b4cd561fd47bea2ea17c739/Trackers and Galleries/Things/Attachments/Banners/book-banner.gif -------------------------------------------------------------------------------- /Trackers and Galleries/Things/Attachments/Banners/daily-note-banner.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ReaderGuy42/ReadingIsFun/8f18c9ae94eb8ee83b4cd561fd47bea2ea17c739/Trackers and Galleries/Things/Attachments/Banners/daily-note-banner.gif -------------------------------------------------------------------------------- /Trackers and Galleries/Things/Attachments/Banners/home-books.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ReaderGuy42/ReadingIsFun/8f18c9ae94eb8ee83b4cd561fd47bea2ea17c739/Trackers and Galleries/Things/Attachments/Banners/home-books.jpg -------------------------------------------------------------------------------- /Trackers and Galleries/Things/Attachments/Banners/library.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ReaderGuy42/ReadingIsFun/8f18c9ae94eb8ee83b4cd561fd47bea2ea17c739/Trackers and Galleries/Things/Attachments/Banners/library.jpg -------------------------------------------------------------------------------- /Trackers and Galleries/Things/Attachments/Banners/other-library.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ReaderGuy42/ReadingIsFun/8f18c9ae94eb8ee83b4cd561fd47bea2ea17c739/Trackers and Galleries/Things/Attachments/Banners/other-library.jpg -------------------------------------------------------------------------------- /Trackers and Galleries/Things/Attachments/Banners/rainy-day-bird-2.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ReaderGuy42/ReadingIsFun/8f18c9ae94eb8ee83b4cd561fd47bea2ea17c739/Trackers and Galleries/Things/Attachments/Banners/rainy-day-bird-2.gif -------------------------------------------------------------------------------- /Trackers and Galleries/Things/Attachments/Banners/rainy-day-bird.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ReaderGuy42/ReadingIsFun/8f18c9ae94eb8ee83b4cd561fd47bea2ea17c739/Trackers and Galleries/Things/Attachments/Banners/rainy-day-bird.gif -------------------------------------------------------------------------------- /Trackers and Galleries/Things/Attachments/Banners/videostore.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ReaderGuy42/ReadingIsFun/8f18c9ae94eb8ee83b4cd561fd47bea2ea17c739/Trackers and Galleries/Things/Attachments/Banners/videostore.jpg -------------------------------------------------------------------------------- /Trackers and Galleries/Things/Attachments/Images/scatter.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ReaderGuy42/ReadingIsFun/8f18c9ae94eb8ee83b4cd561fd47bea2ea17c739/Trackers and Galleries/Things/Attachments/Images/scatter.png -------------------------------------------------------------------------------- /Trackers and Galleries/Things/Attachments/Images/years.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ReaderGuy42/ReadingIsFun/8f18c9ae94eb8ee83b4cd561fd47bea2ea17c739/Trackers and Galleries/Things/Attachments/Images/years.png -------------------------------------------------------------------------------- /Trackers and Galleries/Things/Buttons.md: -------------------------------------------------------------------------------- 1 | ```button 2 | name Audiobooks 3 | type link 4 | action obsidian://open?vault=Books%20and%20Movies&file=Trackers%20and%20Galleries%2FZ%20General%2FAll%20Audiobooks 5 | color blue 6 | ``` 7 | ^button-onlyaudio 8 | 9 | ```button 10 | name Books 11 | type link 12 | action obsidian://open?vault=Books%20and%20Movies&file=Trackers%20and%20Galleries%2FZ%20General%2FAll%20Books 13 | color blue 14 | ``` 15 | ^button-onlybooks 16 | 17 | ```button 18 | name 2020 19 | type link 20 | action obsidian://open?vault=Books%20and%20Movies&file=Trackers%20and%20Galleries%2FYears%20Past%2F2020 21 | color red 22 | ``` 23 | ^button-2020 24 | 25 | ```button 26 | name 2021 27 | type link 28 | action obsidian://open?vault=Books%20and%20Movies&file=Trackers%20and%20Galleries%2FYears%20Past%2F2021 29 | color red 30 | ``` 31 | ^button-2021 32 | 33 | ```button 34 | name 2022 35 | type link 36 | action obsidian://open?vault=Books%20and%20Movies&file=Trackers%20and%20Galleries%2FYears%20Past%2F2022 37 | color red 38 | ``` 39 | ^button-2022 40 | 41 | ```button 42 | name 2023 43 | type link 44 | action obsidian://open?vault=Books%20and%20Movies&file=Trackers%20and%20Galleries%2FZ%20Current%2F2023 45 | color red 46 | ``` 47 | ^button-2023 48 | 49 | ```button 50 | name Reading Stats 51 | type link 52 | action obsidian://open?vault=Books%20and%20Movies&file=Trackers%20and%20Galleries%2FZ%20General%2FReading%20Stats 53 | color green 54 | ``` 55 | ^button-readingstats 56 | 57 | ```button 58 | name Book Gallery 59 | type link 60 | action obsidian://open?vault=Books%20and%20Movies&file=Trackers%20and%20Galleries%2FZ%20General%2FBook%20Gallery%20since%202020 61 | color green 62 | ``` 63 | ^button-bookgallery 64 | 65 | -------------------------------------------------------------------------------- /Trackers and Galleries/Want to Read/Adams, Dirk Gently's Holistic Detective Agency (Dirk Gently, 1).md: -------------------------------------------------------------------------------- 1 | --- 2 | Author: Douglas Adams 3 | Alias: Dirk Gently's Holistic Detective Agency (Dirk Gently, #1) 4 | Year: 1987 5 | Medium: Mass Market Paperback 6 | Length: 306 7 | Rating: 8 | DateStarted: 9 | DateFinished: 10 | Cover: https://images-na.ssl-images-amazon.com/images/S/compressed.photo.goodreads.com/books/1554401296i/365.jpg 11 | Tags: to-read 12 | Country: 13 | --- 14 | [[Adams, Douglas]] 15 | #### Notes -------------------------------------------------------------------------------- /Trackers and Galleries/Want to Read/Butcher, Furies of Calderon (Codex Alera, 1).md: -------------------------------------------------------------------------------- 1 | --- 2 | Author: Jim Butcher 3 | Alias: Furies of Calderon (Codex Alera, #1) 4 | Year: 2004 5 | Medium: Paperback 6 | Length: 688 7 | Rating: 8 | DateStarted: 9 | DateFinished: 10 | Cover: https://images-na.ssl-images-amazon.com/images/S/compressed.photo.goodreads.com/books/1329104514i/29396.jpg 11 | Tags: to-read 12 | Country: 13 | --- 14 | [[Butcher, Jim]] 15 | #### Notes -------------------------------------------------------------------------------- /Trackers and Galleries/Want to Read/King, Fairy Tale.md: -------------------------------------------------------------------------------- 1 | --- 2 | Author: Stephen King 3 | Alias: Fairy Tale 4 | Year: 2022 5 | Medium: Hardcover 6 | Length: 608 7 | Rating: 8 | DateStarted: 9 | DateFinished: 10 | Cover: https://images-na.ssl-images-amazon.com/images/S/compressed.photo.goodreads.com/books/1647789287i/60177373.jpg 11 | Tags: pre-order, to-read 12 | Country: 13 | --- 14 | [[King, Stephen]] 15 | #### Notes -------------------------------------------------------------------------------- /Trackers and Galleries/Years Past/2021.md: -------------------------------------------------------------------------------- 1 | --- 2 | obsidianUIMode: preview 3 | cssClasses: cards, cards-cover, cards-2-3, table-max, max 4 | --- 5 | `button-bookgallery` 6 | ```dataviewjs 7 | let BookCount = (dv.pages('"2 Book Log/2021"').where(p => p.Medium == "Book" || p.Medium == "eBook").length); 8 | 9 | let AudioCount = (dv.pages('"2 Book Log/2021"').where(p => p.Medium == "Audiobook" || p.Medium == "Podcast").length); 10 | 11 | let pagesum = 0; 12 | for(let i = 0; i < dv.pages('"2 Book Log/2021"').where(p => p.Medium == "Book" || p.Medium == "eBook").length; i++) { 13 | if(dv.pages('"2 Book Log/2021"').where(p => p.Medium == "Book" || p.Medium == "eBook")[i].Length) { 14 | pagesum += dv.pages('"2 Book Log/2021"').where(p => p.Medium == "Book" || p.Medium == "eBook")[i].Length; 15 | } 16 | } 17 | 18 | let hoursum = 0; 19 | for(let i = 0; i < dv.pages('"2 Book Log/2021"').where(p => p.Medium == "Audiobook" || p.Medium == "Podcast").length;i++) { 20 | if(dv.pages('"2 Book Log/2021"').where(p => p.Medium == "Audiobook" || p.Medium == "Podcast")[i].Length) { 21 | hoursum += dv.pages('"2 Book Log/2021"').where(p => p.Medium == "Audiobook" || p.Medium == "Podcast")[i].Length; 22 | } 23 | } 24 | 25 | let Grade = 0; 26 | for(let i = 0; i < dv.pages('"2 Book Log/2021"').length;i++) { 27 | if(dv.pages('"2 Book Log/2021"')[i].Rating) { 28 | Grade += dv.pages('"2 Book Log/2021"')[i].Rating; 29 | } 30 | } 31 | let AvgRating = (Grade / (dv.pages('"2 Book Log/2021"').where(p => p.Medium == "Book" || p.Medium == "eBook" || p.Medium == "Audiobook" || p.Medium == "Podcast").length)) 32 | 33 | let today = DateTime.now().toFormat("ooo"); 34 | 35 | dv.paragraph("#### In 2021 I read " + BookCount + " books and I've listened to " + AudioCount + " audiobooks (of which " + dv.pages('"2 Book Log/2020"').where(p => p.Medium == "Podcast").length + " were podcasts), for an overall " + (BookCount + AudioCount) + " books and audiobooks read.") 36 | 37 | dv.paragraph("#### I read " + pagesum + " pages this year. And I've listened to " + (hoursum.toFixed(1)) + " hours of audiobooks and podcasts.") 38 | 39 | dv.paragraph("#### The average rating for the overall " + (BookCount + AudioCount) + " books and audiobooks is " + AvgRating.toFixed(1) + " out of 10.") 40 | 41 | dv.paragraph("#### Average book length: " + (pagesum / BookCount).toFixed() + " pages") 42 | 43 | dv.paragraph("#### Average audiobook length: " + (hoursum / AudioCount).toFixed(1) + " hours") 44 | 45 | dv.paragraph("#### Average pages read per day: " + (pagesum / 365).toFixed(1) + " pages") 46 | 47 | dv.paragraph("#### Average hours listened per day: " + (hoursum / 365).toFixed(2) + " hours") 48 | ``` 49 | 50 | 51 | ### Overall Books (and Audiobooks) read 52 | ``` dataviewjs 53 | var labels = ["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"]; 54 | var colors = [['#ff6384'],['#36a2eb'],['#ffce56'],['#4bc0c0'],['#9966ff'],['#ff9f40']] 55 | var datasets = []; 56 | 57 | for( 58 | let results of dv.pages('"2 Book Log"') 59 | .where(p => p.DateFinished) //or p.DateFinished && p.Pages 60 | .sort(p => p.DateFinished, 'asc') 61 | .groupBy(p => (dv.date(p.DateFinished).toFormat("MMMM yyyy"))) 62 | .sort(ym => ym.rows.DateFinished.first(), 'asc') 63 | .groupBy(ym => (dv.date(ym.rows.DateFinished.first()).year)) 64 | .sort(y => y.key, 'asc') 65 | ) { 66 | let lbl = "Books read in " + results.key; 67 | let backCol = colors[datasets.length%colors.length]; 68 | let bordCol = colors[datasets.length%colors.length]; 69 | let bWidth = 1; 70 | 71 | let innerArray = [0,0,0,0,0,0,0,0,0,0,0,0]; 72 | results.rows.forEach(m => { 73 | let numBooks = dv.array(m.rows).length; 74 | //OR .Pages.array().reduce((s,r) => s + r, 0); 75 | innerArray[m.rows.DateFinished.first().month-1] = numBooks; 76 | }) 77 | 78 | let da = {label: lbl, data: innerArray, backgroundColor: backCol, 79 | borderColor: bordCol, borderWidth: bWidth}; 80 | 81 | datasets.push(da) 82 | } 83 | 84 | const chartData = { 85 | type: 'line', 86 | data: {labels: labels, datasets: datasets}, 87 | options: {scales: {yAxis: {suggestedMin: 0, ticks: {stepSize: 1}}} 88 | }} 89 | window.renderChart(chartData, this.container); 90 | ``` 91 | 92 | ### Three longest books this year 93 | 94 | ```dataview 95 | TABLE without id 96 | ("![](" + Cover + ")") as Cover, 97 | link(file.link, Alias) + " by " + Author + (choice(medium = "Book", " 📖 ", choice(medium = "Audiobook", " 🎧 ", choice(medium = "Podcast", " 📻 ", choice(medium = "eBook", " 📃 ", ""))))) + choice(contains(tags, "Favorite"), "💛", "") as Title, 98 | Year + " || " + " ⭐ " + Rating + " || " + (choice(medium = "Book", Length + " p", choice(medium = "Audiobook", Length + " h", choice(medium = "Podcast", Length + " h", choice(medium = "eBook", Length + " p", ""))))) + " || " + Country as "Time and Place" 99 | FROM "2 Book Log/2021" 100 | WHERE Medium = "Book" OR Medium = "eBook" 101 | SORT Length desc 102 | LIMIT 3 103 | ``` 104 | 105 | ### Three longest audiobooks this year 106 | ```dataview 107 | TABLE without id 108 | ("![](" + Cover + ")") as Cover, 109 | link(file.link, Alias) + " by " + Author + (choice(medium = "Book", " 📖 ", choice(medium = "Audiobook", " 🎧 ", choice(medium = "Podcast", " 📻 ", choice(medium = "eBook", " 📃 ", ""))))) + choice(contains(tags, "Favorite"), "💛", "") as Title, 110 | Year + " || " + " ⭐ " + Rating + " || " + (choice(medium = "Book", Length + " p", choice(medium = "Audiobook", Length + " h", choice(medium = "Podcast", Length + " h", choice(medium = "eBook", Length + " p", ""))))) + " || " + Country as "Time and Place" 111 | FROM "2 Book Log/2021" 112 | WHERE Medium = "Audiobook" OR Medium = "Podcast" 113 | SORT Length desc 114 | LIMIT 3 115 | ``` 116 | 117 | 118 | ### Gallery 119 | ```dataview 120 | TABLE without id 121 | ("![](" + Cover + ")") AS "Cover", 122 | P_BookByAuthor + P_MediumIcon + P_FavoriteIcon AS "Title", 123 | Q_YearRating + Q_PagesHours + " || " + Q_FLAG AS "Time and Place", 124 | R_Dates AS "Dates", 125 | "(" + S_ReadingTime + " || " + S_ReadingSpeed + ")" AS "Reading Time" 126 | 127 | FROM "2 Book Log/2021" 128 | 129 | WHERE Medium != null 130 | SORT DateFinished asc 131 | 132 | 133 | FLATTEN link(file.link, Alias) + " by " + Author AS P_BookByAuthor 134 | FLATTEN choice(contains(tags, "Favorite"), "💛", "") AS P_FavoriteIcon 135 | 136 | FLATTEN { 137 | "Book": " 📖 ", 138 | "Audiobook": " 🎧 ", 139 | "Podcast": " 📻 ", 140 | "eBook": " 📃 ", 141 | "AcademicBook": " 📚🎓 ", 142 | "AcademicArticle": " 📰 ", 143 | "GraphicNovel": " 💬 " 144 | }[Medium] AS P_MediumIcon 145 | 146 | 147 | 148 | FLATTEN DateStarted + " — " + DateFinished AS R_Dates 149 | 150 | FLATTEN choice(((DateFinished - DateStarted).days = 1), "1 day", choice((DateFinished != DateStarted), (DateFinished - DateStarted).days + " days", "0 days" )) AS S_ReadingTime 151 | 152 | 153 | FLATTEN { 154 | "Book": round(choice((DateFinished = DateStarted), Length, (Length / (DateFinished - DateStarted).days)), 1) + " p/d", 155 | "Audiobook": round(choice((DateFinished = DateStarted), Length, (Length / (DateFinished - DateStarted).days)), 2) + " h/d", 156 | "Podcast": round(choice((DateFinished = DateStarted), Length, (Length / (DateFinished - DateStarted).days)), 2)+ " h/d", 157 | "eBook": round(choice((DateFinished = DateStarted), Length, (Length / (DateFinished - DateStarted).days)), 1) + " p/d", 158 | "GraphicNovel": round(choice((DateFinished = DateStarted), Length, (Length / (DateFinished - DateStarted).days)), 1) + " p/d", 159 | "AcademicBook": round(choice((DateFinished = DateStarted), Length, (Length / (DateFinished - DateStarted).days)), 1) + " p/d", 160 | "AcademicArticle": round(choice((DateFinished = DateStarted), Length, (Length / (DateFinished - DateStarted).days)), 1) + " p/d" 161 | }[Medium] AS S_ReadingSpeed 162 | 163 | 164 | 165 | FLATTEN Year + " || " + " ⭐ " + Rating + " || " AS Q_YearRating 166 | 167 | FLATTEN { 168 | "Book": Length + " p", 169 | "Audiobook": Length + " h", 170 | "Podcast": Length + " h", 171 | "eBook": Length + " p", 172 | "GraphicNovel": Length + " p", 173 | "AcademicBook": Length + " p", 174 | "AcademicArticle": Length + " p" 175 | }[Medium] AS Q_PagesHours 176 | 177 | 178 | FLATTEN join(map(split(Country, ", "), (c) => { 179 | AD: "🇦🇩", 180 | AE: "🇦🇪", 181 | AF: "🇦🇫", 182 | AG: "🇦🇬", 183 | AI: "🇦🇮", 184 | AL: "🇦🇱", 185 | AM: "🇦🇲", 186 | AO: "🇦🇴", 187 | AQ: "🇦🇶", 188 | AR: "🇦🇷", 189 | AS: "🇦🇸", 190 | AT: "🇦🇹", 191 | AU: "🇦🇺", 192 | AW: "🇦🇼", 193 | AX: "🇦🇽", 194 | AZ: "🇦🇿", 195 | BA: "🇧🇦", 196 | BB: "🇧🇧", 197 | BD: "🇧🇩", 198 | BE: "🇧🇪", 199 | BF: "🇧🇫", 200 | BG: "🇧🇬", 201 | BH: "🇧🇭", 202 | BI: "🇧🇮", 203 | BJ: "🇧🇯", 204 | BL: "🇧🇱", 205 | BM: "🇧🇲", 206 | BN: "🇧🇳", 207 | BO: "🇧🇴", 208 | BQ: "🇧🇶", 209 | BR: "🇧🇷", 210 | BS: "🇧🇸", 211 | BT: "🇧🇹", 212 | BV: "🇧🇻", 213 | BW: "🇧🇼", 214 | BY: "🇧🇾", 215 | BZ: "🇧🇿", 216 | CA: "🇨🇦", 217 | CC: "🇨🇨", 218 | CD: "🇨🇩", 219 | CF: "🇨🇫", 220 | CG: "🇨🇬", 221 | CH: "🇨🇭", 222 | CI: "🇨🇮", 223 | CK: "🇨🇰", 224 | CL: "🇨🇱", 225 | CM: "🇨🇲", 226 | CN: "🇨🇳", 227 | CO: "🇨🇴", 228 | CR: "🇨🇷", 229 | CU: "🇨🇺", 230 | CV: "🇨🇻", 231 | CW: "🇨🇼", 232 | CX: "🇨🇽", 233 | CY: "🇨🇾", 234 | CYMRU: "🏴󠁧󠁢󠁷󠁬󠁳󠁿", 235 | CZ: "🇨🇿", 236 | DE: "🇩🇪", 237 | DJ: "🇩🇯", 238 | DK: "🇩🇰", 239 | DM: "🇩🇲", 240 | DO: "🇩🇴", 241 | DZ: "🇩🇿", 242 | EC: "🇪🇨", 243 | EE: "🇪🇪", 244 | EG: "🇪🇬", 245 | EH: "🇪🇭", 246 | ENG: "🏴󠁧󠁢󠁥󠁮󠁧󠁿", 247 | ER: "🇪🇷", 248 | ES: "🇪🇸", 249 | ET: "🇪🇹", 250 | FI: "🇫🇮", 251 | FJ: "🇫🇯", 252 | FK: "🇫🇰", 253 | FM: "🇫🇲", 254 | FO: "🇫🇴", 255 | FR: "🇫🇷", 256 | GA: "🇬🇦", 257 | GB: "🇬🇧", 258 | GD: "🇬🇩", 259 | GE: "🇬🇪", 260 | GF: "🇬🇫", 261 | GG: "🇬🇬", 262 | GH: "🇬🇭", 263 | GI: "🇬🇮", 264 | GL: "🇬🇱", 265 | GM: "🇬🇲", 266 | GN: "🇬🇳", 267 | GP: "🇬🇵", 268 | GQ: "🇬🇶", 269 | GR: "🇬🇷", 270 | GS: "🇬🇸", 271 | GT: "🇬🇹", 272 | GU: "🇬🇺", 273 | GW: "🇬🇼", 274 | GY: "🇬🇾", 275 | HK: "🇭🇰", 276 | HM: "🇭🇲", 277 | HN: "🇭🇳", 278 | HR: "🇭🇷", 279 | HT: "🇭🇹", 280 | HU: "🇭🇺", 281 | ID: "🇮🇩", 282 | IE: "🇮🇪", 283 | IL: "🇮🇱", 284 | IM: "🇮🇲", 285 | IN: "🇮🇳", 286 | IO: "🇮🇴", 287 | IQ: "🇮🇶", 288 | IR: "🇮🇷", 289 | IS: "🇮🇸", 290 | IT: "🇮🇹", 291 | JE: "🇯🇪", 292 | JM: "🇯🇲", 293 | JO: "🇯🇴", 294 | JP: "🇯🇵", 295 | KE: "🇰🇪", 296 | KG: "🇰🇬", 297 | KH: "🇰🇭", 298 | KI: "🇰🇮", 299 | KM: "🇰🇲", 300 | KN: "🇰🇳", 301 | KP: "🇰🇵", 302 | KR: "🇰🇷", 303 | KW: "🇰🇼", 304 | KY: "🇰🇾", 305 | KZ: "🇰🇿", 306 | LA: "🇱🇦", 307 | LB: "🇱🇧", 308 | LC: "🇱🇨", 309 | LI: "🇱🇮", 310 | LK: "🇱🇰", 311 | LR: "🇱🇷", 312 | LS: "🇱🇸", 313 | LT: "🇱🇹", 314 | LU: "🇱🇺", 315 | LV: "🇱🇻", 316 | LY: "🇱🇾", 317 | MA: "🇲🇦", 318 | MC: "🇲🇨", 319 | MD: "🇲🇩", 320 | ME: "🇲🇪", 321 | MF: "🇲🇫", 322 | MG: "🇲🇬", 323 | MH: "🇲🇭", 324 | MK: "🇲🇰", 325 | ML: "🇲🇱", 326 | MM: "🇲🇲", 327 | MN: "🇲🇳", 328 | MO: "🇲🇴", 329 | MP: "🇲🇵", 330 | MQ: "🇲🇶", 331 | MR: "🇲🇷", 332 | MS: "🇲🇸", 333 | MT: "🇲🇹", 334 | MU: "🇲🇺", 335 | MV: "🇲🇻", 336 | MW: "🇲🇼", 337 | MX: "🇲🇽", 338 | MY: "🇲🇾", 339 | MZ: "🇲🇿", 340 | NA: "🇳🇦", 341 | NC: "🇳🇨", 342 | NE: "🇳🇪", 343 | NF: "🇳🇫", 344 | NG: "🇳🇬", 345 | NI: "🇳🇮", 346 | NL: "🇳🇱", 347 | NO: "🇳🇴", 348 | NP: "🇳🇵", 349 | NR: "🇳🇷", 350 | NU: "🇳🇺", 351 | NZ: "🇳🇿", 352 | OM: "🇴🇲", 353 | PA: "🇵🇦", 354 | PE: "🇵🇪", 355 | PF: "🇵🇫", 356 | PG: "🇵🇬", 357 | PH: "🇵🇭", 358 | PK: "🇵🇰", 359 | PL: "🇵🇱", 360 | PM: "🇵🇲", 361 | PN: "🇵🇳", 362 | PR: "🇵🇷", 363 | PS: "🇵🇸", 364 | PT: "🇵🇹", 365 | PW: "🇵🇼", 366 | PY: "🇵🇾", 367 | QA: "🇶🇦", 368 | RE: "🇷🇪", 369 | RO: "🇷🇴", 370 | RS: "🇷🇸", 371 | RU: "🇷🇺", 372 | RW: "🇷🇼", 373 | SA: "🇸🇦", 374 | SB: "🇸🇧", 375 | SC: "🇸🇨", 376 | SCOT: "🏴󠁧󠁢󠁳󠁣󠁴󠁿", 377 | SD: "🇸🇩", 378 | SE: "🇸🇪", 379 | SG: "🇸🇬", 380 | SH: "🇸🇭", 381 | SI: "🇸🇮", 382 | SJ: "🇸🇯", 383 | SK: "🇸🇰", 384 | SL: "🇸🇱", 385 | SM: "🇸🇲", 386 | SN: "🇸🇳", 387 | SO: "🇸🇴", 388 | SR: "🇸🇷", 389 | SS: "🇸🇸", 390 | ST: "🇸🇹", 391 | SV: "🇸🇻", 392 | SX: "🇸🇽", 393 | SY: "🇸🇾", 394 | SZ: "🇸🇿", 395 | TC: "🇹🇨", 396 | TD: "🇹🇩", 397 | TF: "🇹🇫", 398 | TG: "🇹🇬", 399 | TH: "🇹🇭", 400 | TJ: "🇹🇯", 401 | TK: "🇹🇰", 402 | TL: "🇹🇱", 403 | TM: "🇹🇲", 404 | TN: "🇹🇳", 405 | TO: "🇹🇴", 406 | TR: "🇹🇷", 407 | TT: "🇹🇹", 408 | TV: "🇹🇻", 409 | TW: "🇹🇼", 410 | TZ: "🇹🇿", 411 | UA: "🇺🇦", 412 | UG: "🇺🇬", 413 | UM: "🇺🇲", 414 | US: "🇺🇸", 415 | UY: "🇺🇾", 416 | UZ: "🇺🇿", 417 | VA: "🇻🇦", 418 | VC: "🇻🇨", 419 | VE: "🇻🇪", 420 | VG: "🇻🇬", 421 | VI: "🇻🇮", 422 | VN: "🇻🇳", 423 | VU: "🇻🇺", 424 | WF: "🇼🇫", 425 | WS: "🇼🇸", 426 | YE: "🇾🇪", 427 | YT: "🇾🇹", 428 | ZA: "🇿🇦", 429 | ZM: "🇿🇲", 430 | ZW: "🇿🇼" 431 | }[c])) AS Q_FLAG 432 | 433 | 434 | ``` 435 | 436 | -------------------------------------------------------------------------------- /Trackers and Galleries/Years Past/2022.md: -------------------------------------------------------------------------------- 1 | --- 2 | obsidianUIMode: preview 3 | cssClasses: cards, cards-cover, cards-2-3, table-max, max 4 | --- 5 | `button-bookgallery` 6 | ```dataviewjs 7 | let BookCount = (dv.pages('"2 Book Log/2022"').where(p => p.Medium == "Book" || p.Medium == "eBook" || p.Medium == "GraphicNovel").length); 8 | 9 | let AudioCount = (dv.pages('"2 Book Log/2022"').where(p => p.Medium == "Audiobook" || p.Medium == "Podcast").length); 10 | 11 | let AcademicCount = (dv.pages('"2 Book Log/2022"').where(p => p.Medium == "Article" || p.Medium == "Chapter" || p.Medium == "Monograph").length); 12 | 13 | let pagesum = 0; 14 | for(let i = 0; i < dv.pages('"2 Book Log/2022"').where(p => p.Medium == "Book" || p.Medium == "eBook" || p.Medium == "Article" || p.Medium == "Chapter" || p.Medium == "Monograph" || p.Medium == "GraphicNovel").length; i++) { 15 | if(dv.pages('"2 Book Log/2022"').where(p => p.Medium == "Book" || p.Medium == "eBook" || p.Medium == "Article" || p.Medium == "Chapter" || p.Medium == "Monograph" || p.Medium == "GraphicNovel")[i].Length) { 16 | pagesum += dv.pages('"2 Book Log/2022"').where(p => p.Medium == "Book" || p.Medium == "eBook" || p.Medium == "Article" || p.Medium == "Chapter" || p.Medium == "Monograph" || p.Medium == "GraphicNovel")[i].Length; 17 | } 18 | } 19 | 20 | let hoursum = 0; 21 | for(let i = 0; i < dv.pages('"2 Book Log/2022"').where(p => p.Medium == "Audiobook" || p.Medium == "Podcast").length;i++) { 22 | if(dv.pages('"2 Book Log/2022"').where(p => p.Medium == "Audiobook" || p.Medium == "Podcast")[i].Length) { 23 | hoursum += dv.pages('"2 Book Log/2022"').where(p => p.Medium == "Audiobook" || p.Medium == "Podcast")[i].Length; 24 | } 25 | } 26 | 27 | let Grade = 0; 28 | for(let i = 0; i < dv.pages('"2 Book Log/2022"').length;i++) { 29 | if(dv.pages('"2 Book Log/2022"')[i].Rating) { 30 | Grade += dv.pages('"2 Book Log/2022"')[i].Rating; 31 | } 32 | } 33 | let AvgRating = (Grade / (dv.pages('"2 Book Log/2022"').where(p => p.Medium == "Book" || p.Medium == "eBook" || p.Medium == "Audiobook" || p.Medium == "Podcast" || p.Medium == "Book" || p.Medium == "eBook" || p.Medium == "Article" || p.Medium == "Chapter" || p.Medium == "Monograph" || p.Medium == "GraphicNovel").length)) 34 | 35 | 36 | 37 | dv.paragraph("#### In 2022 I read " + BookCount + " books and I've listened to " + AudioCount + " audiobooks (of which " + dv.pages('"2 Book Log/2022"').where(p => p.Medium == "Podcast").length + " were podcasts), for an overall " + (BookCount + AudioCount) + " books and audiobooks read.") 38 | 39 | dv.paragraph("#### I've read " + pagesum + " pages this year. And I've listened to " + (hoursum.toFixed(1)) + " hours of audiobooks and podcasts.") 40 | 41 | dv.paragraph("#### The average rating for the overall " + (BookCount + AudioCount) + " books and audiobooks is " + AvgRating.toFixed(1) + " out of 10.") 42 | 43 | dv.paragraph("#### Average book length: " + (pagesum / BookCount).toFixed() + " pages") 44 | 45 | dv.paragraph("#### Average audiobook length: " + (hoursum / AudioCount).toFixed(1) + " hours") 46 | 47 | dv.paragraph("#### Average pages read per day: " + (pagesum / 365).toFixed(1) + " pages") 48 | 49 | dv.paragraph("#### Average hours listened per day: " + (hoursum / 365).toFixed(2) + " hours") 50 | ``` 51 | 52 | 53 | ### Overall Books (and Audiobooks) read 54 | ``` dataviewjs 55 | var labels = ["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"]; 56 | var colors = [['#ff6384'],['#36a2eb'],['#ffce56'],['#4bc0c0'],['#9966ff'],['#ff9f40']] 57 | var datasets = []; 58 | 59 | for( 60 | let results of dv.pages('"2 Book Log"') 61 | .where(p => p.DateFinished) //or p.DateFinished && p.Pages 62 | .sort(p => p.DateFinished, 'asc') 63 | .groupBy(p => (dv.date(p.DateFinished).toFormat("MMMM yyyy"))) 64 | .sort(ym => ym.rows.DateFinished.first(), 'asc') 65 | .groupBy(ym => (dv.date(ym.rows.DateFinished.first()).year)) 66 | .sort(y => y.key, 'asc') 67 | ) { 68 | let lbl = "Books read in " + results.key; 69 | let backCol = colors[datasets.length%colors.length]; 70 | let bordCol = colors[datasets.length%colors.length]; 71 | let bWidth = 1; 72 | 73 | let innerArray = [0,0,0,0,0,0,0,0,0,0,0,0]; 74 | results.rows.forEach(m => { 75 | let numBooks = dv.array(m.rows).length; 76 | //OR .Pages.array().reduce((s,r) => s + r, 0); 77 | innerArray[m.rows.DateFinished.first().month-1] = numBooks; 78 | }) 79 | 80 | let da = {label: lbl, data: innerArray, backgroundColor: backCol, 81 | borderColor: bordCol, borderWidth: bWidth}; 82 | 83 | datasets.push(da) 84 | } 85 | 86 | const chartData = { 87 | type: 'line', 88 | data: {labels: labels, datasets: datasets}, 89 | options: {scales: {yAxis: {suggestedMin: 0, ticks: {stepSize: 1}}} 90 | }} 91 | window.renderChart(chartData, this.container); 92 | ``` 93 | 94 | ### Three longest books this year 95 | 96 | ```dataview 97 | TABLE without id 98 | ("![](" + Cover + ")") AS "Cover", 99 | P_BookByAuthor + P_MediumIcon + P_FavoriteIcon AS "Title", 100 | Q_YearRating + Q_PagesHours + " || " + Q_FLAG AS "Time and Place", 101 | R_Dates AS "Dates", 102 | S_ReadingTime AS "Reading Time" 103 | 104 | FROM "2 Book Log/2022" 105 | 106 | WHERE Medium != null 107 | SORT DateFinished asc 108 | 109 | 110 | FLATTEN link(file.link, Alias) + " by " + Author AS P_BookByAuthor 111 | FLATTEN choice(contains(tags, "Favorite"), "💛", "") AS P_FavoriteIcon 112 | 113 | FLATTEN { 114 | "Book": " 📖 ", 115 | "Audiobook": " 🎧 ", 116 | "Podcast": " 📻 ", 117 | "eBook": " 📃 ", 118 | "GraphicNovel": " 💬 ", 119 | "AcademicBook": " 📚🎓 ", 120 | "AcademicArticle": " 📰 " 121 | }[Medium] AS P_MediumIcon 122 | 123 | 124 | 125 | FLATTEN DateStarted + " — " + DateFinished AS R_Dates 126 | FLATTEN "(" + choice((DateFinished != DateStarted), (DateFinished - DateStarted).days + " days", "0 days" ) + ")" AS S_ReadingTime 127 | 128 | 129 | 130 | FLATTEN Year + " || " + " ⭐ " + Rating + " || " AS Q_YearRating 131 | 132 | FLATTEN { 133 | "Book": Length + " p", 134 | "Audiobook": Length + " h", 135 | "Podcast": Length + " h", 136 | "eBook": Length + " p", 137 | "GraphicNovel": Length + " p", 138 | "AcademicBook": Length + " p", 139 | "AcademicArticle": Length + " p" 140 | }[Medium] AS Q_PagesHours 141 | 142 | 143 | FLATTEN join(map(split(Country, ", "), (c) => { 144 | AD: "🇦🇩", 145 | AE: "🇦🇪", 146 | AF: "🇦🇫", 147 | AG: "🇦🇬", 148 | AI: "🇦🇮", 149 | AL: "🇦🇱", 150 | AM: "🇦🇲", 151 | AO: "🇦🇴", 152 | AQ: "🇦🇶", 153 | AR: "🇦🇷", 154 | AS: "🇦🇸", 155 | AT: "🇦🇹", 156 | AU: "🇦🇺", 157 | AW: "🇦🇼", 158 | AX: "🇦🇽", 159 | AZ: "🇦🇿", 160 | BA: "🇧🇦", 161 | BB: "🇧🇧", 162 | BD: "🇧🇩", 163 | BE: "🇧🇪", 164 | BF: "🇧🇫", 165 | BG: "🇧🇬", 166 | BH: "🇧🇭", 167 | BI: "🇧🇮", 168 | BJ: "🇧🇯", 169 | BL: "🇧🇱", 170 | BM: "🇧🇲", 171 | BN: "🇧🇳", 172 | BO: "🇧🇴", 173 | BQ: "🇧🇶", 174 | BR: "🇧🇷", 175 | BS: "🇧🇸", 176 | BT: "🇧🇹", 177 | BV: "🇧🇻", 178 | BW: "🇧🇼", 179 | BY: "🇧🇾", 180 | BZ: "🇧🇿", 181 | CA: "🇨🇦", 182 | CC: "🇨🇨", 183 | CD: "🇨🇩", 184 | CF: "🇨🇫", 185 | CG: "🇨🇬", 186 | CH: "🇨🇭", 187 | CI: "🇨🇮", 188 | CK: "🇨🇰", 189 | CL: "🇨🇱", 190 | CM: "🇨🇲", 191 | CN: "🇨🇳", 192 | CO: "🇨🇴", 193 | CR: "🇨🇷", 194 | CU: "🇨🇺", 195 | CV: "🇨🇻", 196 | CW: "🇨🇼", 197 | CX: "🇨🇽", 198 | CY: "🇨🇾", 199 | CYMRU: "🏴󠁧󠁢󠁷󠁬󠁳󠁿", 200 | CZ: "🇨🇿", 201 | DE: "🇩🇪", 202 | DJ: "🇩🇯", 203 | DK: "🇩🇰", 204 | DM: "🇩🇲", 205 | DO: "🇩🇴", 206 | DZ: "🇩🇿", 207 | EC: "🇪🇨", 208 | EE: "🇪🇪", 209 | EG: "🇪🇬", 210 | EH: "🇪🇭", 211 | ENG: "🏴󠁧󠁢󠁥󠁮󠁧󠁿", 212 | ER: "🇪🇷", 213 | ES: "🇪🇸", 214 | ET: "🇪🇹", 215 | FI: "🇫🇮", 216 | FJ: "🇫🇯", 217 | FK: "🇫🇰", 218 | FM: "🇫🇲", 219 | FO: "🇫🇴", 220 | FR: "🇫🇷", 221 | GA: "🇬🇦", 222 | GB: "🇬🇧", 223 | GD: "🇬🇩", 224 | GE: "🇬🇪", 225 | GF: "🇬🇫", 226 | GG: "🇬🇬", 227 | GH: "🇬🇭", 228 | GI: "🇬🇮", 229 | GL: "🇬🇱", 230 | GM: "🇬🇲", 231 | GN: "🇬🇳", 232 | GP: "🇬🇵", 233 | GQ: "🇬🇶", 234 | GR: "🇬🇷", 235 | GS: "🇬🇸", 236 | GT: "🇬🇹", 237 | GU: "🇬🇺", 238 | GW: "🇬🇼", 239 | GY: "🇬🇾", 240 | HK: "🇭🇰", 241 | HM: "🇭🇲", 242 | HN: "🇭🇳", 243 | HR: "🇭🇷", 244 | HT: "🇭🇹", 245 | HU: "🇭🇺", 246 | ID: "🇮🇩", 247 | IE: "🇮🇪", 248 | IL: "🇮🇱", 249 | IM: "🇮🇲", 250 | IN: "🇮🇳", 251 | IO: "🇮🇴", 252 | IQ: "🇮🇶", 253 | IR: "🇮🇷", 254 | IS: "🇮🇸", 255 | IT: "🇮🇹", 256 | JE: "🇯🇪", 257 | JM: "🇯🇲", 258 | JO: "🇯🇴", 259 | JP: "🇯🇵", 260 | KE: "🇰🇪", 261 | KG: "🇰🇬", 262 | KH: "🇰🇭", 263 | KI: "🇰🇮", 264 | KM: "🇰🇲", 265 | KN: "🇰🇳", 266 | KP: "🇰🇵", 267 | KR: "🇰🇷", 268 | KW: "🇰🇼", 269 | KY: "🇰🇾", 270 | KZ: "🇰🇿", 271 | LA: "🇱🇦", 272 | LB: "🇱🇧", 273 | LC: "🇱🇨", 274 | LI: "🇱🇮", 275 | LK: "🇱🇰", 276 | LR: "🇱🇷", 277 | LS: "🇱🇸", 278 | LT: "🇱🇹", 279 | LU: "🇱🇺", 280 | LV: "🇱🇻", 281 | LY: "🇱🇾", 282 | MA: "🇲🇦", 283 | MC: "🇲🇨", 284 | MD: "🇲🇩", 285 | ME: "🇲🇪", 286 | MF: "🇲🇫", 287 | MG: "🇲🇬", 288 | MH: "🇲🇭", 289 | MK: "🇲🇰", 290 | ML: "🇲🇱", 291 | MM: "🇲🇲", 292 | MN: "🇲🇳", 293 | MO: "🇲🇴", 294 | MP: "🇲🇵", 295 | MQ: "🇲🇶", 296 | MR: "🇲🇷", 297 | MS: "🇲🇸", 298 | MT: "🇲🇹", 299 | MU: "🇲🇺", 300 | MV: "🇲🇻", 301 | MW: "🇲🇼", 302 | MX: "🇲🇽", 303 | MY: "🇲🇾", 304 | MZ: "🇲🇿", 305 | NA: "🇳🇦", 306 | NC: "🇳🇨", 307 | NE: "🇳🇪", 308 | NF: "🇳🇫", 309 | NG: "🇳🇬", 310 | NI: "🇳🇮", 311 | NL: "🇳🇱", 312 | NO: "🇳🇴", 313 | NP: "🇳🇵", 314 | NR: "🇳🇷", 315 | NU: "🇳🇺", 316 | NZ: "🇳🇿", 317 | OM: "🇴🇲", 318 | PA: "🇵🇦", 319 | PE: "🇵🇪", 320 | PF: "🇵🇫", 321 | PG: "🇵🇬", 322 | PH: "🇵🇭", 323 | PK: "🇵🇰", 324 | PL: "🇵🇱", 325 | PM: "🇵🇲", 326 | PN: "🇵🇳", 327 | PR: "🇵🇷", 328 | PS: "🇵🇸", 329 | PT: "🇵🇹", 330 | PW: "🇵🇼", 331 | PY: "🇵🇾", 332 | QA: "🇶🇦", 333 | RE: "🇷🇪", 334 | RO: "🇷🇴", 335 | RS: "🇷🇸", 336 | RU: "🇷🇺", 337 | RW: "🇷🇼", 338 | SA: "🇸🇦", 339 | SB: "🇸🇧", 340 | SC: "🇸🇨", 341 | SCOT: "🏴󠁧󠁢󠁳󠁣󠁴󠁿", 342 | SD: "🇸🇩", 343 | SE: "🇸🇪", 344 | SG: "🇸🇬", 345 | SH: "🇸🇭", 346 | SI: "🇸🇮", 347 | SJ: "🇸🇯", 348 | SK: "🇸🇰", 349 | SL: "🇸🇱", 350 | SM: "🇸🇲", 351 | SN: "🇸🇳", 352 | SO: "🇸🇴", 353 | SR: "🇸🇷", 354 | SS: "🇸🇸", 355 | ST: "🇸🇹", 356 | SV: "🇸🇻", 357 | SX: "🇸🇽", 358 | SY: "🇸🇾", 359 | SZ: "🇸🇿", 360 | TC: "🇹🇨", 361 | TD: "🇹🇩", 362 | TF: "🇹🇫", 363 | TG: "🇹🇬", 364 | TH: "🇹🇭", 365 | TJ: "🇹🇯", 366 | TK: "🇹🇰", 367 | TL: "🇹🇱", 368 | TM: "🇹🇲", 369 | TN: "🇹🇳", 370 | TO: "🇹🇴", 371 | TR: "🇹🇷", 372 | TT: "🇹🇹", 373 | TV: "🇹🇻", 374 | TW: "🇹🇼", 375 | TZ: "🇹🇿", 376 | UA: "🇺🇦", 377 | UG: "🇺🇬", 378 | UM: "🇺🇲", 379 | US: "🇺🇸", 380 | UY: "🇺🇾", 381 | UZ: "🇺🇿", 382 | VA: "🇻🇦", 383 | VC: "🇻🇨", 384 | VE: "🇻🇪", 385 | VG: "🇻🇬", 386 | VI: "🇻🇮", 387 | VN: "🇻🇳", 388 | VU: "🇻🇺", 389 | WF: "🇼🇫", 390 | WS: "🇼🇸", 391 | YE: "🇾🇪", 392 | YT: "🇾🇹", 393 | ZA: "🇿🇦", 394 | ZM: "🇿🇲", 395 | ZW: "🇿🇼" 396 | }[c])) AS Q_FLAG 397 | WHERE Medium = "Book" OR Medium = "eBook" 398 | SORT Length desc 399 | LIMIT 3 400 | ``` 401 | 402 | ### Three longest audiobooks this year 403 | ```dataview 404 | TABLE without id 405 | ("![](" + Cover + ")") AS "Cover", 406 | P_BookByAuthor + P_MediumIcon + P_FavoriteIcon AS "Title", 407 | Q_YearRating + Q_PagesHours + " || " + Q_FLAG AS "Time and Place", 408 | R_Dates AS "Dates", 409 | S_ReadingTime AS "Reading Time" 410 | 411 | FROM "2 Book Log/2022" 412 | 413 | WHERE Medium != null 414 | SORT DateFinished asc 415 | 416 | 417 | FLATTEN link(file.link, Alias) + " by " + Author AS P_BookByAuthor 418 | FLATTEN choice(contains(tags, "Favorite"), "💛", "") AS P_FavoriteIcon 419 | 420 | FLATTEN { 421 | "Book": " 📖 ", 422 | "Audiobook": " 🎧 ", 423 | "Podcast": " 📻 ", 424 | "eBook": " 📃 ", 425 | "GraphicNovel": " 💬 ", 426 | "AcademicBook": " 📚🎓 ", 427 | "AcademicArticle": " 📰 " 428 | }[Medium] AS P_MediumIcon 429 | 430 | 431 | 432 | FLATTEN DateStarted + " — " + DateFinished AS R_Dates 433 | FLATTEN "(" + choice((DateFinished != DateStarted), (DateFinished - DateStarted).days + " days", "0 days" ) + ")" AS S_ReadingTime 434 | 435 | 436 | 437 | FLATTEN Year + " || " + " ⭐ " + Rating + " || " AS Q_YearRating 438 | 439 | FLATTEN { 440 | "Book": Length + " p", 441 | "Audiobook": Length + " h", 442 | "Podcast": Length + " h", 443 | "eBook": Length + " p", 444 | "GraphicNovel": Length + " p", 445 | "AcademicBook": Length + " p", 446 | "AcademicArticle": Length + " p" 447 | }[Medium] AS Q_PagesHours 448 | 449 | 450 | FLATTEN join(map(split(Country, ", "), (c) => { 451 | AD: "🇦🇩", 452 | AE: "🇦🇪", 453 | AF: "🇦🇫", 454 | AG: "🇦🇬", 455 | AI: "🇦🇮", 456 | AL: "🇦🇱", 457 | AM: "🇦🇲", 458 | AO: "🇦🇴", 459 | AQ: "🇦🇶", 460 | AR: "🇦🇷", 461 | AS: "🇦🇸", 462 | AT: "🇦🇹", 463 | AU: "🇦🇺", 464 | AW: "🇦🇼", 465 | AX: "🇦🇽", 466 | AZ: "🇦🇿", 467 | BA: "🇧🇦", 468 | BB: "🇧🇧", 469 | BD: "🇧🇩", 470 | BE: "🇧🇪", 471 | BF: "🇧🇫", 472 | BG: "🇧🇬", 473 | BH: "🇧🇭", 474 | BI: "🇧🇮", 475 | BJ: "🇧🇯", 476 | BL: "🇧🇱", 477 | BM: "🇧🇲", 478 | BN: "🇧🇳", 479 | BO: "🇧🇴", 480 | BQ: "🇧🇶", 481 | BR: "🇧🇷", 482 | BS: "🇧🇸", 483 | BT: "🇧🇹", 484 | BV: "🇧🇻", 485 | BW: "🇧🇼", 486 | BY: "🇧🇾", 487 | BZ: "🇧🇿", 488 | CA: "🇨🇦", 489 | CC: "🇨🇨", 490 | CD: "🇨🇩", 491 | CF: "🇨🇫", 492 | CG: "🇨🇬", 493 | CH: "🇨🇭", 494 | CI: "🇨🇮", 495 | CK: "🇨🇰", 496 | CL: "🇨🇱", 497 | CM: "🇨🇲", 498 | CN: "🇨🇳", 499 | CO: "🇨🇴", 500 | CR: "🇨🇷", 501 | CU: "🇨🇺", 502 | CV: "🇨🇻", 503 | CW: "🇨🇼", 504 | CX: "🇨🇽", 505 | CY: "🇨🇾", 506 | CYMRU: "🏴󠁧󠁢󠁷󠁬󠁳󠁿", 507 | CZ: "🇨🇿", 508 | DE: "🇩🇪", 509 | DJ: "🇩🇯", 510 | DK: "🇩🇰", 511 | DM: "🇩🇲", 512 | DO: "🇩🇴", 513 | DZ: "🇩🇿", 514 | EC: "🇪🇨", 515 | EE: "🇪🇪", 516 | EG: "🇪🇬", 517 | EH: "🇪🇭", 518 | ENG: "🏴󠁧󠁢󠁥󠁮󠁧󠁿", 519 | ER: "🇪🇷", 520 | ES: "🇪🇸", 521 | ET: "🇪🇹", 522 | FI: "🇫🇮", 523 | FJ: "🇫🇯", 524 | FK: "🇫🇰", 525 | FM: "🇫🇲", 526 | FO: "🇫🇴", 527 | FR: "🇫🇷", 528 | GA: "🇬🇦", 529 | GB: "🇬🇧", 530 | GD: "🇬🇩", 531 | GE: "🇬🇪", 532 | GF: "🇬🇫", 533 | GG: "🇬🇬", 534 | GH: "🇬🇭", 535 | GI: "🇬🇮", 536 | GL: "🇬🇱", 537 | GM: "🇬🇲", 538 | GN: "🇬🇳", 539 | GP: "🇬🇵", 540 | GQ: "🇬🇶", 541 | GR: "🇬🇷", 542 | GS: "🇬🇸", 543 | GT: "🇬🇹", 544 | GU: "🇬🇺", 545 | GW: "🇬🇼", 546 | GY: "🇬🇾", 547 | HK: "🇭🇰", 548 | HM: "🇭🇲", 549 | HN: "🇭🇳", 550 | HR: "🇭🇷", 551 | HT: "🇭🇹", 552 | HU: "🇭🇺", 553 | ID: "🇮🇩", 554 | IE: "🇮🇪", 555 | IL: "🇮🇱", 556 | IM: "🇮🇲", 557 | IN: "🇮🇳", 558 | IO: "🇮🇴", 559 | IQ: "🇮🇶", 560 | IR: "🇮🇷", 561 | IS: "🇮🇸", 562 | IT: "🇮🇹", 563 | JE: "🇯🇪", 564 | JM: "🇯🇲", 565 | JO: "🇯🇴", 566 | JP: "🇯🇵", 567 | KE: "🇰🇪", 568 | KG: "🇰🇬", 569 | KH: "🇰🇭", 570 | KI: "🇰🇮", 571 | KM: "🇰🇲", 572 | KN: "🇰🇳", 573 | KP: "🇰🇵", 574 | KR: "🇰🇷", 575 | KW: "🇰🇼", 576 | KY: "🇰🇾", 577 | KZ: "🇰🇿", 578 | LA: "🇱🇦", 579 | LB: "🇱🇧", 580 | LC: "🇱🇨", 581 | LI: "🇱🇮", 582 | LK: "🇱🇰", 583 | LR: "🇱🇷", 584 | LS: "🇱🇸", 585 | LT: "🇱🇹", 586 | LU: "🇱🇺", 587 | LV: "🇱🇻", 588 | LY: "🇱🇾", 589 | MA: "🇲🇦", 590 | MC: "🇲🇨", 591 | MD: "🇲🇩", 592 | ME: "🇲🇪", 593 | MF: "🇲🇫", 594 | MG: "🇲🇬", 595 | MH: "🇲🇭", 596 | MK: "🇲🇰", 597 | ML: "🇲🇱", 598 | MM: "🇲🇲", 599 | MN: "🇲🇳", 600 | MO: "🇲🇴", 601 | MP: "🇲🇵", 602 | MQ: "🇲🇶", 603 | MR: "🇲🇷", 604 | MS: "🇲🇸", 605 | MT: "🇲🇹", 606 | MU: "🇲🇺", 607 | MV: "🇲🇻", 608 | MW: "🇲🇼", 609 | MX: "🇲🇽", 610 | MY: "🇲🇾", 611 | MZ: "🇲🇿", 612 | NA: "🇳🇦", 613 | NC: "🇳🇨", 614 | NE: "🇳🇪", 615 | NF: "🇳🇫", 616 | NG: "🇳🇬", 617 | NI: "🇳🇮", 618 | NL: "🇳🇱", 619 | NO: "🇳🇴", 620 | NP: "🇳🇵", 621 | NR: "🇳🇷", 622 | NU: "🇳🇺", 623 | NZ: "🇳🇿", 624 | OM: "🇴🇲", 625 | PA: "🇵🇦", 626 | PE: "🇵🇪", 627 | PF: "🇵🇫", 628 | PG: "🇵🇬", 629 | PH: "🇵🇭", 630 | PK: "🇵🇰", 631 | PL: "🇵🇱", 632 | PM: "🇵🇲", 633 | PN: "🇵🇳", 634 | PR: "🇵🇷", 635 | PS: "🇵🇸", 636 | PT: "🇵🇹", 637 | PW: "🇵🇼", 638 | PY: "🇵🇾", 639 | QA: "🇶🇦", 640 | RE: "🇷🇪", 641 | RO: "🇷🇴", 642 | RS: "🇷🇸", 643 | RU: "🇷🇺", 644 | RW: "🇷🇼", 645 | SA: "🇸🇦", 646 | SB: "🇸🇧", 647 | SC: "🇸🇨", 648 | SCOT: "🏴󠁧󠁢󠁳󠁣󠁴󠁿", 649 | SD: "🇸🇩", 650 | SE: "🇸🇪", 651 | SG: "🇸🇬", 652 | SH: "🇸🇭", 653 | SI: "🇸🇮", 654 | SJ: "🇸🇯", 655 | SK: "🇸🇰", 656 | SL: "🇸🇱", 657 | SM: "🇸🇲", 658 | SN: "🇸🇳", 659 | SO: "🇸🇴", 660 | SR: "🇸🇷", 661 | SS: "🇸🇸", 662 | ST: "🇸🇹", 663 | SV: "🇸🇻", 664 | SX: "🇸🇽", 665 | SY: "🇸🇾", 666 | SZ: "🇸🇿", 667 | TC: "🇹🇨", 668 | TD: "🇹🇩", 669 | TF: "🇹🇫", 670 | TG: "🇹🇬", 671 | TH: "🇹🇭", 672 | TJ: "🇹🇯", 673 | TK: "🇹🇰", 674 | TL: "🇹🇱", 675 | TM: "🇹🇲", 676 | TN: "🇹🇳", 677 | TO: "🇹🇴", 678 | TR: "🇹🇷", 679 | TT: "🇹🇹", 680 | TV: "🇹🇻", 681 | TW: "🇹🇼", 682 | TZ: "🇹🇿", 683 | UA: "🇺🇦", 684 | UG: "🇺🇬", 685 | UM: "🇺🇲", 686 | US: "🇺🇸", 687 | UY: "🇺🇾", 688 | UZ: "🇺🇿", 689 | VA: "🇻🇦", 690 | VC: "🇻🇨", 691 | VE: "🇻🇪", 692 | VG: "🇻🇬", 693 | VI: "🇻🇮", 694 | VN: "🇻🇳", 695 | VU: "🇻🇺", 696 | WF: "🇼🇫", 697 | WS: "🇼🇸", 698 | YE: "🇾🇪", 699 | YT: "🇾🇹", 700 | ZA: "🇿🇦", 701 | ZM: "🇿🇲", 702 | ZW: "🇿🇼" 703 | }[c])) AS Q_FLAG 704 | WHERE Medium = "Audiobook" OR Medium = "Podcast" 705 | SORT Length desc 706 | LIMIT 3 707 | ``` 708 | 709 | 710 | ### Gallery 711 | ```dataview 712 | TABLE without id 713 | ("![](" + Cover + ")") AS "Cover", 714 | P_BookByAuthor + P_MediumIcon + P_FavoriteIcon AS "Title", 715 | Q_YearRating + Q_PagesHours + " || " + Q_FLAG AS "Time and Place", 716 | R_Dates AS "Dates", 717 | "(" + S_ReadingTime + " || " + S_ReadingSpeed + ")" AS "Reading Time" 718 | 719 | FROM "2 Book Log/2022" 720 | 721 | WHERE Medium != null 722 | SORT DateFinished desc 723 | 724 | 725 | FLATTEN link(file.link, Alias) + " by " + Author AS P_BookByAuthor 726 | FLATTEN choice(contains(tags, "Favorite"), "💛", "") AS P_FavoriteIcon 727 | 728 | FLATTEN { 729 | "Book": " 📖 ", 730 | "Audiobook": " 🎧 ", 731 | "Podcast": " 📻 ", 732 | "eBook": " 📃 ", 733 | "GraphicNovel": " 💬 ", 734 | "AcademicBook": " 📚🎓 ", 735 | "AcademicArticle": " 📰 " 736 | }[Medium] AS P_MediumIcon 737 | 738 | 739 | FLATTEN DateStarted + " — " + DateFinished AS R_Dates 740 | 741 | FLATTEN choice(((DateFinished - DateStarted).days = 1), "1 day", choice((DateFinished != DateStarted), (DateFinished - DateStarted).days + " days", "0 days" )) AS S_ReadingTime 742 | 743 | 744 | FLATTEN { 745 | "Book": round(choice((DateFinished = DateStarted), Length, (Length / (DateFinished - DateStarted).days)), 1) + " p/d", 746 | "Audiobook": round(choice((DateFinished = DateStarted), Length, (Length / (DateFinished - DateStarted).days)), 2) + " h/d", 747 | "Podcast": round(choice((DateFinished = DateStarted), Length, (Length / (DateFinished - DateStarted).days)), 2)+ " h/d", 748 | "eBook": round(choice((DateFinished = DateStarted), Length, (Length / (DateFinished - DateStarted).days)), 1) + " p/d", 749 | "GraphicNovel": round(choice((DateFinished = DateStarted), Length, (Length / (DateFinished - DateStarted).days)), 1) + " p/d", 750 | "AcademicBook": round(choice((DateFinished = DateStarted), Length, (Length / (DateFinished - DateStarted).days)), 1) + " p/d", 751 | "AcademicArticle": round(choice((DateFinished = DateStarted), Length, (Length / (DateFinished - DateStarted).days)), 1) + " p/d" 752 | }[Medium] AS S_ReadingSpeed 753 | 754 | FLATTEN Year + " || " + " ⭐ " + Rating + " || " AS Q_YearRating 755 | 756 | FLATTEN { 757 | "Book": Length + " p", 758 | "Audiobook": Length + " h", 759 | "Podcast": Length + " h", 760 | "eBook": Length + " p", 761 | "GraphicNovel": Length + " p", 762 | "AcademicBook": Length + " p", 763 | "AcademicArticle": Length + " p" 764 | }[Medium] AS Q_PagesHours 765 | 766 | 767 | FLATTEN join(map(split(Country, ", "), (c) => { 768 | AD: "🇦🇩", 769 | AE: "🇦🇪", 770 | AF: "🇦🇫", 771 | AG: "🇦🇬", 772 | AI: "🇦🇮", 773 | AL: "🇦🇱", 774 | AM: "🇦🇲", 775 | AO: "🇦🇴", 776 | AQ: "🇦🇶", 777 | AR: "🇦🇷", 778 | AS: "🇦🇸", 779 | AT: "🇦🇹", 780 | AU: "🇦🇺", 781 | AW: "🇦🇼", 782 | AX: "🇦🇽", 783 | AZ: "🇦🇿", 784 | BA: "🇧🇦", 785 | BB: "🇧🇧", 786 | BD: "🇧🇩", 787 | BE: "🇧🇪", 788 | BF: "🇧🇫", 789 | BG: "🇧🇬", 790 | BH: "🇧🇭", 791 | BI: "🇧🇮", 792 | BJ: "🇧🇯", 793 | BL: "🇧🇱", 794 | BM: "🇧🇲", 795 | BN: "🇧🇳", 796 | BO: "🇧🇴", 797 | BQ: "🇧🇶", 798 | BR: "🇧🇷", 799 | BS: "🇧🇸", 800 | BT: "🇧🇹", 801 | BV: "🇧🇻", 802 | BW: "🇧🇼", 803 | BY: "🇧🇾", 804 | BZ: "🇧🇿", 805 | CA: "🇨🇦", 806 | CC: "🇨🇨", 807 | CD: "🇨🇩", 808 | CF: "🇨🇫", 809 | CG: "🇨🇬", 810 | CH: "🇨🇭", 811 | CI: "🇨🇮", 812 | CK: "🇨🇰", 813 | CL: "🇨🇱", 814 | CM: "🇨🇲", 815 | CN: "🇨🇳", 816 | CO: "🇨🇴", 817 | CR: "🇨🇷", 818 | CU: "🇨🇺", 819 | CV: "🇨🇻", 820 | CW: "🇨🇼", 821 | CX: "🇨🇽", 822 | CY: "🇨🇾", 823 | CYMRU: "🏴󠁧󠁢󠁷󠁬󠁳󠁿", 824 | CZ: "🇨🇿", 825 | DE: "🇩🇪", 826 | DJ: "🇩🇯", 827 | DK: "🇩🇰", 828 | DM: "🇩🇲", 829 | DO: "🇩🇴", 830 | DZ: "🇩🇿", 831 | EC: "🇪🇨", 832 | EE: "🇪🇪", 833 | EG: "🇪🇬", 834 | EH: "🇪🇭", 835 | ENG: "🏴󠁧󠁢󠁥󠁮󠁧󠁿", 836 | ER: "🇪🇷", 837 | ES: "🇪🇸", 838 | ET: "🇪🇹", 839 | FI: "🇫🇮", 840 | FJ: "🇫🇯", 841 | FK: "🇫🇰", 842 | FM: "🇫🇲", 843 | FO: "🇫🇴", 844 | FR: "🇫🇷", 845 | GA: "🇬🇦", 846 | GB: "🇬🇧", 847 | GD: "🇬🇩", 848 | GE: "🇬🇪", 849 | GF: "🇬🇫", 850 | GG: "🇬🇬", 851 | GH: "🇬🇭", 852 | GI: "🇬🇮", 853 | GL: "🇬🇱", 854 | GM: "🇬🇲", 855 | GN: "🇬🇳", 856 | GP: "🇬🇵", 857 | GQ: "🇬🇶", 858 | GR: "🇬🇷", 859 | GS: "🇬🇸", 860 | GT: "🇬🇹", 861 | GU: "🇬🇺", 862 | GW: "🇬🇼", 863 | GY: "🇬🇾", 864 | HK: "🇭🇰", 865 | HM: "🇭🇲", 866 | HN: "🇭🇳", 867 | HR: "🇭🇷", 868 | HT: "🇭🇹", 869 | HU: "🇭🇺", 870 | ID: "🇮🇩", 871 | IE: "🇮🇪", 872 | IL: "🇮🇱", 873 | IM: "🇮🇲", 874 | IN: "🇮🇳", 875 | IO: "🇮🇴", 876 | IQ: "🇮🇶", 877 | IR: "🇮🇷", 878 | IS: "🇮🇸", 879 | IT: "🇮🇹", 880 | JE: "🇯🇪", 881 | JM: "🇯🇲", 882 | JO: "🇯🇴", 883 | JP: "🇯🇵", 884 | KE: "🇰🇪", 885 | KG: "🇰🇬", 886 | KH: "🇰🇭", 887 | KI: "🇰🇮", 888 | KM: "🇰🇲", 889 | KN: "🇰🇳", 890 | KP: "🇰🇵", 891 | KR: "🇰🇷", 892 | KW: "🇰🇼", 893 | KY: "🇰🇾", 894 | KZ: "🇰🇿", 895 | LA: "🇱🇦", 896 | LB: "🇱🇧", 897 | LC: "🇱🇨", 898 | LI: "🇱🇮", 899 | LK: "🇱🇰", 900 | LR: "🇱🇷", 901 | LS: "🇱🇸", 902 | LT: "🇱🇹", 903 | LU: "🇱🇺", 904 | LV: "🇱🇻", 905 | LY: "🇱🇾", 906 | MA: "🇲🇦", 907 | MC: "🇲🇨", 908 | MD: "🇲🇩", 909 | ME: "🇲🇪", 910 | MF: "🇲🇫", 911 | MG: "🇲🇬", 912 | MH: "🇲🇭", 913 | MK: "🇲🇰", 914 | ML: "🇲🇱", 915 | MM: "🇲🇲", 916 | MN: "🇲🇳", 917 | MO: "🇲🇴", 918 | MP: "🇲🇵", 919 | MQ: "🇲🇶", 920 | MR: "🇲🇷", 921 | MS: "🇲🇸", 922 | MT: "🇲🇹", 923 | MU: "🇲🇺", 924 | MV: "🇲🇻", 925 | MW: "🇲🇼", 926 | MX: "🇲🇽", 927 | MY: "🇲🇾", 928 | MZ: "🇲🇿", 929 | NA: "🇳🇦", 930 | NC: "🇳🇨", 931 | NE: "🇳🇪", 932 | NF: "🇳🇫", 933 | NG: "🇳🇬", 934 | NI: "🇳🇮", 935 | NL: "🇳🇱", 936 | NO: "🇳🇴", 937 | NP: "🇳🇵", 938 | NR: "🇳🇷", 939 | NU: "🇳🇺", 940 | NZ: "🇳🇿", 941 | OM: "🇴🇲", 942 | PA: "🇵🇦", 943 | PE: "🇵🇪", 944 | PF: "🇵🇫", 945 | PG: "🇵🇬", 946 | PH: "🇵🇭", 947 | PK: "🇵🇰", 948 | PL: "🇵🇱", 949 | PM: "🇵🇲", 950 | PN: "🇵🇳", 951 | PR: "🇵🇷", 952 | PS: "🇵🇸", 953 | PT: "🇵🇹", 954 | PW: "🇵🇼", 955 | PY: "🇵🇾", 956 | QA: "🇶🇦", 957 | RE: "🇷🇪", 958 | RO: "🇷🇴", 959 | RS: "🇷🇸", 960 | RU: "🇷🇺", 961 | RW: "🇷🇼", 962 | SA: "🇸🇦", 963 | SB: "🇸🇧", 964 | SC: "🇸🇨", 965 | SCOT: "🏴󠁧󠁢󠁳󠁣󠁴󠁿", 966 | SD: "🇸🇩", 967 | SE: "🇸🇪", 968 | SG: "🇸🇬", 969 | SH: "🇸🇭", 970 | SI: "🇸🇮", 971 | SJ: "🇸🇯", 972 | SK: "🇸🇰", 973 | SL: "🇸🇱", 974 | SM: "🇸🇲", 975 | SN: "🇸🇳", 976 | SO: "🇸🇴", 977 | SR: "🇸🇷", 978 | SS: "🇸🇸", 979 | ST: "🇸🇹", 980 | SV: "🇸🇻", 981 | SX: "🇸🇽", 982 | SY: "🇸🇾", 983 | SZ: "🇸🇿", 984 | TC: "🇹🇨", 985 | TD: "🇹🇩", 986 | TF: "🇹🇫", 987 | TG: "🇹🇬", 988 | TH: "🇹🇭", 989 | TJ: "🇹🇯", 990 | TK: "🇹🇰", 991 | TL: "🇹🇱", 992 | TM: "🇹🇲", 993 | TN: "🇹🇳", 994 | TO: "🇹🇴", 995 | TR: "🇹🇷", 996 | TT: "🇹🇹", 997 | TV: "🇹🇻", 998 | TW: "🇹🇼", 999 | TZ: "🇹🇿", 1000 | UA: "🇺🇦", 1001 | UG: "🇺🇬", 1002 | UM: "🇺🇲", 1003 | US: "🇺🇸", 1004 | UY: "🇺🇾", 1005 | UZ: "🇺🇿", 1006 | VA: "🇻🇦", 1007 | VC: "🇻🇨", 1008 | VE: "🇻🇪", 1009 | VG: "🇻🇬", 1010 | VI: "🇻🇮", 1011 | VN: "🇻🇳", 1012 | VU: "🇻🇺", 1013 | WF: "🇼🇫", 1014 | WS: "🇼🇸", 1015 | YE: "🇾🇪", 1016 | YT: "🇾🇹", 1017 | ZA: "🇿🇦", 1018 | ZM: "🇿🇲", 1019 | ZW: "🇿🇼" 1020 | }[c])) AS Q_FLAG 1021 | 1022 | 1023 | ``` 1024 | -------------------------------------------------------------------------------- /Trackers and Galleries/Z General/All Audiobooks.md: -------------------------------------------------------------------------------- 1 | --- 2 | obsidianUIMode: preview 3 | cssClasses: cards, cards-cover, cards-2-3, table-max, max 4 | --- 5 | ### Hours listened 6 | ``` dataviewjs 7 | var labels = ["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"]; 8 | var colors = [['#ff6384'],['#36a2eb'],['#ffce56'],['#4bc0c0'],['#9966ff'],['#ff9f40']] 9 | var datasets = []; 10 | 11 | for( 12 | let results of dv.pages('"2 Book Log"') 13 | .where(p => p.DateFinished && p.Length && p.Medium == "Audiobook" || p.Medium == "Podcast") //or p.DateFinished && p.Pages 14 | .sort(p => p.DateFinished, 'asc') 15 | .groupBy(p => (dv.date(p.DateFinished).toFormat("MMMM yyyy"))) 16 | .sort(ym => ym.rows.DateFinished.first(), 'asc') 17 | .groupBy(ym => (dv.date(ym.rows.DateFinished.first()).year)) 18 | .sort(y => y.key, 'asc') 19 | ) { 20 | let lbl = "Hours listened in " + results.key; 21 | let backCol = colors[datasets.length%colors.length]; 22 | let bordCol = colors[datasets.length%colors.length]; 23 | let bWidth = 1; 24 | 25 | let innerArray = [0,0,0,0,0,0,0,0,0,0,0,0]; 26 | results.rows.forEach(m => { 27 | let numBooks = dv.array(m.rows).Length.array().reduce((s, r) => s + r, 0); 28 | //OR .Pages.array().reduce((s,r) => s + r, 0); 29 | innerArray[m.rows.DateFinished.first().month-1] = numBooks; 30 | }) 31 | 32 | let da = {label: lbl, data: innerArray, backgroundColor: backCol, 33 | borderColor: bordCol, borderWidth: bWidth}; 34 | 35 | datasets.push(da) 36 | } 37 | 38 | const chartData = { 39 | type: 'line', 40 | data: {labels: labels, datasets: datasets}, 41 | options: {scales: {yAxis: {suggestedMin: 0, ticks: {stepSize: 1}}} 42 | }} 43 | window.renderChart(chartData, this.container); 44 | ``` 45 | 46 | ```dataviewjs 47 | let BookCount = (dv.pages('"2 Book Log"').where(p => p.Medium == "Book" || p.Medium == "eBook").length); 48 | 49 | let AudioCount = (dv.pages('"2 Book Log"').where(p => p.Medium == "Audiobook" || p.Medium == "Podcast").length); 50 | 51 | let pagesum = 0; 52 | for(let i = 0; i < dv.pages('"2 Book Log"').where(p => p.Medium == "Book" || p.Medium == "eBook").length; i++) { 53 | if(dv.pages('"2 Book Log"').where(p => p.Medium == "Book" || p.Medium == "eBook")[i].Length) { 54 | pagesum += dv.pages('"2 Book Log"').where(p => p.Medium == "Book" || p.Medium == "eBook")[i].Length; 55 | } 56 | } 57 | 58 | let hoursum = 0; 59 | for(let i = 0; i < dv.pages('"2 Book Log"').where(p => p.Medium == "Audiobook" || p.Medium == "Podcast").length;i++) { 60 | if(dv.pages('"2 Book Log"').where(p => p.Medium == "Audiobook" || p.Medium == "Podcast")[i].Length) { 61 | hoursum += dv.pages('"2 Book Log"').where(p => p.Medium == "Audiobook" || p.Medium == "Podcast")[i].Length; 62 | } 63 | } 64 | 65 | let today = DateTime.now().toFormat("ooo"); 66 | 67 | dv.paragraph("# Since 2020 I've listened to " + AudioCount + " audiobooks of which " + dv.pages('"2 Book Log"').where(p => p.Medium == "Podcast").length + " were podcasts.") 68 | 69 | dv.paragraph("# I listened to " + (hoursum.toFixed(1)) + " hours.") 70 | 71 | ``` 72 | 73 | ### Gallery 74 | ```dataview 75 | TABLE without id 76 | ("![](" + Cover + ")") AS "Cover", 77 | P_BookByAuthor + P_MediumIcon + P_FavoriteIcon AS "Title", 78 | Q_YearRating + Q_PagesHours + " || " + Q_FLAG AS "Time and Place", 79 | R_Dates AS "Dates", 80 | S_ReadingTime AS "Reading Time" 81 | 82 | FROM "2 Book Log" 83 | 84 | WHERE Medium = "Audiobook" OR Medium = "Podcast" 85 | SORT DateFinished desc 86 | 87 | 88 | FLATTEN link(file.link, Alias) + " by " + Author AS P_BookByAuthor 89 | FLATTEN choice(contains(tags, "Favorite"), "💛", "") AS P_FavoriteIcon 90 | 91 | FLATTEN { 92 | "Book": " 📖 ", 93 | "Audiobook": " 🎧 ", 94 | "Podcast": " 📻 ", 95 | "eBook": " 📃 ", 96 | "GraphicNovel": " 💬 ", 97 | "AcademicBook": " 📚🎓 ", 98 | "AcademicArticle": " 📰 " 99 | }[Medium] AS P_MediumIcon 100 | 101 | 102 | 103 | FLATTEN DateStarted + " — " + DateFinished AS R_Dates 104 | FLATTEN choice(((DateFinished - DateStarted).days = 1), "1 day", choice((DateFinished != DateStarted), (DateFinished - DateStarted).days + " days", "0 days" )) AS S_ReadingTime 105 | 106 | 107 | 108 | FLATTEN Year + " || " + " ⭐ " + Rating + " || " AS Q_YearRating 109 | 110 | FLATTEN { 111 | "Book": Length + " p", 112 | "Audiobook": Length + " h", 113 | "Podcast": Length + " h", 114 | "eBook": Length + " p", 115 | "GraphicNovel": Length + " p", 116 | "AcademicBook": Length + " p", 117 | "AcademicArticle": Length + " p" 118 | }[Medium] AS Q_PagesHours 119 | 120 | 121 | FLATTEN join(map(split(Country, ", "), (c) => { 122 | AD: "🇦🇩", 123 | AE: "🇦🇪", 124 | AF: "🇦🇫", 125 | AG: "🇦🇬", 126 | AI: "🇦🇮", 127 | AL: "🇦🇱", 128 | AM: "🇦🇲", 129 | AO: "🇦🇴", 130 | AQ: "🇦🇶", 131 | AR: "🇦🇷", 132 | AS: "🇦🇸", 133 | AT: "🇦🇹", 134 | AU: "🇦🇺", 135 | AW: "🇦🇼", 136 | AX: "🇦🇽", 137 | AZ: "🇦🇿", 138 | BA: "🇧🇦", 139 | BB: "🇧🇧", 140 | BD: "🇧🇩", 141 | BE: "🇧🇪", 142 | BF: "🇧🇫", 143 | BG: "🇧🇬", 144 | BH: "🇧🇭", 145 | BI: "🇧🇮", 146 | BJ: "🇧🇯", 147 | BL: "🇧🇱", 148 | BM: "🇧🇲", 149 | BN: "🇧🇳", 150 | BO: "🇧🇴", 151 | BQ: "🇧🇶", 152 | BR: "🇧🇷", 153 | BS: "🇧🇸", 154 | BT: "🇧🇹", 155 | BV: "🇧🇻", 156 | BW: "🇧🇼", 157 | BY: "🇧🇾", 158 | BZ: "🇧🇿", 159 | CA: "🇨🇦", 160 | CC: "🇨🇨", 161 | CD: "🇨🇩", 162 | CF: "🇨🇫", 163 | CG: "🇨🇬", 164 | CH: "🇨🇭", 165 | CI: "🇨🇮", 166 | CK: "🇨🇰", 167 | CL: "🇨🇱", 168 | CM: "🇨🇲", 169 | CN: "🇨🇳", 170 | CO: "🇨🇴", 171 | CR: "🇨🇷", 172 | CU: "🇨🇺", 173 | CV: "🇨🇻", 174 | CW: "🇨🇼", 175 | CX: "🇨🇽", 176 | CY: "🇨🇾", 177 | CYMRU: "🏴󠁧󠁢󠁷󠁬󠁳󠁿", 178 | CZ: "🇨🇿", 179 | DE: "🇩🇪", 180 | DJ: "🇩🇯", 181 | DK: "🇩🇰", 182 | DM: "🇩🇲", 183 | DO: "🇩🇴", 184 | DZ: "🇩🇿", 185 | EC: "🇪🇨", 186 | EE: "🇪🇪", 187 | EG: "🇪🇬", 188 | EH: "🇪🇭", 189 | ENG: "🏴󠁧󠁢󠁥󠁮󠁧󠁿", 190 | ER: "🇪🇷", 191 | ES: "🇪🇸", 192 | ET: "🇪🇹", 193 | FI: "🇫🇮", 194 | FJ: "🇫🇯", 195 | FK: "🇫🇰", 196 | FM: "🇫🇲", 197 | FO: "🇫🇴", 198 | FR: "🇫🇷", 199 | GA: "🇬🇦", 200 | GB: "🇬🇧", 201 | GD: "🇬🇩", 202 | GE: "🇬🇪", 203 | GF: "🇬🇫", 204 | GG: "🇬🇬", 205 | GH: "🇬🇭", 206 | GI: "🇬🇮", 207 | GL: "🇬🇱", 208 | GM: "🇬🇲", 209 | GN: "🇬🇳", 210 | GP: "🇬🇵", 211 | GQ: "🇬🇶", 212 | GR: "🇬🇷", 213 | GS: "🇬🇸", 214 | GT: "🇬🇹", 215 | GU: "🇬🇺", 216 | GW: "🇬🇼", 217 | GY: "🇬🇾", 218 | HK: "🇭🇰", 219 | HM: "🇭🇲", 220 | HN: "🇭🇳", 221 | HR: "🇭🇷", 222 | HT: "🇭🇹", 223 | HU: "🇭🇺", 224 | ID: "🇮🇩", 225 | IE: "🇮🇪", 226 | IL: "🇮🇱", 227 | IM: "🇮🇲", 228 | IN: "🇮🇳", 229 | IO: "🇮🇴", 230 | IQ: "🇮🇶", 231 | IR: "🇮🇷", 232 | IS: "🇮🇸", 233 | IT: "🇮🇹", 234 | JE: "🇯🇪", 235 | JM: "🇯🇲", 236 | JO: "🇯🇴", 237 | JP: "🇯🇵", 238 | KE: "🇰🇪", 239 | KG: "🇰🇬", 240 | KH: "🇰🇭", 241 | KI: "🇰🇮", 242 | KM: "🇰🇲", 243 | KN: "🇰🇳", 244 | KP: "🇰🇵", 245 | KR: "🇰🇷", 246 | KW: "🇰🇼", 247 | KY: "🇰🇾", 248 | KZ: "🇰🇿", 249 | LA: "🇱🇦", 250 | LB: "🇱🇧", 251 | LC: "🇱🇨", 252 | LI: "🇱🇮", 253 | LK: "🇱🇰", 254 | LR: "🇱🇷", 255 | LS: "🇱🇸", 256 | LT: "🇱🇹", 257 | LU: "🇱🇺", 258 | LV: "🇱🇻", 259 | LY: "🇱🇾", 260 | MA: "🇲🇦", 261 | MC: "🇲🇨", 262 | MD: "🇲🇩", 263 | ME: "🇲🇪", 264 | MF: "🇲🇫", 265 | MG: "🇲🇬", 266 | MH: "🇲🇭", 267 | MK: "🇲🇰", 268 | ML: "🇲🇱", 269 | MM: "🇲🇲", 270 | MN: "🇲🇳", 271 | MO: "🇲🇴", 272 | MP: "🇲🇵", 273 | MQ: "🇲🇶", 274 | MR: "🇲🇷", 275 | MS: "🇲🇸", 276 | MT: "🇲🇹", 277 | MU: "🇲🇺", 278 | MV: "🇲🇻", 279 | MW: "🇲🇼", 280 | MX: "🇲🇽", 281 | MY: "🇲🇾", 282 | MZ: "🇲🇿", 283 | NA: "🇳🇦", 284 | NC: "🇳🇨", 285 | NE: "🇳🇪", 286 | NF: "🇳🇫", 287 | NG: "🇳🇬", 288 | NI: "🇳🇮", 289 | NL: "🇳🇱", 290 | NO: "🇳🇴", 291 | NP: "🇳🇵", 292 | NR: "🇳🇷", 293 | NU: "🇳🇺", 294 | NZ: "🇳🇿", 295 | OM: "🇴🇲", 296 | PA: "🇵🇦", 297 | PE: "🇵🇪", 298 | PF: "🇵🇫", 299 | PG: "🇵🇬", 300 | PH: "🇵🇭", 301 | PK: "🇵🇰", 302 | PL: "🇵🇱", 303 | PM: "🇵🇲", 304 | PN: "🇵🇳", 305 | PR: "🇵🇷", 306 | PS: "🇵🇸", 307 | PT: "🇵🇹", 308 | PW: "🇵🇼", 309 | PY: "🇵🇾", 310 | QA: "🇶🇦", 311 | RE: "🇷🇪", 312 | RO: "🇷🇴", 313 | RS: "🇷🇸", 314 | RU: "🇷🇺", 315 | RW: "🇷🇼", 316 | SA: "🇸🇦", 317 | SB: "🇸🇧", 318 | SC: "🇸🇨", 319 | SCOT: "🏴󠁧󠁢󠁳󠁣󠁴󠁿", 320 | SD: "🇸🇩", 321 | SE: "🇸🇪", 322 | SG: "🇸🇬", 323 | SH: "🇸🇭", 324 | SI: "🇸🇮", 325 | SJ: "🇸🇯", 326 | SK: "🇸🇰", 327 | SL: "🇸🇱", 328 | SM: "🇸🇲", 329 | SN: "🇸🇳", 330 | SO: "🇸🇴", 331 | SR: "🇸🇷", 332 | SS: "🇸🇸", 333 | ST: "🇸🇹", 334 | SV: "🇸🇻", 335 | SX: "🇸🇽", 336 | SY: "🇸🇾", 337 | SZ: "🇸🇿", 338 | TC: "🇹🇨", 339 | TD: "🇹🇩", 340 | TF: "🇹🇫", 341 | TG: "🇹🇬", 342 | TH: "🇹🇭", 343 | TJ: "🇹🇯", 344 | TK: "🇹🇰", 345 | TL: "🇹🇱", 346 | TM: "🇹🇲", 347 | TN: "🇹🇳", 348 | TO: "🇹🇴", 349 | TR: "🇹🇷", 350 | TT: "🇹🇹", 351 | TV: "🇹🇻", 352 | TW: "🇹🇼", 353 | TZ: "🇹🇿", 354 | UA: "🇺🇦", 355 | UG: "🇺🇬", 356 | UM: "🇺🇲", 357 | US: "🇺🇸", 358 | UY: "🇺🇾", 359 | UZ: "🇺🇿", 360 | VA: "🇻🇦", 361 | VC: "🇻🇨", 362 | VE: "🇻🇪", 363 | VG: "🇻🇬", 364 | VI: "🇻🇮", 365 | VN: "🇻🇳", 366 | VU: "🇻🇺", 367 | WF: "🇼🇫", 368 | WS: "🇼🇸", 369 | YE: "🇾🇪", 370 | YT: "🇾🇹", 371 | ZA: "🇿🇦", 372 | ZM: "🇿🇲", 373 | ZW: "🇿🇼" 374 | }[c])) AS Q_FLAG 375 | 376 | ``` 377 | 378 | 379 | 380 | 381 | 382 | 383 | 384 | 385 | 386 | 387 | -------------------------------------------------------------------------------- /Trackers and Galleries/Z General/All Books.md: -------------------------------------------------------------------------------- 1 | --- 2 | obsidianUIMode: preview 3 | cssClasses: cards, cards-cover, cards-2-3, table-max, max 4 | --- 5 | ### Pages read 6 | ``` dataviewjs 7 | var labels = ["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"]; 8 | var colors = [['#ff6384'],['#36a2eb'],['#ffce56'],['#4bc0c0'],['#9966ff'],['#ff9f40']] 9 | var datasets = []; 10 | 11 | for( 12 | let results of dv.pages('"2 Book Log"') 13 | .where(p => p.DateFinished && p.Length && p.Medium == "Book" || p.Medium == "eBook" || p.Medium == "GraphicNovel" || p.Medium == p.Medium == "AcademicBook" || p.Medium == "AcademicArticle") 14 | .sort(p => p.DateFinished, 'asc') 15 | .groupBy(p => (dv.date(p.DateFinished).toFormat("MMMM yyyy"))) 16 | .sort(ym => ym.rows.DateFinished.first(), 'asc') 17 | .groupBy(ym => (dv.date(ym.rows.DateFinished.first()).year)) 18 | .sort(y => y.key, 'asc') 19 | ) { 20 | let lbl = "Pages read in " + results.key; 21 | let backCol = colors[datasets.length%colors.length]; 22 | let bordCol = colors[datasets.length%colors.length]; 23 | let bWidth = 1; 24 | 25 | let innerArray = [0,0,0,0,0,0,0,0,0,0,0,0]; 26 | results.rows.forEach(m => { 27 | let numBooks = dv.array(m.rows).Length.array().reduce((s, r) => s + r, 0); 28 | //OR .Length.array().reduce((s,r) => s + r, 0); 29 | innerArray[m.rows.DateFinished.first().month-1] = numBooks; 30 | }) 31 | 32 | let da = {label: lbl, data: innerArray, backgroundColor: backCol, 33 | borderColor: bordCol, borderWidth: bWidth}; 34 | 35 | datasets.push(da) 36 | } 37 | 38 | const chartData = { 39 | type: 'line', 40 | data: {labels: labels, datasets: datasets}, 41 | options: {scales: {yAxis: {suggestedMin: 0, ticks: {stepSize: 1}}} 42 | }} 43 | window.renderChart(chartData, this.container); 44 | ``` 45 | 46 | 47 | ```dataviewjs 48 | let BookCount = (dv.pages('"2 Book Log"').where(p => p.Medium == "Book" || p.Medium == "eBook" || p.Medium == "GraphicNovel").length); 49 | 50 | let pagesum = 0; 51 | for(let i = 0; i < dv.pages('"2 Book Log"').where(p => p.Medium == "Book" || p.Medium == "eBook" || p.Medium == "GraphicNovel" || p.Medium == "AcademicBook" || p.Medium == "AcademicArticle").length; i++) { 52 | if(dv.pages('"2 Book Log"').where(p => p.Medium == "Book" || p.Medium == "eBook" || p.Medium == "GraphicNovel" || p.Medium == "AcademicBook" || p.Medium == "AcademicArticle")[i].Length) { 53 | pagesum += dv.pages('"2 Book Log"').where(p => p.Medium == "Book" || p.Medium == "eBook" || p.Medium == "GraphicNovel" || p.Medium == "AcademicBook" || p.Medium == "AcademicArticle")[i].Length; 54 | } 55 | } 56 | 57 | 58 | let today = DateTime.now().toFormat("ooo"); 59 | 60 | dv.paragraph("# Since 2020 I've read " + BookCount + " books. ") 61 | 62 | dv.paragraph("# I've read " + pagesum + " pages.") 63 | 64 | 65 | ``` 66 | 67 | ### Gallery 68 | ```dataview 69 | TABLE without id 70 | ("![](" + Cover + ")") AS "Cover", 71 | P_BookByAuthor + P_MediumIcon + P_FavoriteIcon AS "Title", 72 | Q_YearRating + Q_PagesHours + " || " + Q_FLAG AS "Time and Place", 73 | R_Dates AS "Dates", 74 | S_ReadingTime AS "Reading Time" 75 | 76 | FROM "2 Book Log" 77 | 78 | WHERE Medium = "Book" OR Medium = "eBook" OR Medium = "GraphicNovel" 79 | SORT DateFinished desc 80 | 81 | 82 | FLATTEN link(file.link, Alias) + " by " + Author AS P_BookByAuthor 83 | FLATTEN choice(contains(tags, "Favorite"), "💛", "") AS P_FavoriteIcon 84 | 85 | FLATTEN { 86 | "Book": " 📖 ", 87 | "Audiobook": " 🎧 ", 88 | "Podcast": " 📻 ", 89 | "eBook": " 📃 ", 90 | "GraphicNovel": " 💬 ", 91 | "AcademicBook": " 📚🎓 ", 92 | "AcademicArticle": " 📰 " 93 | }[Medium] AS P_MediumIcon 94 | 95 | 96 | 97 | FLATTEN DateStarted + " — " + DateFinished AS R_Dates 98 | FLATTEN choice(((DateFinished - DateStarted).days = 1), "1 day", choice((DateFinished != DateStarted), (DateFinished - DateStarted).days + " days", "0 days" )) AS S_ReadingTime 99 | 100 | 101 | 102 | FLATTEN Year + " || " + " ⭐ " + Rating + " || " AS Q_YearRating 103 | 104 | FLATTEN { 105 | "Book": Length + " p", 106 | "Audiobook": Length + " h", 107 | "Podcast": Length + " h", 108 | "eBook": Length + " p", 109 | "GraphicNovel": Length + " p", 110 | "AcademicBook": Length + " p", 111 | "AcademicArticle": Length + " p" 112 | }[Medium] AS Q_PagesHours 113 | 114 | 115 | FLATTEN join(map(split(Country, ", "), (c) => { 116 | AD: "🇦🇩", 117 | AE: "🇦🇪", 118 | AF: "🇦🇫", 119 | AG: "🇦🇬", 120 | AI: "🇦🇮", 121 | AL: "🇦🇱", 122 | AM: "🇦🇲", 123 | AO: "🇦🇴", 124 | AQ: "🇦🇶", 125 | AR: "🇦🇷", 126 | AS: "🇦🇸", 127 | AT: "🇦🇹", 128 | AU: "🇦🇺", 129 | AW: "🇦🇼", 130 | AX: "🇦🇽", 131 | AZ: "🇦🇿", 132 | BA: "🇧🇦", 133 | BB: "🇧🇧", 134 | BD: "🇧🇩", 135 | BE: "🇧🇪", 136 | BF: "🇧🇫", 137 | BG: "🇧🇬", 138 | BH: "🇧🇭", 139 | BI: "🇧🇮", 140 | BJ: "🇧🇯", 141 | BL: "🇧🇱", 142 | BM: "🇧🇲", 143 | BN: "🇧🇳", 144 | BO: "🇧🇴", 145 | BQ: "🇧🇶", 146 | BR: "🇧🇷", 147 | BS: "🇧🇸", 148 | BT: "🇧🇹", 149 | BV: "🇧🇻", 150 | BW: "🇧🇼", 151 | BY: "🇧🇾", 152 | BZ: "🇧🇿", 153 | CA: "🇨🇦", 154 | CC: "🇨🇨", 155 | CD: "🇨🇩", 156 | CF: "🇨🇫", 157 | CG: "🇨🇬", 158 | CH: "🇨🇭", 159 | CI: "🇨🇮", 160 | CK: "🇨🇰", 161 | CL: "🇨🇱", 162 | CM: "🇨🇲", 163 | CN: "🇨🇳", 164 | CO: "🇨🇴", 165 | CR: "🇨🇷", 166 | CU: "🇨🇺", 167 | CV: "🇨🇻", 168 | CW: "🇨🇼", 169 | CX: "🇨🇽", 170 | CY: "🇨🇾", 171 | CYMRU: "🏴󠁧󠁢󠁷󠁬󠁳󠁿", 172 | CZ: "🇨🇿", 173 | DE: "🇩🇪", 174 | DJ: "🇩🇯", 175 | DK: "🇩🇰", 176 | DM: "🇩🇲", 177 | DO: "🇩🇴", 178 | DZ: "🇩🇿", 179 | EC: "🇪🇨", 180 | EE: "🇪🇪", 181 | EG: "🇪🇬", 182 | EH: "🇪🇭", 183 | ENG: "🏴󠁧󠁢󠁥󠁮󠁧󠁿", 184 | ER: "🇪🇷", 185 | ES: "🇪🇸", 186 | ET: "🇪🇹", 187 | FI: "🇫🇮", 188 | FJ: "🇫🇯", 189 | FK: "🇫🇰", 190 | FM: "🇫🇲", 191 | FO: "🇫🇴", 192 | FR: "🇫🇷", 193 | GA: "🇬🇦", 194 | GB: "🇬🇧", 195 | GD: "🇬🇩", 196 | GE: "🇬🇪", 197 | GF: "🇬🇫", 198 | GG: "🇬🇬", 199 | GH: "🇬🇭", 200 | GI: "🇬🇮", 201 | GL: "🇬🇱", 202 | GM: "🇬🇲", 203 | GN: "🇬🇳", 204 | GP: "🇬🇵", 205 | GQ: "🇬🇶", 206 | GR: "🇬🇷", 207 | GS: "🇬🇸", 208 | GT: "🇬🇹", 209 | GU: "🇬🇺", 210 | GW: "🇬🇼", 211 | GY: "🇬🇾", 212 | HK: "🇭🇰", 213 | HM: "🇭🇲", 214 | HN: "🇭🇳", 215 | HR: "🇭🇷", 216 | HT: "🇭🇹", 217 | HU: "🇭🇺", 218 | ID: "🇮🇩", 219 | IE: "🇮🇪", 220 | IL: "🇮🇱", 221 | IM: "🇮🇲", 222 | IN: "🇮🇳", 223 | IO: "🇮🇴", 224 | IQ: "🇮🇶", 225 | IR: "🇮🇷", 226 | IS: "🇮🇸", 227 | IT: "🇮🇹", 228 | JE: "🇯🇪", 229 | JM: "🇯🇲", 230 | JO: "🇯🇴", 231 | JP: "🇯🇵", 232 | KE: "🇰🇪", 233 | KG: "🇰🇬", 234 | KH: "🇰🇭", 235 | KI: "🇰🇮", 236 | KM: "🇰🇲", 237 | KN: "🇰🇳", 238 | KP: "🇰🇵", 239 | KR: "🇰🇷", 240 | KW: "🇰🇼", 241 | KY: "🇰🇾", 242 | KZ: "🇰🇿", 243 | LA: "🇱🇦", 244 | LB: "🇱🇧", 245 | LC: "🇱🇨", 246 | LI: "🇱🇮", 247 | LK: "🇱🇰", 248 | LR: "🇱🇷", 249 | LS: "🇱🇸", 250 | LT: "🇱🇹", 251 | LU: "🇱🇺", 252 | LV: "🇱🇻", 253 | LY: "🇱🇾", 254 | MA: "🇲🇦", 255 | MC: "🇲🇨", 256 | MD: "🇲🇩", 257 | ME: "🇲🇪", 258 | MF: "🇲🇫", 259 | MG: "🇲🇬", 260 | MH: "🇲🇭", 261 | MK: "🇲🇰", 262 | ML: "🇲🇱", 263 | MM: "🇲🇲", 264 | MN: "🇲🇳", 265 | MO: "🇲🇴", 266 | MP: "🇲🇵", 267 | MQ: "🇲🇶", 268 | MR: "🇲🇷", 269 | MS: "🇲🇸", 270 | MT: "🇲🇹", 271 | MU: "🇲🇺", 272 | MV: "🇲🇻", 273 | MW: "🇲🇼", 274 | MX: "🇲🇽", 275 | MY: "🇲🇾", 276 | MZ: "🇲🇿", 277 | NA: "🇳🇦", 278 | NC: "🇳🇨", 279 | NE: "🇳🇪", 280 | NF: "🇳🇫", 281 | NG: "🇳🇬", 282 | NI: "🇳🇮", 283 | NL: "🇳🇱", 284 | NO: "🇳🇴", 285 | NP: "🇳🇵", 286 | NR: "🇳🇷", 287 | NU: "🇳🇺", 288 | NZ: "🇳🇿", 289 | OM: "🇴🇲", 290 | PA: "🇵🇦", 291 | PE: "🇵🇪", 292 | PF: "🇵🇫", 293 | PG: "🇵🇬", 294 | PH: "🇵🇭", 295 | PK: "🇵🇰", 296 | PL: "🇵🇱", 297 | PM: "🇵🇲", 298 | PN: "🇵🇳", 299 | PR: "🇵🇷", 300 | PS: "🇵🇸", 301 | PT: "🇵🇹", 302 | PW: "🇵🇼", 303 | PY: "🇵🇾", 304 | QA: "🇶🇦", 305 | RE: "🇷🇪", 306 | RO: "🇷🇴", 307 | RS: "🇷🇸", 308 | RU: "🇷🇺", 309 | RW: "🇷🇼", 310 | SA: "🇸🇦", 311 | SB: "🇸🇧", 312 | SC: "🇸🇨", 313 | SCOT: "🏴󠁧󠁢󠁳󠁣󠁴󠁿", 314 | SD: "🇸🇩", 315 | SE: "🇸🇪", 316 | SG: "🇸🇬", 317 | SH: "🇸🇭", 318 | SI: "🇸🇮", 319 | SJ: "🇸🇯", 320 | SK: "🇸🇰", 321 | SL: "🇸🇱", 322 | SM: "🇸🇲", 323 | SN: "🇸🇳", 324 | SO: "🇸🇴", 325 | SR: "🇸🇷", 326 | SS: "🇸🇸", 327 | ST: "🇸🇹", 328 | SV: "🇸🇻", 329 | SX: "🇸🇽", 330 | SY: "🇸🇾", 331 | SZ: "🇸🇿", 332 | TC: "🇹🇨", 333 | TD: "🇹🇩", 334 | TF: "🇹🇫", 335 | TG: "🇹🇬", 336 | TH: "🇹🇭", 337 | TJ: "🇹🇯", 338 | TK: "🇹🇰", 339 | TL: "🇹🇱", 340 | TM: "🇹🇲", 341 | TN: "🇹🇳", 342 | TO: "🇹🇴", 343 | TR: "🇹🇷", 344 | TT: "🇹🇹", 345 | TV: "🇹🇻", 346 | TW: "🇹🇼", 347 | TZ: "🇹🇿", 348 | UA: "🇺🇦", 349 | UG: "🇺🇬", 350 | UM: "🇺🇲", 351 | US: "🇺🇸", 352 | UY: "🇺🇾", 353 | UZ: "🇺🇿", 354 | VA: "🇻🇦", 355 | VC: "🇻🇨", 356 | VE: "🇻🇪", 357 | VG: "🇻🇬", 358 | VI: "🇻🇮", 359 | VN: "🇻🇳", 360 | VU: "🇻🇺", 361 | WF: "🇼🇫", 362 | WS: "🇼🇸", 363 | YE: "🇾🇪", 364 | YT: "🇾🇹", 365 | ZA: "🇿🇦", 366 | ZM: "🇿🇲", 367 | ZW: "🇿🇼" 368 | }[c])) AS Q_FLAG 369 | 370 | ``` 371 | 372 | -------------------------------------------------------------------------------- /Trackers and Galleries/Z General/Book Gallery since 2020.md: -------------------------------------------------------------------------------- 1 | --- 2 | banner: "Trackers and Galleries/Things/Attachments/Banners/other-library.jpg" 3 | obsidianUIMode: preview 4 | cssClasses: cards, cards-cover, cards-2-3, table-max, max 5 | banner_y: 0.18273 6 | --- 7 | `button-onlyaudio` `button-onlybooks` 8 | `button-2022` `button-2023` 9 | `button-readingstats` 10 | 11 | ### Gallery 12 | ```dataview 13 | TABLE without id 14 | ("![](" + Cover + ")") AS "Cover", 15 | P_BookByAuthor + P_MediumIcon + P_FavoriteIcon AS "Title", 16 | Q_YearRating + Q_PagesHours + " || " + Q_FLAG AS "Time and Place", 17 | R_Dates AS "Dates", 18 | "(" + S_ReadingTime + " || " + S_ReadingSpeed + ")" AS "Reading Time" 19 | 20 | FROM "2 Book Log" 21 | 22 | WHERE Medium != null 23 | SORT DateFinished desc 24 | 25 | 26 | FLATTEN link(file.link, Alias) + " by " + Author AS P_BookByAuthor 27 | FLATTEN choice(contains(tags, "Favorite"), "💛", "") AS P_FavoriteIcon 28 | 29 | FLATTEN { 30 | "Book": " 📖 ", 31 | "Audiobook": " 🎧 ", 32 | "Podcast": " 📻 ", 33 | "eBook": " 📃 ", 34 | "GraphicNovel": " 💬 ", 35 | "AcademicBook": " 📚🎓 ", 36 | "AcademicArticle": " 📰 " 37 | }[Medium] AS P_MediumIcon 38 | 39 | 40 | 41 | FLATTEN DateStarted + " — " + DateFinished AS R_Dates 42 | 43 | FLATTEN choice(((DateFinished - DateStarted).days = 1), "1 day", choice((DateFinished != DateStarted), (DateFinished - DateStarted).days + " days", "0 days" )) AS S_ReadingTime 44 | 45 | 46 | FLATTEN { 47 | "Book": round(choice((DateFinished = DateStarted), Length, (Length / (DateFinished - DateStarted).days)), 1) + " p/d", 48 | "Audiobook": round(choice((DateFinished = DateStarted), Length, (Length / (DateFinished - DateStarted).days)), 2) + " h/d", 49 | "Podcast": round(choice((DateFinished = DateStarted), Length, (Length / (DateFinished - DateStarted).days)), 2)+ " h/d", 50 | "eBook": round(choice((DateFinished = DateStarted), Length, (Length / (DateFinished - DateStarted).days)), 1) + " p/d", 51 | "GraphicNovel": round(choice((DateFinished = DateStarted), Length, (Length / (DateFinished - DateStarted).days)), 1) + " p/d", 52 | "AcademicBook": round(choice((DateFinished = DateStarted), Length, (Length / (DateFinished - DateStarted).days)), 1) + " p/d", 53 | "AcademicArticle": round(choice((DateFinished = DateStarted), Length, (Length / (DateFinished - DateStarted).days)), 1) + " p/d" 54 | }[Medium] AS S_ReadingSpeed 55 | 56 | FLATTEN Year + " || " + " ⭐ " + Rating + " || " AS Q_YearRating 57 | 58 | FLATTEN { 59 | "Book": Length + " p", 60 | "Audiobook": Length + " h", 61 | "Podcast": Length + " h", 62 | "eBook": Length + " p", 63 | "GraphicNovel": Length + " p", 64 | "AcademicBook": Length + " p", 65 | "AcademicArticle": Length + " p" 66 | }[Medium] AS Q_PagesHours 67 | 68 | FLATTEN join(map(split(Country, ", "), (c) => { 69 | AD: "🇦🇩", 70 | AE: "🇦🇪", 71 | AF: "🇦🇫", 72 | AG: "🇦🇬", 73 | AI: "🇦🇮", 74 | AL: "🇦🇱", 75 | AM: "🇦🇲", 76 | AO: "🇦🇴", 77 | AQ: "🇦🇶", 78 | AR: "🇦🇷", 79 | AS: "🇦🇸", 80 | AT: "🇦🇹", 81 | AU: "🇦🇺", 82 | AW: "🇦🇼", 83 | AX: "🇦🇽", 84 | AZ: "🇦🇿", 85 | BA: "🇧🇦", 86 | BB: "🇧🇧", 87 | BD: "🇧🇩", 88 | BE: "🇧🇪", 89 | BF: "🇧🇫", 90 | BG: "🇧🇬", 91 | BH: "🇧🇭", 92 | BI: "🇧🇮", 93 | BJ: "🇧🇯", 94 | BL: "🇧🇱", 95 | BM: "🇧🇲", 96 | BN: "🇧🇳", 97 | BO: "🇧🇴", 98 | BQ: "🇧🇶", 99 | BR: "🇧🇷", 100 | BS: "🇧🇸", 101 | BT: "🇧🇹", 102 | BV: "🇧🇻", 103 | BW: "🇧🇼", 104 | BY: "🇧🇾", 105 | BZ: "🇧🇿", 106 | CA: "🇨🇦", 107 | CC: "🇨🇨", 108 | CD: "🇨🇩", 109 | CF: "🇨🇫", 110 | CG: "🇨🇬", 111 | CH: "🇨🇭", 112 | CI: "🇨🇮", 113 | CK: "🇨🇰", 114 | CL: "🇨🇱", 115 | CM: "🇨🇲", 116 | CN: "🇨🇳", 117 | CO: "🇨🇴", 118 | CR: "🇨🇷", 119 | CU: "🇨🇺", 120 | CV: "🇨🇻", 121 | CW: "🇨🇼", 122 | CX: "🇨🇽", 123 | CY: "🇨🇾", 124 | CYMRU: "🏴󠁧󠁢󠁷󠁬󠁳󠁿", 125 | CZ: "🇨🇿", 126 | DE: "🇩🇪", 127 | DJ: "🇩🇯", 128 | DK: "🇩🇰", 129 | DM: "🇩🇲", 130 | DO: "🇩🇴", 131 | DZ: "🇩🇿", 132 | EC: "🇪🇨", 133 | EE: "🇪🇪", 134 | EG: "🇪🇬", 135 | EH: "🇪🇭", 136 | ENG: "🏴󠁧󠁢󠁥󠁮󠁧󠁿", 137 | ER: "🇪🇷", 138 | ES: "🇪🇸", 139 | ET: "🇪🇹", 140 | FI: "🇫🇮", 141 | FJ: "🇫🇯", 142 | FK: "🇫🇰", 143 | FM: "🇫🇲", 144 | FO: "🇫🇴", 145 | FR: "🇫🇷", 146 | GA: "🇬🇦", 147 | GB: "🇬🇧", 148 | GD: "🇬🇩", 149 | GE: "🇬🇪", 150 | GF: "🇬🇫", 151 | GG: "🇬🇬", 152 | GH: "🇬🇭", 153 | GI: "🇬🇮", 154 | GL: "🇬🇱", 155 | GM: "🇬🇲", 156 | GN: "🇬🇳", 157 | GP: "🇬🇵", 158 | GQ: "🇬🇶", 159 | GR: "🇬🇷", 160 | GS: "🇬🇸", 161 | GT: "🇬🇹", 162 | GU: "🇬🇺", 163 | GW: "🇬🇼", 164 | GY: "🇬🇾", 165 | HK: "🇭🇰", 166 | HM: "🇭🇲", 167 | HN: "🇭🇳", 168 | HR: "🇭🇷", 169 | HT: "🇭🇹", 170 | HU: "🇭🇺", 171 | ID: "🇮🇩", 172 | IE: "🇮🇪", 173 | IL: "🇮🇱", 174 | IM: "🇮🇲", 175 | IN: "🇮🇳", 176 | IO: "🇮🇴", 177 | IQ: "🇮🇶", 178 | IR: "🇮🇷", 179 | IS: "🇮🇸", 180 | IT: "🇮🇹", 181 | JE: "🇯🇪", 182 | JM: "🇯🇲", 183 | JO: "🇯🇴", 184 | JP: "🇯🇵", 185 | KE: "🇰🇪", 186 | KG: "🇰🇬", 187 | KH: "🇰🇭", 188 | KI: "🇰🇮", 189 | KM: "🇰🇲", 190 | KN: "🇰🇳", 191 | KP: "🇰🇵", 192 | KR: "🇰🇷", 193 | KW: "🇰🇼", 194 | KY: "🇰🇾", 195 | KZ: "🇰🇿", 196 | LA: "🇱🇦", 197 | LB: "🇱🇧", 198 | LC: "🇱🇨", 199 | LI: "🇱🇮", 200 | LK: "🇱🇰", 201 | LR: "🇱🇷", 202 | LS: "🇱🇸", 203 | LT: "🇱🇹", 204 | LU: "🇱🇺", 205 | LV: "🇱🇻", 206 | LY: "🇱🇾", 207 | MA: "🇲🇦", 208 | MC: "🇲🇨", 209 | MD: "🇲🇩", 210 | ME: "🇲🇪", 211 | MF: "🇲🇫", 212 | MG: "🇲🇬", 213 | MH: "🇲🇭", 214 | MK: "🇲🇰", 215 | ML: "🇲🇱", 216 | MM: "🇲🇲", 217 | MN: "🇲🇳", 218 | MO: "🇲🇴", 219 | MP: "🇲🇵", 220 | MQ: "🇲🇶", 221 | MR: "🇲🇷", 222 | MS: "🇲🇸", 223 | MT: "🇲🇹", 224 | MU: "🇲🇺", 225 | MV: "🇲🇻", 226 | MW: "🇲🇼", 227 | MX: "🇲🇽", 228 | MY: "🇲🇾", 229 | MZ: "🇲🇿", 230 | NA: "🇳🇦", 231 | NC: "🇳🇨", 232 | NE: "🇳🇪", 233 | NF: "🇳🇫", 234 | NG: "🇳🇬", 235 | NI: "🇳🇮", 236 | NL: "🇳🇱", 237 | NO: "🇳🇴", 238 | NP: "🇳🇵", 239 | NR: "🇳🇷", 240 | NU: "🇳🇺", 241 | NZ: "🇳🇿", 242 | OM: "🇴🇲", 243 | PA: "🇵🇦", 244 | PE: "🇵🇪", 245 | PF: "🇵🇫", 246 | PG: "🇵🇬", 247 | PH: "🇵🇭", 248 | PK: "🇵🇰", 249 | PL: "🇵🇱", 250 | PM: "🇵🇲", 251 | PN: "🇵🇳", 252 | PR: "🇵🇷", 253 | PS: "🇵🇸", 254 | PT: "🇵🇹", 255 | PW: "🇵🇼", 256 | PY: "🇵🇾", 257 | QA: "🇶🇦", 258 | RE: "🇷🇪", 259 | RO: "🇷🇴", 260 | RS: "🇷🇸", 261 | RU: "🇷🇺", 262 | RW: "🇷🇼", 263 | SA: "🇸🇦", 264 | SB: "🇸🇧", 265 | SC: "🇸🇨", 266 | SCOT: "🏴󠁧󠁢󠁳󠁣󠁴󠁿", 267 | SD: "🇸🇩", 268 | SE: "🇸🇪", 269 | SG: "🇸🇬", 270 | SH: "🇸🇭", 271 | SI: "🇸🇮", 272 | SJ: "🇸🇯", 273 | SK: "🇸🇰", 274 | SL: "🇸🇱", 275 | SM: "🇸🇲", 276 | SN: "🇸🇳", 277 | SO: "🇸🇴", 278 | SR: "🇸🇷", 279 | SS: "🇸🇸", 280 | ST: "🇸🇹", 281 | SV: "🇸🇻", 282 | SX: "🇸🇽", 283 | SY: "🇸🇾", 284 | SZ: "🇸🇿", 285 | TC: "🇹🇨", 286 | TD: "🇹🇩", 287 | TF: "🇹🇫", 288 | TG: "🇹🇬", 289 | TH: "🇹🇭", 290 | TJ: "🇹🇯", 291 | TK: "🇹🇰", 292 | TL: "🇹🇱", 293 | TM: "🇹🇲", 294 | TN: "🇹🇳", 295 | TO: "🇹🇴", 296 | TR: "🇹🇷", 297 | TT: "🇹🇹", 298 | TV: "🇹🇻", 299 | TW: "🇹🇼", 300 | TZ: "🇹🇿", 301 | UA: "🇺🇦", 302 | UG: "🇺🇬", 303 | UM: "🇺🇲", 304 | US: "🇺🇸", 305 | UY: "🇺🇾", 306 | UZ: "🇺🇿", 307 | VA: "🇻🇦", 308 | VC: "🇻🇨", 309 | VE: "🇻🇪", 310 | VG: "🇻🇬", 311 | VI: "🇻🇮", 312 | VN: "🇻🇳", 313 | VU: "🇻🇺", 314 | WF: "🇼🇫", 315 | WS: "🇼🇸", 316 | YE: "🇾🇪", 317 | YT: "🇾🇹", 318 | ZA: "🇿🇦", 319 | ZM: "🇿🇲", 320 | ZW: "🇿🇼" 321 | }[c])) AS Q_FLAG 322 | 323 | 324 | ``` 325 | 326 | -------------------------------------------------------------------------------- /Trackers and Galleries/Z General/Favorite Things.md: -------------------------------------------------------------------------------- 1 | --- 2 | obsidianUIMode: preview 3 | cssClasses: cards, cards-cover, cards-2-3, table-max, max 4 | --- 5 | ### My Favorites 💛 6 | ```dataview 7 | 8 | TABLE without id 9 | ("![](" + Cover + ")") AS "Cover", 10 | P_ThingBy + P_Author + P_MediumIcon + P_FavoriteIcon AS "Title", 11 | Q_YearRating + Q_PagesHours + " || " + Q_FLAG AS "Time and Place", 12 | R_Dates AS "Dates", 13 | S_ReadingTime AS "Reading Time" 14 | 15 | FROM "/" 16 | WHERE contains(Tags, "Favorite") 17 | 18 | WHERE Medium != null 19 | SORT DateFinished asc 20 | 21 | 22 | FLATTEN link(file.link, Alias) + " by " AS P_ThingBy 23 | 24 | FLATTEN { 25 | "Book": Author, 26 | "Audiobook": Author, 27 | "Podcast": Author, 28 | "eBook": Author, 29 | "GraphicNovel": Author, 30 | "AcademicBook": Author, 31 | "AcademicArticle": Author, 32 | "Movie": Director, 33 | "TV": Director, 34 | "Game": Director 35 | }[Medium] AS P_Author 36 | 37 | 38 | 39 | FLATTEN choice(contains(tags, "Favorite"), "💛", "") AS P_FavoriteIcon 40 | 41 | FLATTEN { 42 | "Book": " 📖 ", 43 | "Audiobook": " 🎧 ", 44 | "Podcast": " 📻 ", 45 | "eBook": " 📃 ", 46 | "GraphicNovel": " 💬 ", 47 | "AcademicBook": " 📚🎓 ", 48 | "AcademicArticle": " 📰 ", 49 | "Movie": " 🎞️ ", 50 | "TV": " 📺 ", 51 | "Game": " 🎮 " 52 | }[Medium] AS P_MediumIcon 53 | 54 | 55 | 56 | FLATTEN DateStarted + " — " + DateFinished AS R_Dates 57 | FLATTEN choice(((DateFinished - DateStarted).days = 1), "1 day", choice((DateFinished != DateStarted), (DateFinished - DateStarted).days + " days", "0 days" )) AS S_ReadingTime 58 | 59 | 60 | 61 | FLATTEN Year + " || " + " ⭐ " + Rating + " || " AS Q_YearRating 62 | 63 | FLATTEN { 64 | "Book": Length + " p", 65 | "Audiobook": Length + " h", 66 | "Podcast": Length + " h", 67 | "eBook": Length + " p", 68 | "GraphicNovel": Length + " p", 69 | "AcademicBook": Length + " p", 70 | "AcademicArticle": Length + " p", 71 | "Movie": round((Length/60), 1) + " h", 72 | "TV": round((Length/60), 1) + " h", 73 | "Game": Length + " h" 74 | }[Medium] AS Q_PagesHours 75 | 76 | 77 | FLATTEN join(map(split(Country, ", "), (c) => { 78 | AD: "🇦🇩", 79 | AE: "🇦🇪", 80 | AF: "🇦🇫", 81 | AG: "🇦🇬", 82 | AI: "🇦🇮", 83 | AL: "🇦🇱", 84 | AM: "🇦🇲", 85 | AO: "🇦🇴", 86 | AQ: "🇦🇶", 87 | AR: "🇦🇷", 88 | AS: "🇦🇸", 89 | AT: "🇦🇹", 90 | AU: "🇦🇺", 91 | AW: "🇦🇼", 92 | AX: "🇦🇽", 93 | AZ: "🇦🇿", 94 | BA: "🇧🇦", 95 | BB: "🇧🇧", 96 | BD: "🇧🇩", 97 | BE: "🇧🇪", 98 | BF: "🇧🇫", 99 | BG: "🇧🇬", 100 | BH: "🇧🇭", 101 | BI: "🇧🇮", 102 | BJ: "🇧🇯", 103 | BL: "🇧🇱", 104 | BM: "🇧🇲", 105 | BN: "🇧🇳", 106 | BO: "🇧🇴", 107 | BQ: "🇧🇶", 108 | BR: "🇧🇷", 109 | BS: "🇧🇸", 110 | BT: "🇧🇹", 111 | BV: "🇧🇻", 112 | BW: "🇧🇼", 113 | BY: "🇧🇾", 114 | BZ: "🇧🇿", 115 | CA: "🇨🇦", 116 | CC: "🇨🇨", 117 | CD: "🇨🇩", 118 | CF: "🇨🇫", 119 | CG: "🇨🇬", 120 | CH: "🇨🇭", 121 | CI: "🇨🇮", 122 | CK: "🇨🇰", 123 | CL: "🇨🇱", 124 | CM: "🇨🇲", 125 | CN: "🇨🇳", 126 | CO: "🇨🇴", 127 | CR: "🇨🇷", 128 | CU: "🇨🇺", 129 | CV: "🇨🇻", 130 | CW: "🇨🇼", 131 | CX: "🇨🇽", 132 | CY: "🇨🇾", 133 | CYMRU: "🏴󠁧󠁢󠁷󠁬󠁳󠁿", 134 | CZ: "🇨🇿", 135 | DE: "🇩🇪", 136 | DJ: "🇩🇯", 137 | DK: "🇩🇰", 138 | DM: "🇩🇲", 139 | DO: "🇩🇴", 140 | DZ: "🇩🇿", 141 | EC: "🇪🇨", 142 | EE: "🇪🇪", 143 | EG: "🇪🇬", 144 | EH: "🇪🇭", 145 | ENG: "🏴󠁧󠁢󠁥󠁮󠁧󠁿", 146 | ER: "🇪🇷", 147 | ES: "🇪🇸", 148 | ET: "🇪🇹", 149 | FI: "🇫🇮", 150 | FJ: "🇫🇯", 151 | FK: "🇫🇰", 152 | FM: "🇫🇲", 153 | FO: "🇫🇴", 154 | FR: "🇫🇷", 155 | GA: "🇬🇦", 156 | GB: "🇬🇧", 157 | GD: "🇬🇩", 158 | GE: "🇬🇪", 159 | GF: "🇬🇫", 160 | GG: "🇬🇬", 161 | GH: "🇬🇭", 162 | GI: "🇬🇮", 163 | GL: "🇬🇱", 164 | GM: "🇬🇲", 165 | GN: "🇬🇳", 166 | GP: "🇬🇵", 167 | GQ: "🇬🇶", 168 | GR: "🇬🇷", 169 | GS: "🇬🇸", 170 | GT: "🇬🇹", 171 | GU: "🇬🇺", 172 | GW: "🇬🇼", 173 | GY: "🇬🇾", 174 | HK: "🇭🇰", 175 | HM: "🇭🇲", 176 | HN: "🇭🇳", 177 | HR: "🇭🇷", 178 | HT: "🇭🇹", 179 | HU: "🇭🇺", 180 | ID: "🇮🇩", 181 | IE: "🇮🇪", 182 | IL: "🇮🇱", 183 | IM: "🇮🇲", 184 | IN: "🇮🇳", 185 | IO: "🇮🇴", 186 | IQ: "🇮🇶", 187 | IR: "🇮🇷", 188 | IS: "🇮🇸", 189 | IT: "🇮🇹", 190 | JE: "🇯🇪", 191 | JM: "🇯🇲", 192 | JO: "🇯🇴", 193 | JP: "🇯🇵", 194 | KE: "🇰🇪", 195 | KG: "🇰🇬", 196 | KH: "🇰🇭", 197 | KI: "🇰🇮", 198 | KM: "🇰🇲", 199 | KN: "🇰🇳", 200 | KP: "🇰🇵", 201 | KR: "🇰🇷", 202 | KW: "🇰🇼", 203 | KY: "🇰🇾", 204 | KZ: "🇰🇿", 205 | LA: "🇱🇦", 206 | LB: "🇱🇧", 207 | LC: "🇱🇨", 208 | LI: "🇱🇮", 209 | LK: "🇱🇰", 210 | LR: "🇱🇷", 211 | LS: "🇱🇸", 212 | LT: "🇱🇹", 213 | LU: "🇱🇺", 214 | LV: "🇱🇻", 215 | LY: "🇱🇾", 216 | MA: "🇲🇦", 217 | MC: "🇲🇨", 218 | MD: "🇲🇩", 219 | ME: "🇲🇪", 220 | MF: "🇲🇫", 221 | MG: "🇲🇬", 222 | MH: "🇲🇭", 223 | MK: "🇲🇰", 224 | ML: "🇲🇱", 225 | MM: "🇲🇲", 226 | MN: "🇲🇳", 227 | MO: "🇲🇴", 228 | MP: "🇲🇵", 229 | MQ: "🇲🇶", 230 | MR: "🇲🇷", 231 | MS: "🇲🇸", 232 | MT: "🇲🇹", 233 | MU: "🇲🇺", 234 | MV: "🇲🇻", 235 | MW: "🇲🇼", 236 | MX: "🇲🇽", 237 | MY: "🇲🇾", 238 | MZ: "🇲🇿", 239 | NA: "🇳🇦", 240 | NC: "🇳🇨", 241 | NE: "🇳🇪", 242 | NF: "🇳🇫", 243 | NG: "🇳🇬", 244 | NI: "🇳🇮", 245 | NL: "🇳🇱", 246 | NO: "🇳🇴", 247 | NP: "🇳🇵", 248 | NR: "🇳🇷", 249 | NU: "🇳🇺", 250 | NZ: "🇳🇿", 251 | OM: "🇴🇲", 252 | PA: "🇵🇦", 253 | PE: "🇵🇪", 254 | PF: "🇵🇫", 255 | PG: "🇵🇬", 256 | PH: "🇵🇭", 257 | PK: "🇵🇰", 258 | PL: "🇵🇱", 259 | PM: "🇵🇲", 260 | PN: "🇵🇳", 261 | PR: "🇵🇷", 262 | PS: "🇵🇸", 263 | PT: "🇵🇹", 264 | PW: "🇵🇼", 265 | PY: "🇵🇾", 266 | QA: "🇶🇦", 267 | RE: "🇷🇪", 268 | RO: "🇷🇴", 269 | RS: "🇷🇸", 270 | RU: "🇷🇺", 271 | RW: "🇷🇼", 272 | SA: "🇸🇦", 273 | SB: "🇸🇧", 274 | SC: "🇸🇨", 275 | SCOT: "🏴󠁧󠁢󠁳󠁣󠁴󠁿", 276 | SD: "🇸🇩", 277 | SE: "🇸🇪", 278 | SG: "🇸🇬", 279 | SH: "🇸🇭", 280 | SI: "🇸🇮", 281 | SJ: "🇸🇯", 282 | SK: "🇸🇰", 283 | SL: "🇸🇱", 284 | SM: "🇸🇲", 285 | SN: "🇸🇳", 286 | SO: "🇸🇴", 287 | SR: "🇸🇷", 288 | SS: "🇸🇸", 289 | ST: "🇸🇹", 290 | SV: "🇸🇻", 291 | SX: "🇸🇽", 292 | SY: "🇸🇾", 293 | SZ: "🇸🇿", 294 | TC: "🇹🇨", 295 | TD: "🇹🇩", 296 | TF: "🇹🇫", 297 | TG: "🇹🇬", 298 | TH: "🇹🇭", 299 | TJ: "🇹🇯", 300 | TK: "🇹🇰", 301 | TL: "🇹🇱", 302 | TM: "🇹🇲", 303 | TN: "🇹🇳", 304 | TO: "🇹🇴", 305 | TR: "🇹🇷", 306 | TT: "🇹🇹", 307 | TV: "🇹🇻", 308 | TW: "🇹🇼", 309 | TZ: "🇹🇿", 310 | UA: "🇺🇦", 311 | UG: "🇺🇬", 312 | UM: "🇺🇲", 313 | US: "🇺🇸", 314 | UY: "🇺🇾", 315 | UZ: "🇺🇿", 316 | VA: "🇻🇦", 317 | VC: "🇻🇨", 318 | VE: "🇻🇪", 319 | VG: "🇻🇬", 320 | VI: "🇻🇮", 321 | VN: "🇻🇳", 322 | VU: "🇻🇺", 323 | WF: "🇼🇫", 324 | WS: "🇼🇸", 325 | YE: "🇾🇪", 326 | YT: "🇾🇹", 327 | ZA: "🇿🇦", 328 | ZM: "🇿🇲", 329 | ZW: "🇿🇼" 330 | }[c])) AS Q_FLAG 331 | SORT DateFinished desc 332 | ``` 333 | -------------------------------------------------------------------------------- /Trackers and Galleries/Z General/Game Gallery.md: -------------------------------------------------------------------------------- 1 | --- 2 | banner: "Trackers and Galleries/Things/Attachments/Banners/arcade.jpg" 3 | obsidianUIMode: preview 4 | cssClasses: cards, cards-cover, cards-2-3, table-max, max 5 | banner_y: 0 6 | --- 7 | 8 | ### Gallery 9 | ```dataview 10 | TABLE without id 11 | ("![](" + Cover + ")") as Cover, 12 | P_MediumByCreator + P_MediumIcon + P_FavoriteIcon AS "Title", 13 | Q_YearRating + Q_Length + " || " + Q_FLAG AS "Time and Place", 14 | R_Dates as "Dates", 15 | S_Length AS "Duration" 16 | 17 | FROM "3 Movies and Games" 18 | WHERE Medium = "Game" 19 | SORT DateFinished desc 20 | 21 | FLATTEN link(file.link, Alias) + " by " + Director AS P_MediumByCreator 22 | FLATTEN choice(contains(tags, "Favorite"), "💛", "") AS P_FavoriteIcon 23 | 24 | FLATTEN { 25 | "Movie": " 🎞️ ", 26 | "TV": " 📺 ", 27 | "Game": " 🎮 " 28 | }[Medium] AS P_MediumIcon 29 | 30 | 31 | FLATTEN DateStarted + " — " + DateFinished AS R_Dates 32 | FLATTEN choice(((DateFinished - DateStarted).days = 1), "1 day", choice((DateFinished != DateStarted), (DateFinished - DateStarted).days + " days", "0 days" )) AS S_Length 33 | 34 | 35 | FLATTEN Year + " || " + " ⭐ " + Rating + " || " AS Q_YearRating 36 | 37 | FLATTEN { 38 | "Movie": round((Length/60), 1) + " h", 39 | "TV": round((Length/60), 1) + " h", 40 | "Game": Length + " h" 41 | }[Medium] AS Q_Length 42 | 43 | FLATTEN join(map(split(Country, ", "), (c) => { 44 | AD: "🇦🇩", 45 | AE: "🇦🇪", 46 | AF: "🇦🇫", 47 | AG: "🇦🇬", 48 | AI: "🇦🇮", 49 | AL: "🇦🇱", 50 | AM: "🇦🇲", 51 | AO: "🇦🇴", 52 | AQ: "🇦🇶", 53 | AR: "🇦🇷", 54 | AS: "🇦🇸", 55 | AT: "🇦🇹", 56 | AU: "🇦🇺", 57 | AW: "🇦🇼", 58 | AX: "🇦🇽", 59 | AZ: "🇦🇿", 60 | BA: "🇧🇦", 61 | BB: "🇧🇧", 62 | BD: "🇧🇩", 63 | BE: "🇧🇪", 64 | BF: "🇧🇫", 65 | BG: "🇧🇬", 66 | BH: "🇧🇭", 67 | BI: "🇧🇮", 68 | BJ: "🇧🇯", 69 | BL: "🇧🇱", 70 | BM: "🇧🇲", 71 | BN: "🇧🇳", 72 | BO: "🇧🇴", 73 | BQ: "🇧🇶", 74 | BR: "🇧🇷", 75 | BS: "🇧🇸", 76 | BT: "🇧🇹", 77 | BV: "🇧🇻", 78 | BW: "🇧🇼", 79 | BY: "🇧🇾", 80 | BZ: "🇧🇿", 81 | CA: "🇨🇦", 82 | CC: "🇨🇨", 83 | CD: "🇨🇩", 84 | CF: "🇨🇫", 85 | CG: "🇨🇬", 86 | CH: "🇨🇭", 87 | CI: "🇨🇮", 88 | CK: "🇨🇰", 89 | CL: "🇨🇱", 90 | CM: "🇨🇲", 91 | CN: "🇨🇳", 92 | CO: "🇨🇴", 93 | CR: "🇨🇷", 94 | CU: "🇨🇺", 95 | CV: "🇨🇻", 96 | CW: "🇨🇼", 97 | CX: "🇨🇽", 98 | CY: "🇨🇾", 99 | CYMRU: "🏴󠁧󠁢󠁷󠁬󠁳󠁿", 100 | CZ: "🇨🇿", 101 | DE: "🇩🇪", 102 | DJ: "🇩🇯", 103 | DK: "🇩🇰", 104 | DM: "🇩🇲", 105 | DO: "🇩🇴", 106 | DZ: "🇩🇿", 107 | EC: "🇪🇨", 108 | EE: "🇪🇪", 109 | EG: "🇪🇬", 110 | EH: "🇪🇭", 111 | ENG: "🏴󠁧󠁢󠁥󠁮󠁧󠁿", 112 | ER: "🇪🇷", 113 | ES: "🇪🇸", 114 | ET: "🇪🇹", 115 | FI: "🇫🇮", 116 | FJ: "🇫🇯", 117 | FK: "🇫🇰", 118 | FM: "🇫🇲", 119 | FO: "🇫🇴", 120 | FR: "🇫🇷", 121 | GA: "🇬🇦", 122 | GB: "🇬🇧", 123 | GD: "🇬🇩", 124 | GE: "🇬🇪", 125 | GF: "🇬🇫", 126 | GG: "🇬🇬", 127 | GH: "🇬🇭", 128 | GI: "🇬🇮", 129 | GL: "🇬🇱", 130 | GM: "🇬🇲", 131 | GN: "🇬🇳", 132 | GP: "🇬🇵", 133 | GQ: "🇬🇶", 134 | GR: "🇬🇷", 135 | GS: "🇬🇸", 136 | GT: "🇬🇹", 137 | GU: "🇬🇺", 138 | GW: "🇬🇼", 139 | GY: "🇬🇾", 140 | HK: "🇭🇰", 141 | HM: "🇭🇲", 142 | HN: "🇭🇳", 143 | HR: "🇭🇷", 144 | HT: "🇭🇹", 145 | HU: "🇭🇺", 146 | ID: "🇮🇩", 147 | IE: "🇮🇪", 148 | IL: "🇮🇱", 149 | IM: "🇮🇲", 150 | IN: "🇮🇳", 151 | IO: "🇮🇴", 152 | IQ: "🇮🇶", 153 | IR: "🇮🇷", 154 | IS: "🇮🇸", 155 | IT: "🇮🇹", 156 | JE: "🇯🇪", 157 | JM: "🇯🇲", 158 | JO: "🇯🇴", 159 | JP: "🇯🇵", 160 | KE: "🇰🇪", 161 | KG: "🇰🇬", 162 | KH: "🇰🇭", 163 | KI: "🇰🇮", 164 | KM: "🇰🇲", 165 | KN: "🇰🇳", 166 | KP: "🇰🇵", 167 | KR: "🇰🇷", 168 | KW: "🇰🇼", 169 | KY: "🇰🇾", 170 | KZ: "🇰🇿", 171 | LA: "🇱🇦", 172 | LB: "🇱🇧", 173 | LC: "🇱🇨", 174 | LI: "🇱🇮", 175 | LK: "🇱🇰", 176 | LR: "🇱🇷", 177 | LS: "🇱🇸", 178 | LT: "🇱🇹", 179 | LU: "🇱🇺", 180 | LV: "🇱🇻", 181 | LY: "🇱🇾", 182 | MA: "🇲🇦", 183 | MC: "🇲🇨", 184 | MD: "🇲🇩", 185 | ME: "🇲🇪", 186 | MF: "🇲🇫", 187 | MG: "🇲🇬", 188 | MH: "🇲🇭", 189 | MK: "🇲🇰", 190 | ML: "🇲🇱", 191 | MM: "🇲🇲", 192 | MN: "🇲🇳", 193 | MO: "🇲🇴", 194 | MP: "🇲🇵", 195 | MQ: "🇲🇶", 196 | MR: "🇲🇷", 197 | MS: "🇲🇸", 198 | MT: "🇲🇹", 199 | MU: "🇲🇺", 200 | MV: "🇲🇻", 201 | MW: "🇲🇼", 202 | MX: "🇲🇽", 203 | MY: "🇲🇾", 204 | MZ: "🇲🇿", 205 | NA: "🇳🇦", 206 | NC: "🇳🇨", 207 | NE: "🇳🇪", 208 | NF: "🇳🇫", 209 | NG: "🇳🇬", 210 | NI: "🇳🇮", 211 | NL: "🇳🇱", 212 | NO: "🇳🇴", 213 | NP: "🇳🇵", 214 | NR: "🇳🇷", 215 | NU: "🇳🇺", 216 | NZ: "🇳🇿", 217 | OM: "🇴🇲", 218 | PA: "🇵🇦", 219 | PE: "🇵🇪", 220 | PF: "🇵🇫", 221 | PG: "🇵🇬", 222 | PH: "🇵🇭", 223 | PK: "🇵🇰", 224 | PL: "🇵🇱", 225 | PM: "🇵🇲", 226 | PN: "🇵🇳", 227 | PR: "🇵🇷", 228 | PS: "🇵🇸", 229 | PT: "🇵🇹", 230 | PW: "🇵🇼", 231 | PY: "🇵🇾", 232 | QA: "🇶🇦", 233 | RE: "🇷🇪", 234 | RO: "🇷🇴", 235 | RS: "🇷🇸", 236 | RU: "🇷🇺", 237 | RW: "🇷🇼", 238 | SA: "🇸🇦", 239 | SB: "🇸🇧", 240 | SC: "🇸🇨", 241 | SCOT: "🏴󠁧󠁢󠁳󠁣󠁴󠁿", 242 | SD: "🇸🇩", 243 | SE: "🇸🇪", 244 | SG: "🇸🇬", 245 | SH: "🇸🇭", 246 | SI: "🇸🇮", 247 | SJ: "🇸🇯", 248 | SK: "🇸🇰", 249 | SL: "🇸🇱", 250 | SM: "🇸🇲", 251 | SN: "🇸🇳", 252 | SO: "🇸🇴", 253 | SR: "🇸🇷", 254 | SS: "🇸🇸", 255 | ST: "🇸🇹", 256 | SV: "🇸🇻", 257 | SX: "🇸🇽", 258 | SY: "🇸🇾", 259 | SZ: "🇸🇿", 260 | TC: "🇹🇨", 261 | TD: "🇹🇩", 262 | TF: "🇹🇫", 263 | TG: "🇹🇬", 264 | TH: "🇹🇭", 265 | TJ: "🇹🇯", 266 | TK: "🇹🇰", 267 | TL: "🇹🇱", 268 | TM: "🇹🇲", 269 | TN: "🇹🇳", 270 | TO: "🇹🇴", 271 | TR: "🇹🇷", 272 | TT: "🇹🇹", 273 | TV: "🇹🇻", 274 | TW: "🇹🇼", 275 | TZ: "🇹🇿", 276 | UA: "🇺🇦", 277 | UG: "🇺🇬", 278 | UM: "🇺🇲", 279 | US: "🇺🇸", 280 | UY: "🇺🇾", 281 | UZ: "🇺🇿", 282 | VA: "🇻🇦", 283 | VC: "🇻🇨", 284 | VE: "🇻🇪", 285 | VG: "🇻🇬", 286 | VI: "🇻🇮", 287 | VN: "🇻🇳", 288 | VU: "🇻🇺", 289 | WF: "🇼🇫", 290 | WS: "🇼🇸", 291 | YE: "🇾🇪", 292 | YT: "🇾🇹", 293 | ZA: "🇿🇦", 294 | ZM: "🇿🇲", 295 | ZW: "🇿🇼" 296 | }[c])) AS Q_FLAG 297 | 298 | ``` 299 | 300 | -------------------------------------------------------------------------------- /Trackers and Galleries/Z General/Movie and Games Stats.md: -------------------------------------------------------------------------------- 1 | --- 2 | obsidianUIMode: preview 3 | cssClasses: cards, cards-cover, cards-2-3, table-max, max 4 | --- 5 | ```dataviewjs 6 | let MovieCount = (dv.pages('"3 Movies and Games"').where(p => p.Medium == "Movie").length); 7 | 8 | let TVCount = (dv.pages('"3 Movies and Games"').where(p => p.Medium == "TV").length); 9 | 10 | let GameCount = (dv.pages('"3 Movies and Games"').where(p => p.Medium == "Game").length); 11 | 12 | 13 | let durationsum = 0; 14 | for(let i = 0; i < dv.pages('"3 Movies and Games"').length;i++) { 15 | if(dv.pages('"3 Movies and Games"')[i].Length) { 16 | durationsum += dv.pages('"3 Movies and Games"')[i].Length; 17 | } 18 | } 19 | 20 | let Grade = 0; 21 | for(let i = 0; i < dv.pages('"3 Movies and Games"').length;i++) { 22 | if(dv.pages('"3 Movies and Games"')[i].Rating) { 23 | Grade += dv.pages('"3 Movies and Games"')[i].Rating; 24 | } 25 | } 26 | 27 | let AvgRating = (Grade / (MovieCount + TVCount)); 28 | 29 | let today = DateTime.now().toFormat("ooo"); 30 | 31 | dv.paragraph("#### Since 2022, I've watched " + MovieCount + " movies and I've watched to " + TVCount + " TV shows, for a total of " + durationsum.toFixed() + " minutes, or " + (durationsum / 60).toFixed(2) + " hours.") 32 | 33 | dv.paragraph("#### And since 2023 I've completed " + GameCount + " Games.") 34 | 35 | 36 | dv.paragraph("#### Average Rating: " + AvgRating.toFixed(1)) 37 | ``` 38 | ### Movies and TV Shows Watched 39 | 40 | ```dataviewjs 41 | var labels = ["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"]; 42 | var colors = [['#ff6384'],['#36a2eb'],['#ffce56'],['#4bc0c0'],['#9966ff'],['#ff9f40'], ['#d39e9e'], ['#020000'], ['#f02f95'], [' #536c40'], ['#996236']] 43 | var datasets = []; 44 | 45 | for( 46 | let results of dv.pages('"3 Movies and Games"') 47 | .where(p => p.DateFinished && p.Medium == "TV") 48 | .sort(p => p.DateFinished, 'asc') 49 | .groupBy(p => (dv.date(p.DateFinished).toFormat("MMMM yyyy"))) 50 | .sort(ym => ym.rows.DateFinished.first(), 'asc') 51 | .groupBy(ym => (dv.date(ym.rows.DateFinished.first()).year)) 52 | .sort(y => y.key, 'asc') 53 | ) { 54 | let lbl = "TV Shows watched in " + results.key; 55 | let backCol = colors[datasets.length%colors.length]; 56 | let bordCol = colors[datasets.length%colors.length]; 57 | let bWidth = 1; 58 | 59 | let innerArray = [0,0,0,0,0,0,0,0,0,0,0,0]; 60 | results.rows.forEach(m => { 61 | let numTV = dv.array(m.rows).length; 62 | //OR .Pages.array().reduce((s,r) => s + r, 0); 63 | innerArray[m.rows.DateFinished.first().month-1] = numTV; 64 | }) 65 | 66 | let da = {label: lbl, data: innerArray, backgroundColor: backCol, 67 | borderColor: bordCol, borderWidth: bWidth, borderDash: [5,5]}; 68 | 69 | datasets.push(da) 70 | } 71 | 72 | for( 73 | let results of dv.pages('"3 Movies and Games"') 74 | .where(p => p.DateFinished && p.Medium == "Movie") 75 | .sort(p => p.DateFinished, 'asc') 76 | .groupBy(p => (dv.date(p.DateFinished).toFormat("MMMM yyyy"))) 77 | .sort(ym => ym.rows.DateFinished.first(), 'asc') 78 | .groupBy(ym => (dv.date(ym.rows.DateFinished.first()).year)) 79 | .sort(y => y.key, 'asc') 80 | ) { 81 | let lbl = "Movies watched in " + results.key; 82 | let backCol = colors[datasets.length%colors.length]; 83 | let bordCol = colors[datasets.length%colors.length]; 84 | let bWidth = 1; 85 | 86 | let innerArray = [0,0,0,0,0,0,0,0,0,0,0,0]; 87 | results.rows.forEach(m => { 88 | let numMovie = dv.array(m.rows).length; 89 | //OR .Pages.array().reduce((s,r) => s + r, 0); 90 | innerArray[m.rows.DateFinished.first().month-1] = numMovie; 91 | }) 92 | 93 | let da = {label: lbl, data: innerArray, backgroundColor: backCol, 94 | borderColor: bordCol, borderWidth: bWidth}; 95 | 96 | datasets.push(da) 97 | } 98 | 99 | const chartData = { 100 | type: 'line', 101 | data: {labels: labels, datasets: datasets}, 102 | options: {scales: {yAxis: {suggestedMin: 0, ticks: {stepSize: 1}}} 103 | }} 104 | window.renderChart(chartData, this.container); 105 | 106 | ``` 107 | 108 | ### Hours watched 109 | ``` dataviewjs 110 | var labels = ["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"]; 111 | var colors = [['#ff6384'],['#36a2eb'],['#ffce56'],['#4bc0c0'],['#9966ff'],['#ff9f40']] 112 | var datasets = []; 113 | 114 | for( 115 | let results of dv.pages('"3 Movies and Games"') 116 | .where(p => p.DateFinished && p.Length && p.Medium == "TV") 117 | .sort(p => p.DateFinished, 'asc') 118 | .groupBy(p => (dv.date(p.DateFinished).toFormat("MMMM yyyy"))) 119 | .sort(ym => ym.rows.DateFinished.first(), 'asc') 120 | .groupBy(ym => (dv.date(ym.rows.DateFinished.first()).year)) 121 | .sort(y => y.key, 'asc') 122 | ) { 123 | let lbl = "TV Hours in " + results.key; 124 | let backCol = colors[datasets.length%colors.length]; 125 | let bordCol = colors[datasets.length%colors.length]; 126 | let bWidth = 1; 127 | 128 | let innerArray = [0,0,0,0,0,0,0,0,0,0,0,0]; 129 | results.rows.forEach(m => { 130 | let numMovies = dv.array(m.rows).Length.array().reduce((s, r) => s + r, 0) / 60; 131 | 132 | innerArray[m.rows.DateFinished.first().month-1] = numMovies; 133 | }) 134 | 135 | let da = {label: lbl, data: innerArray, backgroundColor: backCol, 136 | borderColor: bordCol, borderWidth: bWidth, borderDash: [5,5]}; 137 | 138 | datasets.push(da) 139 | } 140 | 141 | for( 142 | let results of dv.pages('"3 Movies and Games"') 143 | .where(p => p.DateFinished && p.Length && p.Medium == "Movie") 144 | .sort(p => p.DateFinished, 'asc') 145 | .groupBy(p => (dv.date(p.DateFinished).toFormat("MMMM yyyy"))) 146 | .sort(ym => ym.rows.DateFinished.first(), 'asc') 147 | .groupBy(ym => (dv.date(ym.rows.DateFinished.first()).year)) 148 | .sort(y => y.key, 'asc') 149 | ) { 150 | let lbl = "Movie Hours in " + results.key; 151 | let backCol = colors[datasets.length%colors.length]; 152 | let bordCol = colors[datasets.length%colors.length]; 153 | let bWidth = 1; 154 | 155 | let innerArray = [0,0,0,0,0,0,0,0,0,0,0,0]; 156 | results.rows.forEach(m => { 157 | let numMovies = dv.array(m.rows).Length.array().reduce((s, r) => s + r, 0) / 60; 158 | 159 | innerArray[m.rows.DateFinished.first().month-1] = numMovies; 160 | }) 161 | 162 | let da = {label: lbl, data: innerArray, backgroundColor: backCol, 163 | borderColor: bordCol, borderWidth: bWidth}; 164 | 165 | datasets.push(da) 166 | } 167 | 168 | const chartData = { 169 | type: 'line', 170 | data: {labels: labels, datasets: datasets}, 171 | options: {scales: {yAxis: {suggestedMin: 0, ticks: {stepSize: 1}}} 172 | }} 173 | window.renderChart(chartData, this.container); 174 | ``` 175 | 176 | 177 | ```chartsview 178 | #-----------------# 179 | #- chart type -# 180 | #-----------------# 181 | type: Scatter 182 | 183 | #-----------------# 184 | #- chart data -# 185 | #-----------------# 186 | data: | 187 | dataviewjs: 188 | return dv.pages('"3 Movies and Games"') 189 | .groupBy(p => ([p.year + '', p.DateFinished??p.file.mday])) 190 | .map(p => ({'Date Finished': p.key[1], 'Published in': p.key[0], Count: p.rows.length, 'Title': p.rows.alias.array()})) 191 | .sort(p => p['Date Finished'], 'asc') 192 | .map(p => ({...p, 'Date Finished': p['Date Finished'].toFormat("W, yyyy-MM-dd")})) 193 | .array(); 194 | 195 | #-----------------# 196 | #- chart options -# 197 | #-----------------# 198 | options: 199 | appendPadding: 30 200 | size: 5 201 | shape: 'circle' 202 | pointStyle: 203 | fillOpacity: 1 204 | tooltip: 205 | fields: ['Date Finished', 'Published in', 'Title'] 206 | yAxis: 207 | nice: true 208 | tickMethod: | 209 | function ({values}) { 210 | return values.sort((v1, v2) => parseInt(v1) - parseInt(v2)); 211 | } 212 | line: 213 | style: 214 | stroke: '#aaa' 215 | xAxis: 216 | grid: 217 | line: 218 | style: 219 | stroke: '#eee' 220 | line: 221 | style: 222 | stroke: '#aaa' 223 | label: {} 224 | colorField: Count 225 | yField: Published in 226 | xField: Date Finished 227 | 228 | 229 | ``` -------------------------------------------------------------------------------- /Trackers and Galleries/Z General/Movies and Games Gallery.md: -------------------------------------------------------------------------------- 1 | --- 2 | obsidianUIMode: preview 3 | banner: "Trackers and Galleries/Things/Attachments/Banners/videostore.jpg" 4 | cssClasses: cards, cards-cover, cards-2-3, table-max, max 5 | banner_y: 0.20282 6 | --- 7 | 8 | ### Gallery 9 | ```dataview 10 | TABLE without id 11 | ("![](" + Cover + ")") as Cover, 12 | P_MediumByCreator + P_MediumIcon + P_FavoriteIcon AS "Title", 13 | Q_YearRating + Q_Duration + " || " + Q_FLAG AS "Time and Place", 14 | R_Dates as "Dates", 15 | S_Duration AS "Duration" 16 | 17 | FROM "3 Movies and Games" 18 | WHERE Medium != null 19 | SORT DateFinished desc 20 | 21 | FLATTEN link(file.link, Alias) + " by " + Director AS P_MediumByCreator 22 | FLATTEN choice(contains(tags, "Favorite"), "💛", "") AS P_FavoriteIcon 23 | 24 | FLATTEN { 25 | "Movie": " 🎞️ ", 26 | "TV": " 📺 ", 27 | "Game": " 🎮 " 28 | }[Medium] AS P_MediumIcon 29 | 30 | 31 | FLATTEN DateStarted + " — " + DateFinished AS R_Dates 32 | FLATTEN choice(((DateFinished - DateStarted).days = 1), "1 day", choice((DateFinished != DateStarted), (DateFinished - DateStarted).days + " days", "0 days" )) AS S_Duration 33 | 34 | 35 | FLATTEN Year + " || " + " ⭐ " + Rating + " || " AS Q_YearRating 36 | 37 | FLATTEN { 38 | "Movie": round((Length/60), 1) + " h", 39 | "TV": round((Length/60), 1) + " h", 40 | "Game": Length + " h" 41 | }[Medium] AS Q_Duration 42 | 43 | FLATTEN join(map(split(Country, ", "), (c) => { 44 | AD: "🇦🇩", 45 | AE: "🇦🇪", 46 | AF: "🇦🇫", 47 | AG: "🇦🇬", 48 | AI: "🇦🇮", 49 | AL: "🇦🇱", 50 | AM: "🇦🇲", 51 | AO: "🇦🇴", 52 | AQ: "🇦🇶", 53 | AR: "🇦🇷", 54 | AS: "🇦🇸", 55 | AT: "🇦🇹", 56 | AU: "🇦🇺", 57 | AW: "🇦🇼", 58 | AX: "🇦🇽", 59 | AZ: "🇦🇿", 60 | BA: "🇧🇦", 61 | BB: "🇧🇧", 62 | BD: "🇧🇩", 63 | BE: "🇧🇪", 64 | BF: "🇧🇫", 65 | BG: "🇧🇬", 66 | BH: "🇧🇭", 67 | BI: "🇧🇮", 68 | BJ: "🇧🇯", 69 | BL: "🇧🇱", 70 | BM: "🇧🇲", 71 | BN: "🇧🇳", 72 | BO: "🇧🇴", 73 | BQ: "🇧🇶", 74 | BR: "🇧🇷", 75 | BS: "🇧🇸", 76 | BT: "🇧🇹", 77 | BV: "🇧🇻", 78 | BW: "🇧🇼", 79 | BY: "🇧🇾", 80 | BZ: "🇧🇿", 81 | CA: "🇨🇦", 82 | CC: "🇨🇨", 83 | CD: "🇨🇩", 84 | CF: "🇨🇫", 85 | CG: "🇨🇬", 86 | CH: "🇨🇭", 87 | CI: "🇨🇮", 88 | CK: "🇨🇰", 89 | CL: "🇨🇱", 90 | CM: "🇨🇲", 91 | CN: "🇨🇳", 92 | CO: "🇨🇴", 93 | CR: "🇨🇷", 94 | CU: "🇨🇺", 95 | CV: "🇨🇻", 96 | CW: "🇨🇼", 97 | CX: "🇨🇽", 98 | CY: "🇨🇾", 99 | CYMRU: "🏴󠁧󠁢󠁷󠁬󠁳󠁿", 100 | CZ: "🇨🇿", 101 | DE: "🇩🇪", 102 | DJ: "🇩🇯", 103 | DK: "🇩🇰", 104 | DM: "🇩🇲", 105 | DO: "🇩🇴", 106 | DZ: "🇩🇿", 107 | EC: "🇪🇨", 108 | EE: "🇪🇪", 109 | EG: "🇪🇬", 110 | EH: "🇪🇭", 111 | ENG: "🏴󠁧󠁢󠁥󠁮󠁧󠁿", 112 | ER: "🇪🇷", 113 | ES: "🇪🇸", 114 | ET: "🇪🇹", 115 | FI: "🇫🇮", 116 | FJ: "🇫🇯", 117 | FK: "🇫🇰", 118 | FM: "🇫🇲", 119 | FO: "🇫🇴", 120 | FR: "🇫🇷", 121 | GA: "🇬🇦", 122 | GB: "🇬🇧", 123 | GD: "🇬🇩", 124 | GE: "🇬🇪", 125 | GF: "🇬🇫", 126 | GG: "🇬🇬", 127 | GH: "🇬🇭", 128 | GI: "🇬🇮", 129 | GL: "🇬🇱", 130 | GM: "🇬🇲", 131 | GN: "🇬🇳", 132 | GP: "🇬🇵", 133 | GQ: "🇬🇶", 134 | GR: "🇬🇷", 135 | GS: "🇬🇸", 136 | GT: "🇬🇹", 137 | GU: "🇬🇺", 138 | GW: "🇬🇼", 139 | GY: "🇬🇾", 140 | HK: "🇭🇰", 141 | HM: "🇭🇲", 142 | HN: "🇭🇳", 143 | HR: "🇭🇷", 144 | HT: "🇭🇹", 145 | HU: "🇭🇺", 146 | ID: "🇮🇩", 147 | IE: "🇮🇪", 148 | IL: "🇮🇱", 149 | IM: "🇮🇲", 150 | IN: "🇮🇳", 151 | IO: "🇮🇴", 152 | IQ: "🇮🇶", 153 | IR: "🇮🇷", 154 | IS: "🇮🇸", 155 | IT: "🇮🇹", 156 | JE: "🇯🇪", 157 | JM: "🇯🇲", 158 | JO: "🇯🇴", 159 | JP: "🇯🇵", 160 | KE: "🇰🇪", 161 | KG: "🇰🇬", 162 | KH: "🇰🇭", 163 | KI: "🇰🇮", 164 | KM: "🇰🇲", 165 | KN: "🇰🇳", 166 | KP: "🇰🇵", 167 | KR: "🇰🇷", 168 | KW: "🇰🇼", 169 | KY: "🇰🇾", 170 | KZ: "🇰🇿", 171 | LA: "🇱🇦", 172 | LB: "🇱🇧", 173 | LC: "🇱🇨", 174 | LI: "🇱🇮", 175 | LK: "🇱🇰", 176 | LR: "🇱🇷", 177 | LS: "🇱🇸", 178 | LT: "🇱🇹", 179 | LU: "🇱🇺", 180 | LV: "🇱🇻", 181 | LY: "🇱🇾", 182 | MA: "🇲🇦", 183 | MC: "🇲🇨", 184 | MD: "🇲🇩", 185 | ME: "🇲🇪", 186 | MF: "🇲🇫", 187 | MG: "🇲🇬", 188 | MH: "🇲🇭", 189 | MK: "🇲🇰", 190 | ML: "🇲🇱", 191 | MM: "🇲🇲", 192 | MN: "🇲🇳", 193 | MO: "🇲🇴", 194 | MP: "🇲🇵", 195 | MQ: "🇲🇶", 196 | MR: "🇲🇷", 197 | MS: "🇲🇸", 198 | MT: "🇲🇹", 199 | MU: "🇲🇺", 200 | MV: "🇲🇻", 201 | MW: "🇲🇼", 202 | MX: "🇲🇽", 203 | MY: "🇲🇾", 204 | MZ: "🇲🇿", 205 | NA: "🇳🇦", 206 | NC: "🇳🇨", 207 | NE: "🇳🇪", 208 | NF: "🇳🇫", 209 | NG: "🇳🇬", 210 | NI: "🇳🇮", 211 | NL: "🇳🇱", 212 | NO: "🇳🇴", 213 | NP: "🇳🇵", 214 | NR: "🇳🇷", 215 | NU: "🇳🇺", 216 | NZ: "🇳🇿", 217 | OM: "🇴🇲", 218 | PA: "🇵🇦", 219 | PE: "🇵🇪", 220 | PF: "🇵🇫", 221 | PG: "🇵🇬", 222 | PH: "🇵🇭", 223 | PK: "🇵🇰", 224 | PL: "🇵🇱", 225 | PM: "🇵🇲", 226 | PN: "🇵🇳", 227 | PR: "🇵🇷", 228 | PS: "🇵🇸", 229 | PT: "🇵🇹", 230 | PW: "🇵🇼", 231 | PY: "🇵🇾", 232 | QA: "🇶🇦", 233 | RE: "🇷🇪", 234 | RO: "🇷🇴", 235 | RS: "🇷🇸", 236 | RU: "🇷🇺", 237 | RW: "🇷🇼", 238 | SA: "🇸🇦", 239 | SB: "🇸🇧", 240 | SC: "🇸🇨", 241 | SCOT: "🏴󠁧󠁢󠁳󠁣󠁴󠁿", 242 | SD: "🇸🇩", 243 | SE: "🇸🇪", 244 | SG: "🇸🇬", 245 | SH: "🇸🇭", 246 | SI: "🇸🇮", 247 | SJ: "🇸🇯", 248 | SK: "🇸🇰", 249 | SL: "🇸🇱", 250 | SM: "🇸🇲", 251 | SN: "🇸🇳", 252 | SO: "🇸🇴", 253 | SR: "🇸🇷", 254 | SS: "🇸🇸", 255 | ST: "🇸🇹", 256 | SV: "🇸🇻", 257 | SX: "🇸🇽", 258 | SY: "🇸🇾", 259 | SZ: "🇸🇿", 260 | TC: "🇹🇨", 261 | TD: "🇹🇩", 262 | TF: "🇹🇫", 263 | TG: "🇹🇬", 264 | TH: "🇹🇭", 265 | TJ: "🇹🇯", 266 | TK: "🇹🇰", 267 | TL: "🇹🇱", 268 | TM: "🇹🇲", 269 | TN: "🇹🇳", 270 | TO: "🇹🇴", 271 | TR: "🇹🇷", 272 | TT: "🇹🇹", 273 | TV: "🇹🇻", 274 | TW: "🇹🇼", 275 | TZ: "🇹🇿", 276 | UA: "🇺🇦", 277 | UG: "🇺🇬", 278 | UM: "🇺🇲", 279 | US: "🇺🇸", 280 | UY: "🇺🇾", 281 | UZ: "🇺🇿", 282 | VA: "🇻🇦", 283 | VC: "🇻🇨", 284 | VE: "🇻🇪", 285 | VG: "🇻🇬", 286 | VI: "🇻🇮", 287 | VN: "🇻🇳", 288 | VU: "🇻🇺", 289 | WF: "🇼🇫", 290 | WS: "🇼🇸", 291 | YE: "🇾🇪", 292 | YT: "🇾🇹", 293 | ZA: "🇿🇦", 294 | ZM: "🇿🇲", 295 | ZW: "🇿🇼" 296 | }[c])) AS Q_FLAG 297 | 298 | ``` 299 | 300 | -------------------------------------------------------------------------------- /Trackers and Galleries/Z General/Reading Stats.md: -------------------------------------------------------------------------------- 1 | --- 2 | obsidianUIMode: preview 3 | banner: "Trackers and Galleries/Things/Attachments/Banners/library.jpg" 4 | cssClasses: cards, cards-cover, cards-2-3, table-max, max, myhome 5 | banner_x: 0.5 6 | banner_y: 0.4498 7 | --- 8 | 9 | - 10 | - [Home](obsidian://advanced-uri?vault=Books%20and%20Movies&commandid=homepage%253Aopen-homepage) 11 | 12 | 13 | 14 | 15 | ```dataviewjs 16 | let BookCount = (dv.pages('"2 Book Log"').where(p => p.Medium == "Book" || p.Medium == "eBook" || p.Medium == "GraphicNovel" || p.Medium == "AcademicBook" || p.Medium == "AcademicArticle").length); 17 | 18 | let AudioCount = (dv.pages('"2 Book Log"').where(p => p.Medium == "Audiobook" || p.Medium == "Podcast").length); 19 | 20 | let AcademicCount = (dv.pages('"2 Book Log/2023"').where(p => p.Medium == p.Medium == "AcademicBook" || p.Medium == "AcademicArticle").length); 21 | 22 | let pagesum = 0; 23 | for(let i = 0; i < dv.pages('"2 Book Log"').where(p => p.Medium == "Book" || p.Medium == "eBook" || p.Medium == "GraphicNovel" || p.Medium == "AcademicBook" || p.Medium == "AcademicArticle").length; i++) { 24 | if(dv.pages('"2 Book Log"').where(p => p.Medium == "Book" || p.Medium == "eBook" || p.Medium == "GraphicNovel" || p.Medium == "AcademicBook" || p.Medium == "AcademicArticle")[i].Length) { 25 | pagesum += dv.pages('"2 Book Log"').where(p => p.Medium == "Book" || p.Medium == "eBook" || p.Medium == "GraphicNovel" || p.Medium == "AcademicBook" || p.Medium == "AcademicArticle")[i].Length; 26 | } 27 | } 28 | 29 | let hoursum = 0; 30 | for(let i = 0; i < dv.pages('"2 Book Log"').where(p => p.Medium == "Audiobook" || p.Medium == "Podcast").length;i++) { 31 | if(dv.pages('"2 Book Log"').where(p => p.Medium == "Audiobook" || p.Medium == "Podcast")[i].Length) { 32 | hoursum += dv.pages('"2 Book Log"').where(p => p.Medium == "Audiobook" || p.Medium == "Podcast")[i].Length; 33 | } 34 | } 35 | 36 | let Grade = 0; 37 | for(let i = 0; i < dv.pages('"2 Book Log"').length;i++) { 38 | if(dv.pages('"2 Book Log"')[i].Rating) { 39 | Grade += dv.pages('"2 Book Log"')[i].Rating; 40 | } 41 | } 42 | let AvgRating = (Grade / (dv.pages('"2 Book Log"').where(p => p.Medium == "Book" || p.Medium == "eBook" || p.Medium == "Audiobook" || p.Medium == "Podcast" || p.Medium == "GraphicNovel" || p.Medium == "AcademicBook" || p.Medium == "AcademicArticle").length)) 43 | 44 | let year = DateTime.now().year; 45 | let today = DateTime.now().toFormat("dd"); 46 | let daysSince2020 = (year - 2020) * 365 + Number(today); 47 | 48 | let BooksIn2020 = dv.pages('"2 Book Log"').where(p => p.DateFinished?.year == 2020).length; 49 | let BooksIn2021 = dv.pages('"2 Book Log"').where(p => p.DateFinished?.year == 2021).length; 50 | let BooksIn2022 = dv.pages('"2 Book Log"').where(p => p.DateFinished?.year == 2022).length; 51 | 52 | let BooksThisYear = dv.pages('"2 Book Log"').where(p => p.DateFinished?.year == year).length; 53 | 54 | dv.paragraph("#### Since 2020, I've read " + BookCount + " books and I've listened to " + AudioCount + " audiobooks (of which " + dv.pages('"2 Book Log/2023"').where(p => p.Medium == "Podcast").length + " were podcasts), so " + (BookCount + AudioCount) + " regular books and audiobooks read. And I've read " + (AcademicCount) + " academic articles, monographs, etc, for a total " + (BookCount + AudioCount + AcademicCount) + " things read in " + daysSince2020 + ".") 55 | 56 | dv.paragraph("#### In " + dv.fileLink("2020") + " I read " + BooksIn2020 + " books and audiobooks.") 57 | dv.paragraph("#### In " + dv.fileLink("2021") + " I read " + BooksIn2021 + " books and audiobooks.") 58 | dv.paragraph("#### In " + dv.fileLink("2022") + " I read " + BooksIn2022 + " books and audiobooks.") 59 | 60 | dv.paragraph("#### " + dv.fileLink("2023", false, "This year") + " I've read " + BooksThisYear + " books.") 61 | 62 | dv.paragraph("#### I've read " + pagesum + " pages since 2020. And I've listened to " + (hoursum.toFixed(1)) + " hours of audiobooks and podcasts.") 63 | 64 | dv.paragraph("#### I've read " + (pagesum / 50).toFixed(1) + " days’ worth since 2020, vs. the actual " + daysSince2020 + " days that have passed. So I’m " + ((pagesum / 50) - daysSince2020).toFixed(1) + " days ahead.") 65 | 66 | dv.paragraph("#### 50 pages a day would be 18,250 pages for one year, so I have read " + (pagesum / 18250).toFixed(2) + " year’s worth of books.") 67 | 68 | dv.paragraph("#### The average rating for the overall " + (BookCount + AudioCount) + " books and audiobooks is " + AvgRating.toFixed(1) + " out of 10.") 69 | 70 | dv.paragraph("#### Average book length: " + (pagesum / BookCount).toFixed(1) + " pages") 71 | 72 | dv.paragraph("#### Average audiobook length: " + (hoursum / AudioCount).toFixed(1) + " hours") 73 | 74 | dv.paragraph("#### Average pages read per day: " + (pagesum / daysSince2020).toFixed(1) + " pages") 75 | 76 | dv.paragraph("#### Average hours listened per day: " + (hoursum / daysSince2020).toFixed(2) + " hours — this does not include the fact that most audiobooks are listened to at at least 2x speed") 77 | ``` 78 | 79 | 80 | ### Overall Books (and Audiobooks) read 81 | ``` dataviewjs 82 | var labels = ["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"]; 83 | var colors = [['#ff6384'],['#36a2eb'],['#ffce56'],['#4bc0c0'],['#9966ff'],['#ff9f40']] 84 | var datasets = []; 85 | 86 | for( 87 | let results of dv.pages('"2 Book Log"') 88 | .where(p => p.DateFinished) //or p.DateFinished && p.Pages 89 | .sort(p => p.DateFinished, 'asc') 90 | .groupBy(p => (dv.date(p.DateFinished).toFormat("MMMM yyyy"))) 91 | .sort(ym => ym.rows.DateFinished.first(), 'asc') 92 | .groupBy(ym => (dv.date(ym.rows.DateFinished.first()).year)) 93 | .sort(y => y.key, 'asc') 94 | ) { 95 | let lbl = "Books read in " + results.key; 96 | let backCol = colors[datasets.length%colors.length]; 97 | let bordCol = colors[datasets.length%colors.length]; 98 | let bWidth = 1; 99 | 100 | let innerArray = [0,0,0,0,0,0,0,0,0,0,0,0]; 101 | results.rows.forEach(m => { 102 | let numBooks = dv.array(m.rows).length; 103 | //OR .Pages.array().reduce((s,r) => s + r, 0); 104 | innerArray[m.rows.DateFinished.first().month-1] = numBooks; 105 | }) 106 | 107 | let da = {label: lbl, data: innerArray, backgroundColor: backCol, 108 | borderColor: bordCol, borderWidth: bWidth}; 109 | 110 | datasets.push(da) 111 | } 112 | 113 | const chartData = { 114 | type: 'line', 115 | data: {labels: labels, datasets: datasets}, 116 | options: {scales: {yAxis: {suggestedMin: 0, ticks: {stepSize: 1}}} 117 | }} 118 | window.renderChart(chartData, this.container); 119 | ``` 120 | 121 | ### Three longest books 122 | 123 | ```dataview 124 | TABLE without id 125 | ("![](" + Cover + ")") as Cover, 126 | link(file.link, Alias) + " by " + Author + (choice(medium = "Book", " 📖 ", choice(medium = "Audiobook", " 🎧 ", choice(medium = "Podcast", " 📻 ", choice(medium = "eBook", " 📃 ", ""))))) + choice(contains(tags, "Favorite"), "💛", "") as Title, 127 | Year + " || " + " ⭐ " + Rating + " || " + (choice(medium = "Book", Length + " p", choice(medium = "Audiobook", Length + " h", choice(medium = "Podcast", Length + " h", choice(medium = "eBook", Length + " p", ""))))) + " || " + Country as "Time and Place" 128 | FROM "2 Book Log" 129 | WHERE Medium = "Book" OR Medium = "eBook" OR Medium = "GraphicNovel" 130 | SORT Length desc 131 | LIMIT 3 132 | ``` 133 | 134 | ### Three longest audiobooks 135 | ```dataview 136 | TABLE without id 137 | ("![](" + Cover + ")") as Cover, 138 | link(file.link, Alias) + " by " + Author + (choice(medium = "Book", " 📖 ", choice(medium = "Audiobook", " 🎧 ", choice(medium = "Podcast", " 📻 ", choice(medium = "eBook", " 📃 ", ""))))) + choice(contains(tags, "Favorite"), "💛", "") as Title, 139 | Year + " || " + " ⭐ " + Rating + " || " + (choice(medium = "Book", Length + " p", choice(medium = "Audiobook", Length + " h", choice(medium = "Podcast", Length + " h", choice(medium = "eBook", Length + " p", ""))))) + " || " + Country as "Time and Place" 140 | FROM "2 Book Log" 141 | WHERE Medium = "Audiobook" OR Medium = "Podcast" 142 | SORT Length desc 143 | LIMIT 3 144 | ``` 145 | 146 | 147 | ### Publication Years of Books read 148 | ```chartsview 149 | #-----------------# 150 | #- chart type -# 151 | #-----------------# 152 | type: Scatter 153 | 154 | #-----------------# 155 | #- chart data -# 156 | #-----------------# 157 | data: | 158 | dataviewjs: 159 | return dv.pages('"2 Book Log"') 160 | .groupBy(p => ([p.year + '', p.DateFinished??p.file.mday])) 161 | .map(p => ({'Date Finished': p.key[1], 'Published in': p.key[0], Count: p.rows.length, 'Title': p.rows.alias.array()})) 162 | .sort(p => p['Date Finished'], 'asc') 163 | .map(p => ({...p, 'Date Finished': p['Date Finished'].toFormat("W, yyyy-MM-dd")})) 164 | .array(); 165 | 166 | #-----------------# 167 | #- chart options -# 168 | #-----------------# 169 | options: 170 | appendPadding: 30 171 | size: 5 172 | shape: 'circle' 173 | pointStyle: 174 | fillOpacity: 1 175 | tooltip: 176 | fields: ['Date Finished', 'Published in', 'Title'] 177 | yAxis: 178 | nice: true 179 | tickMethod: | 180 | function ({values}) { 181 | return values.sort((v1, v2) => parseInt(v1) - parseInt(v2)); 182 | } 183 | line: 184 | style: 185 | stroke: '#aaa' 186 | xAxis: 187 | grid: 188 | line: 189 | style: 190 | stroke: '#eee' 191 | line: 192 | style: 193 | stroke: '#aaa' 194 | label: {} 195 | colorField: Count 196 | yField: Published in 197 | xField: Date Finished 198 | 199 | 200 | ``` -------------------------------------------------------------------------------- /Trackers and Galleries/Z General/Want to Read.md: -------------------------------------------------------------------------------- 1 | --- 2 | obsidianUIMode: preview 3 | cssClasses: cards, cards-cover, cards-2-3, table-max, max 4 | --- 5 | 6 | 7 | # Want to Read 8 | ```dataview 9 | TABLE without id 10 | ("![](" + Cover + ")") AS "Cover", 11 | P_BookByAuthor AS "Title" 12 | 13 | FROM "Trackers and Galleries/Want to Read" 14 | WHERE Medium != null 15 | 16 | 17 | SORT Author desc 18 | 19 | 20 | FLATTEN link(file.link, Alias) + " by " + Author AS P_BookByAuthor 21 | FLATTEN choice(contains(tags, "Favorite"), "💛", "") AS P_FavoriteIcon 22 | 23 | FLATTEN { 24 | "Book": " 📖 ", 25 | "Audiobook": " 🎧 ", 26 | "Podcast": " 📻 ", 27 | "eBook": " 📃 ", 28 | "GraphicNovel": " 💬 ", 29 | "AcademicBook": " 📚🎓 ", 30 | "AcademicArticle": " 📰 " 31 | }[Medium] AS P_MediumIcon 32 | 33 | 34 | 35 | 36 | 37 | ``` 38 | 39 | --------------------------------------------------------------------------------