Can embed any file in a PNG/WebM/GIF/JPEG and upload it to a third-party host through 4chan
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 

115 lines
3.1 KiB

import type { HydrusClient } from "./hydrus";
import type { Booru } from "./thirdeye";
import { writable } from "svelte/store";
import { Platform } from "./platform";
// Todo: use GM get/setValue instead?
export const localLoad = async <T>(key: string, def: T) => {
const ret = await Platform.getValue(key, def);
return ret;
};
const localSet = (key: string, value: any) => {
if (execution_mode == "worker") {
return;
}
chrome.storage.local.set({ [key]: JSON.stringify(value) });
};
export const initial_settings = {
loop: true,
dh: false,
pmeth: 5,
xpv: false,
xpi: false,
hyd: false,
notcata: false,
ak: '',
auto_embed: 0,
auto_tags: '',
te: false,
eye: false,
ca: false,
pre: false,
prev: false,
sh: false,
ep: false,
tm: false,
dvc: false,
expte: false,
mdist: -1,
phash: false,
hotlink: false,
jpeg: false,
vercheck: false,
cache: undefined as (boolean | undefined), // meaning defaults to false, except on b4k
fhost: 0,
maxe: 5,
conc: 8,
ho: false,
blacklist: [] as string[],
rsources: [
{
name: 'Gelbooru',
domain: 'gelbooru.com',
endpoint: '/index.php?page=dapi&s=post&q=index&json=1&tags=md5:',
view: "https://gelbooru.com/index.php?page=post&s=view&id="
},
{
name: 'Yandere',
domain: 'yande.re',
endpoint: '/post.json?tags=md5:',
view: `https://yande.re/post/show/`
},
{
name: 'Sankaku',
domain: 'capi-v2.sankakucomplex.com',
endpoint: '/posts/keyset?tags=md5:',
view: `https://chan.sankakucomplex.com/post/show/`
},
{
name: 'Rule34',
domain: 'api.rule34.xxx',
endpoint: '/index.php?page=dapi&s=post&q=index&json=1&tags=md5:',
// note: rule34 do not seem to give source in their API
view: "https://rule34.xxx/index.php?page=post&s=view&id="
},
{
name: 'Danbooru',
domain: 'danbooru.donmai.us',
endpoint: '/posts.json?tags=md5:',
view: 'https://danbooru.donmai.us/posts/'
},
{
name: 'Lolibooru',
domain: 'lolibooru.moe',
endpoint: '/post.json?tags=md5:',
view: 'https://lolibooru.moe/post/show/'
},
{
name: "ATFbooru",
domain: "booru.allthefallen.moe",
endpoint: "/posts.json?tags=md5:",
view: 'https://booru.allthefallen.moe/posts/'
}
] as (Omit<Booru, 'quirks'> & { view: string, disabled?: boolean })[],
};
export const settings = writable<Awaited<typeof initial_settings>>();
export const appState = writable({
isCatalog: false,
is4chanX: false,
akValid: false,
herror: '' as string | undefined,
client: null as HydrusClient | null,
processing: 0,
processed: 0,
foundPosts: [] as HTMLElement[]
});
settings.subscribe(newVal => {
if (newVal)
localSet('settingsv2', newVal);
});