nx_media_archive_research.nx source
↩ module page · 52 lines · 4127 B
1// nx_media_archive_research.nx -- THIN structured MEDIA-ARCHIVE research source organ. COMPOSES
2// nx_research_engine (sovereign fetch->extract->bank). Operator 2026-06-29: "is there anything that actually
3// STORES media like them ... we want images, gifs, videos etc -- use the nishi researcher." The honest gap:
4// Common Crawl is HTML/text-first and does NOT systematically store media bytes (it gives the page + link graph,
5// not the pixels). This banks the systems that ACTUALLY store media -- deep-grab web archives (Archive Team,
6// Webrecorder), media repositories (Wikimedia Commons, Flickr, Imgur, Giphy), GIF/short-video hosts and how they
7// DIE (Gfycat), the pointer-vs-storage distinction (LAION/ImageNet = URLs + metadata, NOT the image bytes), and
8// the reddit case (Pushshift archived the TEXT, not the media). Grounds the time machine's media-ingest strategy.
9// Never assumptions (Rule 4). Prefix mediarc_ keeps this distinct from arc_/srch_. expect_exit: 0 license_tier: ORIGINAL
10import "nx_research_engine.nx"
11const K_MAGIC_8388608: i64 = 8388608
12
13func main() -> i64 {
14 let store: *TrustStore = rf_init()
15 if (store as i64) == 0 { rf_puts("mediarc: trust store load failed\n" as *u8); return 1 }
16 rf_puts("CA roots="); rf_putn(trust_store_count(store)); rf_puts(" -- MEDIA-ARCHIVE research (who actually STORES images/gifs/video) -> Library\n" as *u8)
17 let cap: i64 = K_MAGIC_8388608
18 let out: *u8 = sys_mmap(cap)
19 var ok: i64 = 0
20
21 rf_section("DEEP-GRAB WEB ARCHIVES -- capture & STORE the actual media bytes (what Wayback misses)" as *u8)
22 ok = ok + rf_fetch_bank("https://en.wikipedia.org/wiki/Archive_Team" as *u8, "mediarc_archiveteam" as *u8, store, out, cap)
23 ok = ok + rf_fetch_bank("https://en.wikipedia.org/wiki/Webrecorder" as *u8, "mediarc_webrecorder" as *u8, store, out, cap)
24
25 rf_section("MEDIA REPOSITORIES -- store the actual files (images/video/audio), dumps available" as *u8)
26 ok = ok + rf_fetch_bank("https://en.wikipedia.org/wiki/Wikimedia_Commons" as *u8, "mediarc_wikimedia_commons" as *u8, store, out, cap)
27 ok = ok + rf_fetch_bank("https://en.wikipedia.org/wiki/Flickr" as *u8, "mediarc_flickr" as *u8, store, out, cap)
28 ok = ok + rf_fetch_bank("https://en.wikipedia.org/wiki/Imgur" as *u8, "mediarc_imgur" as *u8, store, out, cap)
29 ok = ok + rf_fetch_bank("https://en.wikipedia.org/wiki/Photobucket" as *u8, "mediarc_photobucket" as *u8, store, out, cap)
30
31 rf_section("GIF / SHORT-VIDEO HOSTS -- the gif layer (and how it dies: Gfycat shutdown = media loss)" as *u8)
32 ok = ok + rf_fetch_bank("https://en.wikipedia.org/wiki/Giphy" as *u8, "mediarc_giphy" as *u8, store, out, cap)
33 ok = ok + rf_fetch_bank("https://en.wikipedia.org/wiki/Gfycat" as *u8, "mediarc_gfycat" as *u8, store, out, cap)
34
35 rf_section("MEDIA DATASETS -- POINTERS vs STORAGE (LAION/ImageNet = URLs + metadata, NOT the image bytes)" as *u8)
36 ok = ok + rf_fetch_bank("https://en.wikipedia.org/wiki/ImageNet" as *u8, "mediarc_imagenet" as *u8, store, out, cap)
37 ok = ok + rf_fetch_bank("https://en.wikipedia.org/wiki/LAION" as *u8, "mediarc_laion" as *u8, store, out, cap)
38
39 rf_section("VIDEO -- hosting + sovereign preservation tooling" as *u8)
40 ok = ok + rf_fetch_bank("https://en.wikipedia.org/wiki/YouTube" as *u8, "mediarc_youtube" as *u8, store, out, cap)
41 ok = ok + rf_fetch_bank("https://en.wikipedia.org/wiki/Yt-dlp" as *u8, "mediarc_ytdlp" as *u8, store, out, cap)
42
43 rf_section("REDDIT / SOCIAL -- Pushshift archived the TEXT, not the media (the hardest recovery case)" as *u8)
44 ok = ok + rf_fetch_bank("https://en.wikipedia.org/wiki/Pushshift" as *u8, "mediarc_pushshift" as *u8, store, out, cap)
45
46 rf_section("GENERAL -- digital libraries / repositories" as *u8)
47 ok = ok + rf_fetch_bank("https://en.wikipedia.org/wiki/Digital_library" as *u8, "mediarc_digital_library" as *u8, store, out, cap)
48
49 rf_puts("MEDIA-ARCHIVE BANKED: "); rf_putn(ok); rf_puts(" / 14 (sections preserved, gzip-guarded; run nx_library_harvest_v2 to index, nx_search_cli to query)\n" as *u8)
50 if ok < 1 { return 51 }
51 return 0
52}