diff --git a/friend_circle_lite/__pycache__/get_info.cpython-311.pyc b/friend_circle_lite/__pycache__/get_info.cpython-311.pyc index 11e8a80..ad3b661 100644 Binary files a/friend_circle_lite/__pycache__/get_info.cpython-311.pyc and b/friend_circle_lite/__pycache__/get_info.cpython-311.pyc differ diff --git a/friend_circle_lite/get_info.py b/friend_circle_lite/get_info.py index dc2a25b..b99b7ca 100644 --- a/friend_circle_lite/get_info.py +++ b/friend_circle_lite/get_info.py @@ -9,7 +9,7 @@ headers = { 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/126.0.0.0 Safari/537.36' } -timeout = (5, 10) # 连接超时和读取超时,防止requests接受时间过长 +timeout = (10, 15) # 连接超时和读取超时,防止requests接受时间过长 def format_published_time(time_str): """ @@ -184,6 +184,7 @@ def process_friend(friend, session, count): """ name, blog_url, avatar = friend feed_type, feed_url = check_feed(blog_url, session) + print(f"========“{name}”的博客“{blog_url}”的feed类型为“{feed_type}”========") if feed_type != 'none': feed_info = parse_feed(feed_url, session, count) diff --git a/grab.log b/grab.log index 33c61ed..44079ea 100644 --- a/grab.log +++ b/grab.log @@ -1,3 +1,3 @@ -2024-07-22 10:21:56,649 - INFO - ʼץȡ... -2024-07-22 10:21:56,653 - INFO - ڴ https://blog.qyliu.top/friend.json лȡÿͻȡ 5 ƪ -2024-07-22 10:22:32,855 - INFO - ץȡɹ +2024-07-27 17:00:52,303 - INFO - ʼץȡ... +2024-07-27 17:00:52,306 - INFO - ڴ https://blog.qyliu.top/friend.json лȡÿͻȡ 5 ƪ +2024-07-27 17:01:52,138 - INFO - ץȡɹ diff --git a/readme.md b/readme.md index 4ea2ef6..b74cb7d 100644 --- a/readme.md +++ b/readme.md @@ -12,6 +12,8 @@ * 自部署添加跨域请求 * 添加`/rss.xml`,`/feed/`,`feed.xml`接口的爬取,提高兼容性 +* 修复PJAX下会多次出现模态框的问题,并且切换页面不消失 +* 修复模态框宽度问题,添加日历图标以更加美观 ### 2024-07-25 diff --git a/server.py b/server.py index 093a870..37ffa08 100644 --- a/server.py +++ b/server.py @@ -1,30 +1,17 @@ from fastapi import FastAPI from fastapi.responses import JSONResponse, HTMLResponse -from fastapi.middleware.cors import CORSMiddleware -from apscheduler.schedulers.asyncio import AsyncIOScheduler -from threading import Lock +import schedule +import time import logging import os -import json import random +from threading import Lock, Thread from friend_circle_lite.get_info import fetch_and_process_data, sort_articles_by_time from friend_circle_lite.get_conf import load_config app = FastAPI() -app.add_middleware( - CORSMiddleware, - allow_origins=["*"], # 允许的域 - allow_credentials=True, - allow_methods=["*"], - allow_headers=["*"], -) - -# 配置APScheduler -scheduler = AsyncIOScheduler() -scheduler.start() - # 配置日志记录 log_file = "grab.log" logging.basicConfig(filename=log_file, level=logging.INFO, format='%(asctime)s - %(levelname)s - %(message)s') @@ -58,9 +45,6 @@ def fetch_articles(): except Exception as e: logging.error(f"抓取文章时出错: {e}") -# 每四个小时抓取一次文章 -scheduler.add_job(fetch_articles, 'interval', hours=4) - @app.get("/", response_class=HTMLResponse) async def root(): html_content = """ @@ -74,7 +58,7 @@ async def root():

这是一个轻量版友链朋友圈,有两种部署方式,其中自部署使用 fastAPI,还有 github action 部署方式,可以很方便的从友链中获取文章并展示到前端。

@@ -101,13 +85,24 @@ async def get_random_article(): else: return JSONResponse(content={"error": "No articles available"}, status_code=404) -if __name__ == '__main__': - import uvicorn +def schedule_tasks(): + schedule.every(4).hours.do(fetch_articles) + while True: + schedule.run_pending() + time.sleep(1) +if __name__ == '__main__': # 清空日志文件 if os.path.exists(log_file): with open(log_file, 'w'): pass fetch_articles() # 启动时立即抓取一次 + + # 启动调度任务线程 + task_thread = Thread(target=schedule_tasks) + task_thread.start() + + # 启动FastAPI应用 + import uvicorn uvicorn.run(app, host='0.0.0.0', port=1223)