Create src/lib/grabber/sites.ts

#1
Files changed (1) hide show
  1. src/lib/grabber/sites.ts +37 -0
src/lib/grabber/sites.ts ADDED
@@ -0,0 +1,37 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ export type SiteConfig = {
2
+ id: string;
3
+ name: string;
4
+ baseUrl: string;
5
+ searchPath: string;
6
+ params: Record<string, string>;
7
+ postsPath: string;
8
+ fields: Record<keyof NormalizedPost, string>;
9
+ headers?: Record<string, string>;
10
+ };
11
+
12
+ export type NormalizedPost = {
13
+ id: string;
14
+ previewUrl: string;
15
+ fileUrl: string;
16
+ ext: string;
17
+ tags: string[];
18
+ source: string;
19
+ rating: string;
20
+ score: number;
21
+ };
22
+
23
+ const BUILTIN_SITES: SiteConfig[] = [{
24
+ id: 'e621',
25
+ name: 'e621',
26
+ baseUrl: 'https://e621.net',
27
+ searchPath: '/posts.json',
28
+ params: { tags: 'tags', page: 'page', limit: 'limit' },
29
+ postsPath: 'posts',
30
+ fields: {
31
+ id: 'id', previewUrl: 'preview.url', fileUrl: 'file.url', ext: 'file.ext',
32
+ tags: 'tags.general', source: 'sources.0', rating: 'rating', score: 'score.total',
33
+ },
34
+ headers: { 'User-Agent': 'LovableGrabber/1.0' },
35
+ }];
36
+
37
+ export const getByPath = (path: string) => BUILTIN_SITES.find(s => s.id === path);