gitea-rss/gen_rss.py

88 lines
2.1 KiB
Python
Executable File

#!/usr/bin/env python3
# coding=utf-8
# -*- coding: utf-8 -*-
import datetime
import PyRSS2Gen
import json
import requests
file_path = "./rss.xml"
code_url = "https://git.zeekling.cn/"
des = "Stay simple, stay naive."
resp_url = code_url + "api/v1/repos/search"
update_days = 30
params = {
'sort': 'updated',
'order': 'desc',
'limit': 50
}
def gen_rss(items):
items_rss = []
for item in items:
rss_item = PyRSS2Gen.RSSItem(
title=item['full_name'],
link=item['url'],
description=item['des'],
guid=PyRSS2Gen.Guid(item['url']),
pubDate=item['update_time']
)
items_rss.append(rss_item)
rss = PyRSS2Gen.RSS2(
title=des,
link=code_url,
description=des,
lastBuildDate=datetime.datetime.now(),
items=items_rss
)
rss.write_xml(open(file_path, 'w', encoding='utf-8'), encoding='utf-8')
def get_items():
items = []
page = 1
now_time = datetime.datetime.now()
while True:
params['page'] = page
pages = requests.get(resp_url, params=params)
tmp = json.loads(pages.text)
data = tmp['data']
if len(data) == 0:
break
use_able_count = 1
for resp in data:
update_time = datetime.datetime.strptime(resp['updated_at'],
'%Y-%m-%dT%H:%M:%SZ')
end_date = update_time + datetime.timedelta(days=update_days)
if now_time >= end_date:
continue
use_able_count += 1
print("title=", resp['name'])
entity = {
'name': resp['name'],
'url': resp['html_url'],
'update_time': update_time,
'full_name': resp['full_name'],
'des': resp['description']
}
items.append(entity)
page = page + 1
if use_able_count == 1:
break
return items
if __name__ == "__main__":
# main
print('begin--------------------')
items = get_items()
gen_rss(items)
print('end----------------------')