commit 83969a26d9ef2137e537a79698b5e41fd7779307 Author: mol Date: Tue Apr 25 15:20:13 2023 +0800 feat: init diff --git a/Rss.py b/Rss.py new file mode 100644 index 0000000..d49d147 --- /dev/null +++ b/Rss.py @@ -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 + diff --git a/RssManager.py b/RssManager.py new file mode 100644 index 0000000..b4214d1 --- /dev/null +++ b/RssManager.py @@ -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() + diff --git a/handlers/PixivHandler.py b/handlers/PixivHandler.py new file mode 100644 index 0000000..3608181 --- /dev/null +++ b/handlers/PixivHandler.py @@ -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 \ No newline at end of file diff --git a/handlers/__init__.py b/handlers/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/requirements.txt b/requirements.txt new file mode 100644 index 0000000..d1b2f93 --- /dev/null +++ b/requirements.txt @@ -0,0 +1,5 @@ +thread +feedparser +pprint +requests +webdavclient3 \ No newline at end of file diff --git a/start.py b/start.py new file mode 100644 index 0000000..732232f --- /dev/null +++ b/start.py @@ -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()