code wiki / _hdl_build / nx_ia_probe.nx

nx_ia_probe.nx source

↩ module page · 26 lines · 1436 B

1// nx_ia_probe.nx -- resolve an archive.org /details/ URL to the direct media file URL. Run from nxc2 root. 2import "nx_syscalls.nx" 3import "nx_x509_trust_store.nx" 4import "nx_trust_store_load_from_certdata.nx" 5import "nx_csprng.nx" 6import "nx_ia_resolve.nx" 7const K_MAGIC_4194304: i64 = 4194304 8const K_MAGIC_4096: i64 = 4096 9 10func pw(s: *u8) -> i64 { var n: i64=0; while s[n]!=(0 as u8){n=n+1} sys_write(1,s,n); return 0 } 11func psl(s: *u8) -> i64 { var n: i64=0; while s[n]!=(0 as u8){n=n+1} return n } 12 13func main(argc: i64, argv: *i64) -> i64 { 14 var url: *u8 = "https://archive.org/details/felicia-les-mille-et-une-perversions-de-felicia-1975-john-roche-batrice-harnois-" as *u8 15 if argc >= 2 { url = argv[1] as *u8 } 16 let r: i64 = nx_trust_store_load_from_certdata("data/mozilla_certdata.txt" as *u8, 512, K_MAGIC_4194304) 17 if r <= 0 { pw("IA: certdata load failed\n" as *u8); sys_exit(1); return 1 } 18 let store: *TrustStore = r as *TrustStore 19 let cr: *u8 = sys_mmap(32); let pk: *u8 = sys_mmap(32); nx_csprng_fill(cr, 32); nx_csprng_fill(pk, 32) 20 pw("details: " as *u8); pw(url); pw("\n" as *u8) 21 let out: *u8 = sys_mmap(K_MAGIC_4096) 22 let n: i64 = ia_resolve(url, psl(url), store, cr, pk, sys_now_realtime_sec(), out, K_MAGIC_4096) 23 if n > 0 { pw("RESOLVED media URL: " as *u8); pw(out); pw("\n" as *u8) } 24 else { pw("RESOLVE FAILED (no metadata / no mp4)\n" as *u8) } 25 sys_exit(0); return 0 26}