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}