🤠完善时区识别,如果是标准时区则添加8个小时
This commit is contained in:
		
										
											Binary file not shown.
										
									
								
							@@ -1,4 +1,4 @@
 | 
				
			|||||||
from datetime import datetime, timedelta
 | 
					from datetime import datetime, timedelta, timezone
 | 
				
			||||||
from dateutil import parser
 | 
					from dateutil import parser
 | 
				
			||||||
import requests
 | 
					import requests
 | 
				
			||||||
import feedparser
 | 
					import feedparser
 | 
				
			||||||
@@ -14,33 +14,53 @@ timeout = (10, 15) # 连接超时和读取超时,防止requests接受时间过
 | 
				
			|||||||
def format_published_time(time_str):
 | 
					def format_published_time(time_str):
 | 
				
			||||||
    """
 | 
					    """
 | 
				
			||||||
    格式化发布时间为统一格式 YYYY-MM-DD HH:MM
 | 
					    格式化发布时间为统一格式 YYYY-MM-DD HH:MM
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    参数:
 | 
				
			||||||
 | 
					    time_str (str): 输入的时间字符串,可能是多种格式。
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    返回:
 | 
				
			||||||
 | 
					    str: 格式化后的时间字符串,若解析失败返回空字符串。
 | 
				
			||||||
    """
 | 
					    """
 | 
				
			||||||
 | 
					    # 尝试自动解析输入时间字符串
 | 
				
			||||||
    try:
 | 
					    try:
 | 
				
			||||||
        # 尝试自动解析
 | 
					 | 
				
			||||||
        parsed_time = parser.parse(time_str)
 | 
					        parsed_time = parser.parse(time_str)
 | 
				
			||||||
        return parsed_time.strftime('%Y-%m-%d %H:%M')
 | 
					        # 如果没有时区信息,则将其视为 UTC
 | 
				
			||||||
 | 
					        if parsed_time.tzinfo is None:
 | 
				
			||||||
 | 
					            parsed_time = parsed_time.replace(tzinfo=timezone.utc)
 | 
				
			||||||
 | 
					        
 | 
				
			||||||
 | 
					        # 转换为上海时区(UTC+8)
 | 
				
			||||||
 | 
					        shanghai_time = parsed_time.astimezone(timezone(timedelta(hours=8)))
 | 
				
			||||||
 | 
					        return shanghai_time.strftime('%Y-%m-%d %H:%M')
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
    except (ValueError, parser.ParserError):
 | 
					    except (ValueError, parser.ParserError):
 | 
				
			||||||
        pass
 | 
					        pass
 | 
				
			||||||
    
 | 
					
 | 
				
			||||||
 | 
					    # 定义支持的时间格式
 | 
				
			||||||
    time_formats = [
 | 
					    time_formats = [
 | 
				
			||||||
        '%a, %d %b %Y %H:%M:%S %z',       # Mon, 11 Mar 2024 14:08:32 +0000
 | 
					        '%a, %d %b %Y %H:%M:%S %z',  # Mon, 11 Mar 2024 14:08:32 +0000
 | 
				
			||||||
        '%a, %d %b %Y %H:%M:%S GMT',      # Wed, 19 Jun 2024 09:43:53 GMT
 | 
					        '%a, %d %b %Y %H:%M:%S GMT',   # Wed, 19 Jun 2024 09:43:53 GMT
 | 
				
			||||||
        '%Y-%m-%dT%H:%M:%S%z',            # 2024-03-11T14:08:32+00:00
 | 
					        '%Y-%m-%dT%H:%M:%S%z',         # 2024-03-11T14:08:32+00:00
 | 
				
			||||||
        '%Y-%m-%dT%H:%M:%SZ',             # 2024-03-11T14:08:32Z
 | 
					        '%Y-%m-%dT%H:%M:%SZ',          # 2024-03-11T14:08:32Z
 | 
				
			||||||
        '%Y-%m-%d %H:%M:%S',              # 2024-03-11 14:08:32
 | 
					        '%Y-%m-%d %H:%M:%S',           # 2024-03-11 14:08:32
 | 
				
			||||||
        '%Y-%m-%d'                        # 2024-03-11
 | 
					        '%Y-%m-%d'                     # 2024-03-11
 | 
				
			||||||
    ]
 | 
					    ]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    # 遍历所有支持的时间格式进行解析
 | 
				
			||||||
    for fmt in time_formats:
 | 
					    for fmt in time_formats:
 | 
				
			||||||
        try:
 | 
					        try:
 | 
				
			||||||
            parsed_time = datetime.strptime(time_str, fmt) + timedelta(hours=8)
 | 
					            parsed_time = datetime.strptime(time_str, fmt)
 | 
				
			||||||
            return parsed_time.strftime('%Y-%m-%d %H:%M')
 | 
					            # 将解析的时间视为 UTC
 | 
				
			||||||
 | 
					            parsed_time = parsed_time.replace(tzinfo=timezone.utc)
 | 
				
			||||||
 | 
					            # 转换为上海时区
 | 
				
			||||||
 | 
					            shanghai_time = parsed_time.astimezone(timezone(timedelta(hours=8)))
 | 
				
			||||||
 | 
					            return shanghai_time.strftime('%Y-%m-%d %H:%M')
 | 
				
			||||||
        except ValueError:
 | 
					        except ValueError:
 | 
				
			||||||
            continue
 | 
					            continue
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    # 如果所有格式都无法匹配,返回原字符串或一个默认值
 | 
					    # 如果所有格式都无法匹配,返回空字符串
 | 
				
			||||||
    return ''
 | 
					    return ''
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
def check_feed(blog_url, session):
 | 
					def check_feed(blog_url, session):
 | 
				
			||||||
    """
 | 
					    """
 | 
				
			||||||
    检查博客的 RSS 或 Atom 订阅链接。
 | 
					    检查博客的 RSS 或 Atom 订阅链接。
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user