Skip to content

Commit

Permalink
feat: + jm-comic, rename files
Browse files Browse the repository at this point in the history
  • Loading branch information
dragon-fish committed Sep 21, 2024
1 parent c85fea4 commit 0384a12
Show file tree
Hide file tree
Showing 7 changed files with 92 additions and 17 deletions.
24 changes: 7 additions & 17 deletions src/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,6 @@ import { App, Dict, Random, type Session, Time } from 'koishi'

import { resolve } from 'node:path'

import { MinecraftBot } from '@/adapters/adapter-minecraft'
import FallbackHandler from '@/modules/FallbackHandler'
import MessagesLogger from '@/modules/MessagesLogger'
import { MinecraftConnect } from '@/modules/MinecraftConnect'
Expand All @@ -25,26 +24,27 @@ import PluginDatabaseAdmin from '~/dbadmin'
import { PluginDebug } from '~/debug'
import PluginDice from '~/dice'
import PluginHljs from '~/hljs'
import PluginJMComic from '~/jm-comic'
import { PluginLookupIP } from '~/lookup-ip'
import PluginMediawiki from '~/mediawiki'
import PluginMinecraft from '~/minecraft'
import PluginMute from '~/mute'
import PluginOpenAi from '~/openai'
import PluginPing from '~/ping'
import PluginPixiv from '~/pixiv'
import PluginPowerUser from '~/powerUser'
import PluginPowerUser from '~/power-user'
import PluginProfile from '~/profile'
import PluginQueue from '~/queue'
import PluginReboot from '~/reboot'
import PluginSensitiveFilter from '~/sensitive-words-filter'
import PluginSiliName from '~/siliName'
import PluginSiliName from '~/sili-name'
import PluginSpawn from '~/spawn'
import PluginSticker from '~/sticker'
import PluginToImage from '~/toImage'
import PluginVerifyFandomUser from '~/verifyFandomUser'
import PluginToImage from '~/to-image'
import PluginVerifyFandomUser from '~/verify-fandom-user'
import PluginVersion from '~/version'
import PluginWebShot from '~/webshot'
import PluginWhoAsked from '~/whoAsked'
import PluginWhoAsked from '~/who-asked'
import PluginYoudao from '~/youdao'

import AdapterDingtalk from '@koishijs/plugin-adapter-dingtalk'
Expand Down Expand Up @@ -133,17 +133,6 @@ app.plugin(function PluginCollectionAdapters(ctx) {
selfId: env.ONEBOT_SELFID?.trim(),
endpoint: env.ONEBOT_ENDPOINT,
})
// ctx.plugin(AdapterRed, {
// endpoint: env.CHRONOCAT_RED_ENDPOINT,
// token: env.CHRONOCAT_TOKEN,
// selfId: env.ONEBOT_SELFID?.trim(),
// path: '/assets/red',
// selfUrl: env.KOISHI_SELF_URL,
// })
// ctx.plugin(AdapterSatori, {
// endpoint: env.CHRONOCAT_SATORI_ENDPOINT,
// token: env.CHRONOCAT_TOKEN,
// })

// Discord
// ctx.plugin(AdapterDiscord, {
Expand Down Expand Up @@ -305,6 +294,7 @@ app.plugin(function PluginCollectionSILICore(ctx) {
ctx.plugin(PluginAbout)
ctx.plugin(PluginDice)
ctx.plugin(PluginHljs)
ctx.plugin(PluginJMComic)
if (process.env.TOKEN_IPGEOLOCATION) {
ctx.plugin(PluginLookupIP, {
ipgeoApiKey: process.env.TOKEN_IPGEOLOCATION,
Expand Down
85 changes: 85 additions & 0 deletions src/plugins/jm-comic.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,85 @@
import { Context, h } from 'koishi'

import BasePlugin from '~/_boilerplate'

import { load } from 'cheerio'

export default class PluginJMComic extends BasePlugin {
readonly JM_SOURCE = [
'https://18comic.vip',
'https://18comic.org',
'https://jmcomic1.me',
'https://18comic-palworld.vip',
'https://18comic-c.art',
]

constructor(readonly ctx: Context) {
super(ctx, {}, '18comic')

ctx
.command('jm', '<album:posint> 18comic', { maxUsage: 10 })
.option('quiet', '-q 静默模式', { hidden: true })
.action(async ({ options }, album) => {
const albumNum = this.getAlbumNumFromStrig(album || '')
if (!albumNum) {
return options.quiet ? '' : '未找到作品编号'
}
const albumInfo = await this.fetchAlbum(albumNum)
if (!albumInfo.title) {
return options.quiet ? '' : `可能需要登录查看:\n${albumInfo.url}`
} else {
return `${albumInfo.title}\n${albumInfo.url}`
}
})

ctx.middleware(async (session, next) => {
const albumNum = this.getAlbumNumFromStrig(
h.select(session.elements, 'text').join('')
)
if (!albumNum) {
return next()
}

return session.execute({
name: 'jm',
args: [albumNum],
options: { quiet: true },
})
})
}

getAlbumNumFromStrig(str: string) {
const num = str.replace(/\D/g, '')
if (num.length >= 6 && num.length <= 8) {
return num
} else {
return ''
}
}

async fetchAlbum(album: string) {
const url = `https://18comic.vip/album/${album}`
try {
const html = await fetch(url).then((res) => res.text())
const $ = load(html)
const title = $('h1#book-name, title')
.text()
.replace('Comics - 禁漫天堂', '')
.trim()
// 404
if (title === '禁漫天堂') {
throw new Error('404')
}
return {
title,
url,
}
} catch (e) {
this.logger.warn(`fetchAlbum(${album}) failed:`, e)
return {
url,
title: '',
}
}
}
}
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.

0 comments on commit 0384a12

Please sign in to comment.