commit
3d2ad56025
8 changed files with 276 additions and 53 deletions
3
data/mc/rmc/go.mod
Normal file
3
data/mc/rmc/go.mod
Normal file
|
@ -0,0 +1,3 @@
|
|||
module rmc
|
||||
|
||||
go 1.15
|
64
data/mc/rmc/main.go
Normal file
64
data/mc/rmc/main.go
Normal file
|
@ -0,0 +1,64 @@
|
|||
package main
|
||||
|
||||
import (
|
||||
"bytes"
|
||||
"fmt"
|
||||
"io/ioutil"
|
||||
"log"
|
||||
"net/http"
|
||||
"os/exec"
|
||||
)
|
||||
|
||||
func checkErr(err error) {
|
||||
if err != nil {
|
||||
fmt.Println(err)
|
||||
}
|
||||
}
|
||||
|
||||
func handleStatus(writer http.ResponseWriter, request *http.Request) {
|
||||
cmd := exec.Command("papermc", "status")
|
||||
var out bytes.Buffer
|
||||
cmd.Stdout = &out
|
||||
err := cmd.Run()
|
||||
if err != nil {
|
||||
fmt.Fprintf(writer, "Error")
|
||||
return
|
||||
}
|
||||
fmt.Fprintf(writer, out.String())
|
||||
}
|
||||
|
||||
func handleList(writer http.ResponseWriter, request *http.Request) {
|
||||
cmd := exec.Command("papermc", "command", "list")
|
||||
var out bytes.Buffer
|
||||
cmd.Stdout = &out
|
||||
err := cmd.Run()
|
||||
if err != nil {
|
||||
fmt.Fprintf(writer, "Error")
|
||||
return
|
||||
}
|
||||
fmt.Fprintf(writer, out.String())
|
||||
}
|
||||
|
||||
func handleSay(writer http.ResponseWriter, request *http.Request) {
|
||||
saywhat, _ := ioutil.ReadAll(request.Body)
|
||||
cmd := exec.Command("papermc", "command", "say", string(saywhat))
|
||||
var out bytes.Buffer
|
||||
cmd.Stdout = &out
|
||||
err := cmd.Run()
|
||||
if err != nil {
|
||||
fmt.Fprintf(writer, "Error")
|
||||
return
|
||||
}
|
||||
fmt.Fprintf(writer, "0")
|
||||
}
|
||||
|
||||
func main() {
|
||||
http.HandleFunc("/status", handleStatus)
|
||||
http.HandleFunc("/list", handleList)
|
||||
http.HandleFunc("/say", handleSay)
|
||||
fmt.Println("Running at port 58941 ...")
|
||||
err := http.ListenAndServe("172.26.66.2:58941", nil)
|
||||
if err != nil {
|
||||
log.Fatal("ListenAndServe: ", err.Error())
|
||||
}
|
||||
}
|
|
@ -6,4 +6,6 @@ AUTHORIZATION = ''
|
|||
|
||||
HOST = '0.0.0.0'
|
||||
|
||||
PORT = 5580
|
||||
PORT = 5580
|
||||
|
||||
REMOTE_MC_URL = ''
|
10
worker/106.py
Normal file
10
worker/106.py
Normal file
|
@ -0,0 +1,10 @@
|
|||
import requests
|
||||
from zzcore import StdAns
|
||||
|
||||
class Ans(StdAns):
|
||||
AllowGroup = [959613860, 983250332]
|
||||
def GETMSG(self):
|
||||
seconds = int(requests.get("http://127.0.0.1:8095/").text)
|
||||
m, s = divmod(seconds, 60)
|
||||
h, m = divmod(m, 60)
|
||||
return f'{h}小时{m}分钟{s}秒前有人来过。'
|
|
@ -3,12 +3,15 @@ import requests
|
|||
|
||||
from config import LOLIKEYS
|
||||
|
||||
|
||||
class Ans(StdAns):
|
||||
AllowGroup = [973510746, 805197917,343700338,125733077,1084566280,920863253,798595664,655057127,196268763, 247022495, 474907856]
|
||||
AllowGroup = [973510746, 805197917, 343700338, 125733077, 1084566280,
|
||||
920863253, 798595664, 655057127, 196268763, 247022495, 474907856, 940333876]
|
||||
|
||||
def GETMSG(self):
|
||||
|
||||
keys = LOLIKEYS
|
||||
|
||||
|
||||
try:
|
||||
nowkey = int(self.DATAGET()['nowkey'])
|
||||
except:
|
||||
|
@ -20,43 +23,43 @@ class Ans(StdAns):
|
|||
keyword = self.parms[1]
|
||||
if mysakuya(self, keyword) == False:
|
||||
return "不许你们看咲夜的涩图!!"
|
||||
|
||||
|
||||
code, quota, picurl = getsetu(keys[nowkey], keyword)
|
||||
|
||||
|
||||
msg = ''
|
||||
if code == -1 or code == -2:
|
||||
msg += f'>_< 天啦喽,loli 不见了 Code:{code}'
|
||||
elif code == 3:
|
||||
msg += '咱没查到,也有可能是Pixiv坏掉惹'
|
||||
elif code == 0:
|
||||
if len(self.parms) < 2 or (len(self.parms > 2) and self.parms[2] == 'p'):
|
||||
if len(self.parms) < 2 or (len(self.parms) > 2 and self.parms[2] == 'p'):
|
||||
msg += f'[CQ:image,file={picurl}]'
|
||||
else:
|
||||
msg += f'[CQ:reply,id={self.mid}]咱帮你🔍{keyword}找到了这个\n{picurl}'
|
||||
|
||||
|
||||
if quota == 0:
|
||||
nowkey = (nowkey+1)%(len(keys))
|
||||
nowkey = (nowkey+1) % (len(keys))
|
||||
if code == 429:
|
||||
msg += f'>_< 已经没有 loli 啦,帮你换到了key{nowkey},再试一下吧'
|
||||
else:
|
||||
msg += f'额度用光了,下次将使用 key{nowkey}'
|
||||
self.DATASET({'nowkey':nowkey})
|
||||
self.DATASET({'nowkey': nowkey})
|
||||
return msg
|
||||
|
||||
|
||||
def getsetu(apikey, keyword = ''):
|
||||
|
||||
|
||||
def getsetu(apikey, keyword=''):
|
||||
url = 'https://api.lolicon.app/setu/'
|
||||
params = {
|
||||
'apikey': apikey,
|
||||
}
|
||||
if keyword != '':
|
||||
params['keyword'] = keyword
|
||||
|
||||
|
||||
try:
|
||||
resp = requests.get(url=url,params=params).json()
|
||||
resp = requests.get(url=url, params=params).json()
|
||||
except:
|
||||
return -1, -1 ,''
|
||||
|
||||
return -1, -1, ''
|
||||
|
||||
#quota = str(resp['quota'])
|
||||
#seconds = resp['quota_min_ttl']
|
||||
#m, s = divmod(seconds, 60)
|
||||
|
@ -74,4 +77,5 @@ def getsetu(apikey, keyword = ''):
|
|||
elif resp['code'] == 429:
|
||||
return 429, 0, ''
|
||||
else:
|
||||
# print(resp['code'])
|
||||
return -2, -1, ''
|
||||
|
|
89
worker/mc.py
89
worker/mc.py
|
@ -1,10 +1,11 @@
|
|||
from zzcore import StdAns
|
||||
import re
|
||||
import re, requests
|
||||
from subprocess import getoutput,call
|
||||
|
||||
from config import REMOTE_MC_URL
|
||||
|
||||
class Ans(StdAns):
|
||||
AllowGroup = [959613860, 125733077, 204097403, 1140391080]
|
||||
AllowUser = [1318000868]
|
||||
def GETMSG(self):
|
||||
if len(self.parms) < 2:
|
||||
return '不加参数是坏文明!'
|
||||
|
@ -13,39 +14,65 @@ class Ans(StdAns):
|
|||
|
||||
if cmd in AllowCmd:
|
||||
if cmd == 'status':
|
||||
output = getoutput('spigot status')
|
||||
p = re.compile(r'processes = ([0-9]*) \(')
|
||||
prsnum = re.findall(p,output)[0]
|
||||
p = re.compile(r' \((.*?)\)',re.S)
|
||||
prsnames = re.findall(p,output)[0].split(', ')
|
||||
p = re.compile(r'Total memory usage = (.*)$')
|
||||
memory = re.findall(p,output)[0]
|
||||
msg = '咱的MC服务器现在有 '
|
||||
for prsname in prsnames:
|
||||
msg = msg + prsname + ' '
|
||||
msg = msg + '这' + prsnum +'个进程,\n一共占用了' + memory +'内存呢。'
|
||||
msg = getStatus()
|
||||
elif cmd == 'list':
|
||||
output = getoutput('spigot command list')
|
||||
p = re.compile(r'There are (.*?)[ of a max]', re.S)
|
||||
online = re.findall(p,output)[0]
|
||||
if online == '0':
|
||||
msg = '咱看着没有人在线哎\n_(-ω-`_)⌒)_'
|
||||
else:
|
||||
msg = '有' + online + '个小伙伴在线!'
|
||||
p = re.compile(r'online: (.*?)[\n>]', re.S)
|
||||
players = re.findall(p,output)[0].split(', ')
|
||||
for player in players:
|
||||
msg = msg + '\n' + player
|
||||
msg = getList()
|
||||
elif cmd == 'say':
|
||||
saywhat = self.raw_msg['message'][8:]
|
||||
if not saywhat:
|
||||
return '汝让咱say what?o(≧口≦)o'
|
||||
shellcmd = ['spigot','command','say',saywhat]
|
||||
if call(shellcmd) == 0:
|
||||
msg = '咱已经把消息传过去了。'
|
||||
else:
|
||||
msg = '٩(ŏ﹏ŏ、)۶竟然失败了,汝是不是让我发送奇怪的话过去!'
|
||||
msg = say(saywhat)
|
||||
else:
|
||||
msg = '汝是不是在mc后面添加了奇怪的参数,咱可只知道 status list 和 say。'
|
||||
|
||||
return msg
|
||||
|
||||
def getStatus():
|
||||
if REMOTE_MC_URL:
|
||||
output = requests.post(f'{REMOTE_MC_URL}/status').text
|
||||
else:
|
||||
output = getoutput('papermc status')
|
||||
|
||||
p = re.compile(r'processes = ([0-9]*) \(')
|
||||
prsnum = re.findall(p,output)[0]
|
||||
p = re.compile(r' \((.*?)\)',re.S)
|
||||
prsnames = re.findall(p,output)[0].split(', ')
|
||||
p = re.compile(r'Total memory usage = (.*)$')
|
||||
memory = re.findall(p,output)[0]
|
||||
msg = '咱的MC服务器现在有 '
|
||||
for prsname in prsnames:
|
||||
msg = msg + prsname + ' '
|
||||
msg = msg + '这' + prsnum +'个进程,\n一共占用了' + memory +'内存呢。'
|
||||
return msg
|
||||
|
||||
|
||||
def getList():
|
||||
if REMOTE_MC_URL:
|
||||
output = requests.post(f'{REMOTE_MC_URL}/list').text
|
||||
else:
|
||||
output = getoutput('papermc command list')
|
||||
|
||||
p = re.compile(r'There are (.*?)[ of a max]', re.S)
|
||||
online = re.findall(p,output)[0]
|
||||
if online == '0':
|
||||
msg = '咱看着没有人在线哎\n_(-ω-`_)⌒)_'
|
||||
else:
|
||||
msg = '有' + online + '个小伙伴在线!'
|
||||
p = re.compile(r'online: (.*?)[\n>]', re.S)
|
||||
players = re.findall(p,output)[0].split(', ')
|
||||
for player in players:
|
||||
msg = msg + '\n' + player
|
||||
return msg
|
||||
|
||||
def say(saywhat):
|
||||
if not saywhat:
|
||||
return '汝让咱say what?o(≧口≦)o'
|
||||
|
||||
if REMOTE_MC_URL:
|
||||
code = requests.post(f'{REMOTE_MC_URL}/say',data=saywhat).text
|
||||
else:
|
||||
shellcmd = ['papermc','command','say',saywhat]
|
||||
code = call(shellcmd)
|
||||
if code == '0':
|
||||
msg = '咱已经把消息传过去了。'
|
||||
else:
|
||||
msg = '٩(ŏ﹏ŏ、)۶竟然失败了,汝是不是让我发送奇怪的话过去!'
|
||||
return msg
|
110
worker/rss.py
Normal file
110
worker/rss.py
Normal file
|
@ -0,0 +1,110 @@
|
|||
from zzcore import StdAns
|
||||
|
||||
import feedparser, json, time
|
||||
|
||||
allowCMD = ['sub','unsub','list','disable', 'enable']
|
||||
|
||||
# allSub = {
|
||||
# 'https://farseerfc.me/feeds/atom.xml' : {
|
||||
# 'url' : 'https://farseerfc.me/feeds/atom.xml',
|
||||
# 'title' : 'Farseerfc的小窩',
|
||||
# 'lastUpdated' : 'Sat, 12 Dec 2020 22:55:52 +0800',
|
||||
# }
|
||||
# }
|
||||
|
||||
class Ans(StdAns):
|
||||
|
||||
def push(self,title,posttitle,posturl):
|
||||
msg = f'{title}\n{posttitle} {posturl}'
|
||||
self.sendmsg(msg)
|
||||
|
||||
def GETMSG(self):
|
||||
|
||||
if len(self.parms) < 2:
|
||||
return '不加参数是坏文明!'
|
||||
|
||||
gid = str(self.gid)
|
||||
cmd = self.parms[1]
|
||||
if cmd not in allowCMD:
|
||||
return f'咱不知道 {cmd} 是什么东西 ●﹏●'
|
||||
|
||||
try:
|
||||
nowdata = json.loads(self.DATAGET()[gid])
|
||||
except:
|
||||
nowdata ={
|
||||
'allSub' : {},
|
||||
'status' : False,
|
||||
}
|
||||
|
||||
if cmd == 'sub':
|
||||
if len(self.parms) < 3:
|
||||
return '汝想订阅什么呢?'
|
||||
|
||||
suburl = self.parms[2]
|
||||
try:
|
||||
d = feedparser.parse(suburl)
|
||||
title = d.feed.title
|
||||
lastUpdated = d.entries[0].published
|
||||
|
||||
except:
|
||||
return "咱好像没能成功订阅 (╥_╥)"
|
||||
|
||||
newsub = {
|
||||
'url': suburl,
|
||||
'title': title,
|
||||
'lastUpdated' : lastUpdated,
|
||||
}
|
||||
|
||||
nowdata['allSub'][suburl] = newsub
|
||||
|
||||
msg = f'《{title}》订阅成功'
|
||||
|
||||
elif cmd == 'unsub':
|
||||
if len(self.parms) < 3:
|
||||
return '汝想退订什么呢?'
|
||||
|
||||
suburl = self.parms[2]
|
||||
if suburl not in nowdata['allSub'].keys():
|
||||
return '汝没有订阅过这个!'
|
||||
|
||||
unsub = nowdata['allSub'].pop(suburl)
|
||||
|
||||
msg = f"《{unsub['title']}》已退订"
|
||||
|
||||
elif cmd == 'list':
|
||||
msg = '订阅列表'
|
||||
|
||||
for sub in nowdata['allSub'].values():
|
||||
msg += f"\n{sub['title']} {sub['url']}"
|
||||
|
||||
elif cmd == 'enable':
|
||||
nowdata['status'] = True
|
||||
self.DATASET({gid:json.dumps(nowdata)})
|
||||
self.sendmsg("订阅已启用,咱会每隔五分钟抓取订阅,有新内容就会推送哦")
|
||||
while(nowdata['status']):
|
||||
nowdata = json.loads(self.DATAGET()[gid])
|
||||
for sub in nowdata['allSub'].values():
|
||||
try:
|
||||
d = feedparser.parse(sub['url'])
|
||||
except:
|
||||
self.sendmsg(f"咱抓取不到 《{sub['title']}》!")
|
||||
continue
|
||||
if d.entries[0].published == sub['lastUpdated']:
|
||||
continue
|
||||
|
||||
newfeedtitle = d.entries[0].title
|
||||
newfeedlink = d.entries[0].link
|
||||
self.push(sub['title'], newfeedtitle, newfeedlink)
|
||||
nowdata['allSub'][sub['url']]['lastUpdated'] = d.entries[0].published
|
||||
self.DATASET({gid:json.dumps(nowdata)})
|
||||
time.sleep(300)
|
||||
|
||||
return '订阅已经真的停了!'
|
||||
|
||||
elif cmd == 'disable':
|
||||
nowdata['status'] = False
|
||||
msg = '咱不会再推送了!'
|
||||
|
||||
self.DATASET({gid:json.dumps(nowdata)})
|
||||
return msg
|
||||
|
|
@ -36,8 +36,9 @@ def getWeather(id='101120206'):
|
|||
}
|
||||
r = requests.get(url=url, params=params).json()
|
||||
tdw = r['daily'][0]
|
||||
ndw = r['daily'][1]
|
||||
weather = f"今日日间{wemoji(tdw['textDay'])},温度{tdw['tempMin']}~{tdw['tempMax']}℃,{tdw['windDirDay']}{tdw['windScaleDay']}级;夜间{wemoji(tdw['textNight'])},{tdw['windDirNight']}{tdw['windScaleNight']}级。明日日间{wemoji(ndw['textDay'])},温度{ndw['tempMin']}~{ndw['tempMax']}℃。"
|
||||
# ndw = r['daily'][1]
|
||||
# weather = f"今日日间{wemoji(tdw['textDay'])},温度{tdw['tempMin']}~{tdw['tempMax']}℃,{tdw['windDirDay']}{tdw['windScaleDay']}级;夜间{wemoji(tdw['textNight'])},{tdw['windDirNight']}{tdw['windScaleNight']}级。明日日间{wemoji(ndw['textDay'])},温度{ndw['tempMin']}~{ndw['tempMax']}℃。"
|
||||
weather = f"今日日间{wemoji(tdw['textDay'])},温度{tdw['tempMin']}~{tdw['tempMax']}℃,{tdw['windDirDay']}{tdw['windScaleDay']}级;夜间{wemoji(tdw['textNight'])},{tdw['windDirNight']}{tdw['windScaleNight']}级。"
|
||||
if float(tdw['precip']) > 0:
|
||||
weather += '\n记得收好衣服,出门带伞~'
|
||||
|
||||
|
@ -46,24 +47,26 @@ def getWeather(id='101120206'):
|
|||
|
||||
def calendar():
|
||||
|
||||
ymc = ["十一", "十二", "正", "二", "三", "四", "五", "六", "七", "八", "九", "十"]
|
||||
ymc = ["冬", "腊", "正", "二", "三", "四", "五", "六", "七", "八", "九", "十"]
|
||||
rmc = ["初一", "初二", "初三", "初四", "初五", "初六", "初七", "初八", "初九", "初十", "十一", "十二", "十三", "十四", "十五",
|
||||
"十六", "十七", "十八", "十九", "二十", "廿一", "廿二", "廿三", "廿四", "廿五", "廿六", "廿七", "廿八", "廿九", "三十", "卅一"]
|
||||
zmc = ["一", "二", "三", "四", "五", "六", "天"]
|
||||
nowdate = datetime.now()
|
||||
kaoyandate = datetime(2021,12,21)
|
||||
djs = (kaoyandate - nowdate).days -1
|
||||
y = nowdate.year
|
||||
m = nowdate.month
|
||||
d = nowdate.day
|
||||
zc = int(nowdate.strftime("%W")) - 34
|
||||
zc = int(nowdate.strftime("%W")) - 1
|
||||
|
||||
z = zmc[nowdate.weekday()]
|
||||
|
||||
lunar = sxtwl.Lunar()
|
||||
lunarday = lunar.getDayBySolar(y, m, d)
|
||||
|
||||
lunardaychinese = f"{ymc[lunarday.Lmc]}月{rmc[lunarday.Ldi]}日"
|
||||
lunardaychinese = f"{ymc[lunarday.Lmc]}月{rmc[lunarday.Ldi]}"
|
||||
if lunarday.Lleap:
|
||||
lunardaychinese = "闰" + lunardaychinese
|
||||
|
||||
cal = f"{m}月{d}日,农历{lunardaychinese},本学期第{zc}周,星期{z}"
|
||||
cal = f"{m}月{d}日,{lunardaychinese},寒假第{zc}周,星期{z}\n\n距离 2022 考研还有 {djs} 天"
|
||||
return cal
|
||||
|
|
Loading…
Reference in a new issue