swadhinbiswas Initial release v0.1.0 · 1/16/2026
ed7a4e4
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
// 4chan API Types
// Based on https://github.com/4chan/4chan-API
export interface Board {
board: string;
title: string;
ws_board: number; // worksafe
per_page: number;
pages: number;
max_filesize: number;
max_webm_filesize: number;
max_comment_chars: number;
max_webm_duration: number;
bump_limit: number;
image_limit: number;
cooldowns?: {
threads: number;
replies: number;
images: number;
};
meta_description?: string;
spoilers?: number;
custom_spoilers?: number;
is_archived?: number;
board_flags?: Record<string, string>;
country_flags?: number;
user_ids?: number;
oekaki?: number;
sjis_tags?: number;
code_tags?: number;
math_tags?: number;
text_only?: number;
forced_anon?: number;
webm_audio?: number;
require_subject?: number;
min_image_width?: number;
min_image_height?: number;
}
export interface BoardList {
boards: Board[];
}
export interface Post {
no: number;
resto: number; // 0 for OP
sticky?: number;
closed?: number;
now: string;
time: number;
name?: string;
trip?: string;
id?: string;
capcode?: string;
country?: string;
country_name?: string;
sub?: string; // subject
com?: string; // HTML comment
tim?: number; // renamed filename
filename?: string;
ext?: string; // .jpg, .png, .gif, .webm
fsize?: number;
md5?: string;
w?: number; // image width
h?: number; // image height
tn_w?: number; // thumbnail width
tn_h?: number; // thumbnail height
filedeleted?: number;
spoiler?: number;
custom_spoiler?: number;
omitted_posts?: number;
omitted_images?: number;
replies?: number;
images?: number;
bumplimit?: number;
imagelimit?: number;
capcode_replies?: Record<string, number>;
last_modified?: number;
tag?: string;
semantic_url?: string;
since4pass?: number;
unique_ips?: number;
m_img?: number; // mobile optimized image
archived?: number;
archived_on?: number;
}
export interface Thread {
posts: Post[];
}
export interface CatalogThread {
no: number;
last_modified: number;
replies: number;
images: number;
page?: number;
sub?: string;
com?: string;
tim?: number;
filename?: string;
ext?: string;
w?: number;
h?: number;
tn_w?: number;
tn_h?: number;
sticky?: number;
closed?: number;
archived?: number;
bumplimit?: number;
imagelimit?: number;
semantic_url?: string;
unique_ips?: number;
teaser?: string;
}
export interface CatalogPage {
page: number;
threads: CatalogThread[];
}
export type Catalog = CatalogPage[];
export interface Archive {
archives: number[];
}