Commit c69b36c5 authored by nanahira's avatar nanahira

move to thirdeye and clean up old shitty

parent 9e7b6d2d
This source diff could not be displayed because it is too large. You can view the blob instead.
......@@ -26,7 +26,7 @@
},
"homepage": "https://github.com/koishijs/koishi-plugin-picsource-lolicon",
"dependencies": {
"schemastery-gen": "^2.4.1",
"koishi-thirdeye": "^8.2.1",
"source-map-support": "^0.5.20"
},
"peerDependencies": {
......
import 'source-map-support/register';
import { PicSourceConfig } from 'koishi-plugin-pics';
import { DefineSchema, RegisterSchema } from 'schemastery-gen';
import { DefineSchema, RegisterSchema } from 'koishi-thirdeye';
@RegisterSchema()
export class PicSourceLoliconPluginConfig extends PicSourceConfig {
......
import 'source-map-support/register';
import { Context } from 'koishi';
import { PicSourceLoliconPlugin } from './plugin';
import { PicSourceLoliconPluginConfig } from './config';
export * from './config';
export * from './plugin';
export const name = 'picsource-lolicon';
const plugin = new PicSourceLoliconPlugin();
export const Config = plugin.schema;
export const using = ['pics'];
export function apply(ctx: Context, config: PicSourceLoliconPluginConfig) {
ctx.plugin(plugin, config);
import { Context, Logger } from 'koishi';
import {
PicSourceLoliconPluginConfig,
PicSourceLoliconPluginConfigLike,
} from './config';
import PicsContainer, { PicResult, PicSource } from 'koishi-plugin-pics';
import { LoliconReturnMessage } from './def';
import {
DefinePlugin,
Inject,
InjectConfig,
InjectLogger,
LifecycleEvents,
} from 'koishi-thirdeye';
@DefinePlugin({
name: 'picsource-lolicon',
schema: PicSourceLoliconPluginConfig,
})
export default class PicSourceLolicon
extends PicSource
implements LifecycleEvents
{
constructor(ctx: Context, config: PicSourceLoliconPluginConfigLike) {
super(ctx);
}
@InjectConfig()
private config: PicSourceLoliconPluginConfig;
@Inject(true)
private pics: PicsContainer;
@InjectLogger()
private logger: Logger;
onApply() {
this.config.applyTo(this);
this.pics.addSource(this);
}
async randomPic(picTags: string[]): Promise<PicResult> {
if (picTags.length > 3) {
return;
}
const result = await this.ctx.http.post<LoliconReturnMessage>(
this.config.endpoint,
{
r18: this.config.r18,
num: 1,
tag: picTags,
...this.config.extraConfig,
},
);
if (result.error) {
this.logger.warn(
`Failed to get Lolicon random pic ${picTags.join(',')}: ${
result.error
}`,
);
return;
}
if (!result.data?.length) {
return;
}
const data = result.data[0];
if (!data.urls?.original) {
return;
}
return {
url: data.urls.original,
description: `PID:${data.pid} ${data.title} by ${data.author}`,
};
}
}
import 'source-map-support/register';
import { Context, Schema } from 'koishi';
import {
PicSourceLoliconPluginConfig,
PicSourceLoliconPluginConfigLike,
} from './config';
import { PicResult, PicSource } from 'koishi-plugin-pics';
import { LoliconReturnMessage } from './def';
export class PicSourceLolicon extends PicSource {
constructor(ctx: Context, private config: PicSourceLoliconPluginConfig) {
super(ctx);
config.applyTo(this);
}
async randomPic(picTags: string[]): Promise<PicResult> {
if (picTags.length > 3) {
return;
}
const result = await this.ctx.http.post<LoliconReturnMessage>(
this.config.endpoint,
{
r18: this.config.r18,
num: 1,
tag: picTags,
...this.config.extraConfig,
},
);
if (result.error) {
this.ctx
.logger('picsource-lolicon')
.warn(
`Failed to get Lolicon random pic ${picTags.join(',')}: ${
result.error
}`,
);
return;
}
if (!result.data?.length) {
return;
}
const data = result.data[0];
if (!data.urls?.original) {
return;
}
return {
url: data.urls.original,
description: `PID:${data.pid} ${data.title} by ${data.author}`,
};
}
}
export class PicSourceLoliconPlugin {
private config: PicSourceLoliconPluginConfig;
private ctx: Context;
name = 'picsource-lolicon-main';
schema = PicSourceLoliconPluginConfig;
apply(ctx: Context, config: PicSourceLoliconPluginConfig) {
this.ctx = ctx;
this.config = config;
const source = new PicSourceLolicon(ctx, this.config);
ctx.pics.addSource(source, ctx);
}
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment