Last active
January 8, 2023 15:58
-
-
Save Hootrix/0850de9bb7a4d7e96b93145524277b57 to your computer and use it in GitHub Desktop.
天府市民云APP的消息RSS生成
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import datetime | |
import time | |
import PyRSS2Gen | |
import requests, pytz | |
class NoOutput: | |
def __init__(self): | |
pass | |
def publish(self, handler): | |
pass | |
class IPhoneRSS2(PyRSS2Gen.RSSItem): | |
"""给标签内容添加CDATA标记 | |
""" | |
def __init__(self, **kwargs): | |
PyRSS2Gen.RSSItem.__init__(self, **kwargs) | |
# 需要处理的标签 | |
# Tags that need to be processed | |
self._handle_tag = ['description','title'] | |
def publish(self, handler): | |
for i in self._handle_tag: | |
if getattr(self,i): | |
setattr(self,'_%s'%i,getattr(self,i)) # self['_%s'%i] = self[i] | |
setattr(self,i,NoOutput()) # This disables the Py2GenRSS "Automatic" output of the description, which would be escaped. | |
PyRSS2Gen.RSSItem.publish(self, handler) | |
def publish_extensions(self, handler): | |
from xml.sax import saxutils | |
for i in self._handle_tag: | |
if getattr(self,i): | |
handler.startElement(i, self.element_attrs) | |
# handler._write('<![CDATA[%s]]>' % saxutils.escape(getattr(self,'_%s' % i))) #写入源数据 手动编码处理 | |
handler._write('<![CDATA[%s]]>' % getattr(self,'_%s' % i)) #写入源数据 避免PyRSS2Gen中handler.characters(obj)的编码处理 | |
handler.endElement(i) | |
url = 'https://222.212.139.221/appnews/api/headline?page=1&size=10' | |
headers = { | |
'Host':'tfsmy.chengdu.gov.cn', | |
'User-Agent': 'Mozilla/5.0 (iPhone; CPU iPhone OS 12_2 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148 iOS/12.2 Brand/iPhone Display/320.000000*568.000000 tfsmy/1.6.2' | |
} | |
response = requests.get(url, headers=headers, verify =False) | |
content = response.json() | |
tz = pytz.utc | |
if content['code'] == 1: | |
items = [] | |
for item in content['result']['list']: | |
url = "http://tfsmy.chengdu.gov.cn/cms/share/news?id=%s" % item['id'] | |
time_tuple = time.strptime(item['updateTime'], "%Y-%m-%d %H:%M:%S") | |
pubData = datetime.datetime.fromtimestamp(int(time.mktime(time_tuple)), tz=pytz.utc)#转换为datetime.datetime对象 默认string会输出GMT时间字符串 | |
image = item['image'] if 'image' in item else '' # 存在没有图片的数据 | |
items.append(IPhoneRSS2( | |
title=item['title'], | |
link=url, # 打开预览的网址 | |
description='%s'%(item['title']), | |
guid=PyRSS2Gen.Guid(image, isPermaLink=1), # 设置为封面图 | |
pubDate=pubData | |
)) | |
rss = PyRSS2Gen.RSS2( | |
title="天府市民云APP feed", | |
link="https://www.tfsmy.com/download/tianfu.html", | |
description="用于获取app内「成都头条」的RSS feeds", | |
lastBuildDate=datetime.datetime.now(tz=tz), | |
items=items, | |
) | |
# rss.write_xml(open("./tianfu.xml", "w", encoding='utf-8'), encoding='utf-8') | |
rss.write_xml(open("/home/wwwroot/rss.hhtjim.com/tianfu.xml", "w", encoding='utf-8'), encoding='utf-8') | |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
修改PyRSS2Gen不能处理CDATA的问题