diff --git a/bin/update-software-hashes.mjs b/bin/update-software-hashes.mjs index 8c92128..6237802 100755 --- a/bin/update-software-hashes.mjs +++ b/bin/update-software-hashes.mjs @@ -74,7 +74,7 @@ const STATE_FILE = path.join(CDN_CACHE, ".update-software-hashes.state.json"); const TAPE_FILETYPE_IDS = [8, 22]; // Tape file extensions in priority order (most common first) -const TAPE_EXTENSIONS = [".tap", ".tzx", ".pzx", ".csw", ".p"]; +const TAPE_EXTENSIONS = [".tap", ".tzx", ".pzx", ".csw", ".p", ".o"]; // ---- DB ---- const pool = mysql.createPool({ diff --git a/data/zxdb/software_hashes.json b/data/zxdb/software_hashes.json index 2bffc83..4cc4ef7 100644 --- a/data/zxdb/software_hashes.json +++ b/data/zxdb/software_hashes.json @@ -1,6 +1,6 @@ { - "exportedAt": "2026-02-17T16:15:38.217Z", - "count": 32944, + "exportedAt": "2026-02-17T16:18:44.812Z", + "count": 32960, "rows": [ { "download_id": 172, @@ -180594,6 +180594,14 @@ "inner_path": "REC2.P", "updated_at": "2026-02-17T16:15:35.000Z" }, + { + "download_id": 129922, + "md5": "b2771bc689d8f629ef08b62cbb900ae1", + "crc32": "3490d586", + "size_bytes": 13516, + "inner_path": "PBS1A.O", + "updated_at": "2026-02-17T16:18:44.000Z" + }, { "download_id": 129925, "md5": "1697b214bd7837ee2f0076688f92a9d3", @@ -182466,6 +182474,14 @@ "inner_path": "crapsrun.tap", "updated_at": "2026-02-17T16:06:14.000Z" }, + { + "download_id": 130193, + "md5": "6e0793c1be4a401ad09d64a8bded172c", + "crc32": "f37002da", + "size_bytes": 13561, + "inner_path": "elfbayne.O", + "updated_at": "2026-02-17T16:18:44.000Z" + }, { "download_id": 130194, "md5": "8bdd0910a7c453dd1df8832f68a5cbb6", @@ -182802,6 +182818,38 @@ "inner_path": "SP8501w2760CollectAKey.TAP", "updated_at": "2026-02-17T16:06:14.000Z" }, + { + "download_id": 131048, + "md5": "0e8c60c3bf291027f3655a685253df43", + "crc32": "5d5f6a37", + "size_bytes": 645, + "inner_path": "Complex Maths... WITH DRAGONS! - 1K Addition.o", + "updated_at": "2026-02-17T16:18:44.000Z" + }, + { + "download_id": 131049, + "md5": "92c301268ba10128ca34dcb189c05319", + "crc32": "8345a27d", + "size_bytes": 2102, + "inner_path": "Complex Maths... WITH DRAGONS! - 4K RAM pack Super Deluxe Edition.o", + "updated_at": "2026-02-17T16:18:44.000Z" + }, + { + "download_id": 131050, + "md5": "9beaf5739bc8032c18aa4173fb6dd154", + "crc32": "0fd3b4eb", + "size_bytes": 661, + "inner_path": "Complex Maths... WITH DRAGONS! - 1K Multiplication.o", + "updated_at": "2026-02-17T16:18:44.000Z" + }, + { + "download_id": 131051, + "md5": "f3a0cf5da62bcfc8fc68920b75632fce", + "crc32": "b933f580", + "size_bytes": 645, + "inner_path": "Complex Maths... WITH DRAGONS! - 1K Subtraction.o", + "updated_at": "2026-02-17T16:18:44.000Z" + }, { "download_id": 131052, "md5": "026eec1d1a287960b97bebe91aa87060", @@ -191106,6 +191154,14 @@ "inner_path": "Tardigrade.tap", "updated_at": "2026-02-17T16:07:51.000Z" }, + { + "download_id": 139693, + "md5": "4450e9f2dc3d635e1d3cdc7d755efe5a", + "crc32": "728c72eb", + "size_bytes": 6532, + "inner_path": "ticTacToeHell.O", + "updated_at": "2026-02-17T16:18:44.000Z" + }, { "download_id": 139694, "md5": "d6c5746fa56e0260bbc7eeada89f4fa8", @@ -197186,6 +197242,22 @@ "inner_path": "ShuttleMaster.tap", "updated_at": "2026-02-17T16:07:58.000Z" }, + { + "download_id": 142059, + "md5": "2245fa1855cdf9329a400cff3d58a79c", + "crc32": "6e4a2460", + "size_bytes": 692, + "inner_path": "MiniBankRaid.o", + "updated_at": "2026-02-17T16:18:44.000Z" + }, + { + "download_id": 142062, + "md5": "08894254c3ca728fc3b738825f1532af", + "crc32": "e7a35e1f", + "size_bytes": 801, + "inner_path": "Golf80.o", + "updated_at": "2026-02-17T16:18:44.000Z" + }, { "download_id": 142068, "md5": "b997af314039585661223fdf5c8b4f32", @@ -198442,6 +198514,14 @@ "inner_path": "Tschausepp.tzx", "updated_at": "2026-02-17T16:07:59.000Z" }, + { + "download_id": 142612, + "md5": "1dddbfcf8c70ecaf61c6dd95d765c88f", + "crc32": "c86b059a", + "size_bytes": 3888, + "inner_path": "ZX80Boggle.o", + "updated_at": "2026-02-17T16:18:44.000Z" + }, { "download_id": 142616, "md5": "db6d8692d382e76fc07240ca76d516a9", @@ -222786,6 +222866,14 @@ "inner_path": "MICROBUG.p", "updated_at": "2026-02-17T16:15:37.000Z" }, + { + "download_id": 169160, + "md5": "74a7720d4575ca589df4f03c8572a99b", + "crc32": "690d289b", + "size_bytes": 774, + "inner_path": "GuessThePassword.o", + "updated_at": "2026-02-17T16:18:44.000Z" + }, { "download_id": 169163, "md5": "a86572e2929dac4914ff189a8d6d89d3", @@ -223002,6 +223090,14 @@ "inner_path": "FaceTheMusic.tap", "updated_at": "2026-02-17T16:08:25.000Z" }, + { + "download_id": 169328, + "md5": "173657ec771e5cf5b1a405ac4f61718b", + "crc32": "ddf2414e", + "size_bytes": 473, + "inner_path": "Tic-Tac-Toe.o", + "updated_at": "2026-02-17T16:18:44.000Z" + }, { "download_id": 169330, "md5": "07728bd063cc96fa1a74619676c9e1c8", @@ -223034,6 +223130,22 @@ "inner_path": "CastleMaze.tap", "updated_at": "2026-02-17T16:08:25.000Z" }, + { + "download_id": 169341, + "md5": "e51d7a085d9759c8b3cbdc828a0c2ddf", + "crc32": "958247cc", + "size_bytes": 639, + "inner_path": "ShootOutZX80.o", + "updated_at": "2026-02-17T16:18:44.000Z" + }, + { + "download_id": 169343, + "md5": "136b017af1c878099217dfa5fd6f265d", + "crc32": "7583e470", + "size_bytes": 583, + "inner_path": "RockPaperScissorsZX801KEdition.o", + "updated_at": "2026-02-17T16:18:44.000Z" + }, { "download_id": 169345, "md5": "d617c79a03400fe0a4eaa129021b4682", @@ -223098,6 +223210,22 @@ "inner_path": "AnchovyCoastThe.tap", "updated_at": "2026-02-17T16:08:25.000Z" }, + { + "download_id": 169365, + "md5": "e273011e2f5fa4ce9ce921d3a3c63e1c", + "crc32": "ca6c0fcc", + "size_bytes": 157, + "inner_path": "OddsAndEvensClassic.o", + "updated_at": "2026-02-17T16:18:44.000Z" + }, + { + "download_id": 169366, + "md5": "e2168b4e110b99bc5d23f75f43299336", + "crc32": "3df750b6", + "size_bytes": 998, + "inner_path": "OddsAndEvensClassic(Deluxe).o", + "updated_at": "2026-02-17T16:18:44.000Z" + }, { "download_id": 169370, "md5": "de1dd17fa4e7d84133f19ad2f9bbc020",