code wiki / (root) / nx_img_extract_demo.nx

nx_img_extract_demo.nx source

↩ module page · 30 lines · 1433 B

1// nx_img_extract_demo.nx -- show the parser finding media (image URLs) in HTML. 2import "nx_str.nx" 3import "nx_html_extract_imgs.nx" 4const K_MAGIC_8192: i64 = 8192 5 6func nx_putc(c: i64) -> i64 { let b: *u8 = sys_mmap(1); b[0] = c; sys_write(1, b, 1); return 0 } 7func nx_puts(s: *u8) -> i64 { sys_write(1, s, nx_str_len(s)); return 0 } 8func nx_put_i64(n: i64) -> i64 { 9 if n == 0 { nx_putc(0x30); return 0 } 10 var v: i64 = n; let t: *u8 = sys_mmap(32); var k: i64 = 0 11 while v > 0 { t[k] = 0x30 + (v - (v/10)*10); v = v/10; k = k+1 } 12 while k > 0 { k = k-1; sys_write(1, (((t as i64)+k) as *u8), 1) } 13 return 0 14} 15 16func main() -> i64 { 17 let html: *u8 = "<html><body><img src='https://cdn.example.com/diora-cover.jpg' alt='Diora'><p>bio</p><img src='/gallery/diora-2.jpg'><a href='x'><img src='https://m.media-amazon.com/images/diora-still.jpg'></a></body></html>" 18 let base: *u8 = "https://fansite.example" 19 let ub: *u8 = sys_mmap(K_MAGIC_8192) 20 let offs: *i64 = sys_mmap(64 * 8) as *i64 21 let lens: *i64 = sys_mmap(64 * 8) as *i64 22 let n: i64 = nx_html_extract_imgs(html, nx_str_len(html), base, nx_str_len(base), ub, K_MAGIC_8192, offs, lens, 64) 23 nx_puts("parser found "); nx_put_i64(n); nx_puts(" image URLs in the page:\n") 24 var i: i64 = 0 25 while i < n { 26 nx_puts(" - "); sys_write(1, (((ub as i64) + offs[i]) as *u8), lens[i]); nx_putc(0x0A) 27 i = i + 1 28 } 29 return 0 30}