feat: init

This commit is contained in:
mol
2023-04-25 15:20:13 +08:00
commit 83969a26d9
6 changed files with 90 additions and 0 deletions

27
Rss.py Normal file
View File

@ -0,0 +1,27 @@
import feedparser
import pprint
import re
class Rss():
def __init__(self, id, url, rss_pipe_handler, result_handler) -> None:
self.rss_url = url
self.id = id
self.rss_pipe_handler = rss_pipe_handler
self.result_handler = result_handler
def run(self):
rss_source = feedparser.parse(self.rss_url)
result_list = self.rss_pipe_handler(rss_source['entries'])
result_list = self.compare_result(pprint.pprint(result_list))
ids = self.result_handler(result_list)
self.save_result(ids)
return
def compare_result(self, list):
return list
def save_result(self, ids):
return ids

18
RssManager.py Normal file
View File

@ -0,0 +1,18 @@
import thread
from Rss import *
class RssManager():
def __init__(self, rss_options):
self.rss_list = [Rss(opt['id'], opt['url'], opt['rss_pipe_handler'], opt['result_handler']) for opt in rss_options]
def run(self):
try:
for rss in rss_list:
thread.start_new_thread(rss.run)
except:
print('Error: unable to start thread')
print('Info: start sync run')
for rss in rss_list:
rss.run()

20
handlers/PixivHandler.py Normal file
View File

@ -0,0 +1,20 @@
def pixiv_handler(entries):
# 整理为JSON数组
pixiv_list = []
for entry in entries:
links = []
for i in entry['content']:
pattern = re.compile(
r'http[s]?://(?:[a-zA-Z]|[0-9]|[$-_@.&+]|[!*\(\),]|(?:%[0-9a-fA-F][0-9a-fA-F]))+')
links = (re.findall(pattern, i['value']))
tag_pattern = re.compile(r'tags/(.*)/')
item = {id: entry['id'], 'title': entry['title'], 'link': links,
'author': entry['author'], 'tag': re.findall(tag_pattern, entry['source'].id)}
pixiv_list.append(item)
return pixiv_list
def pixiv_result_handler(list):
pass

0
handlers/__init__.py Normal file
View File

5
requirements.txt Normal file
View File

@ -0,0 +1,5 @@
thread
feedparser
pprint
requests
webdavclient3

20
start.py Normal file
View File

@ -0,0 +1,20 @@
from RssManager import *
from handlers.PixivHandler import *
class CreateRssServer():
def __init__(self):
rss_options = [
{
'id': 'pixiv',
'url': 'https://rss.hiiragi.club:8081/public.php?op=rss&id=-2&is_cat=0&q=&key=pp9ejw64463b6621a0b',
'rss_pipe_handler': pixiv_handler,
'result_handler': pixiv_result_handler
}
]
self.app = RssManager(rss_options)
rss_server = CreateRssServer()
app = rss_server.app
if __name__ == '__main__':
app.run()