mirror of
https://github.com/d0zingcat/NotionNext.git
synced 2026-05-14 15:09:22 +00:00
97 lines
3.3 KiB
Python
97 lines
3.3 KiB
Python
import random
|
||
import re
|
||
import ssl
|
||
import time
|
||
|
||
import requests
|
||
import argparse
|
||
|
||
ssl._create_default_https_context = ssl._create_unverified_context
|
||
|
||
|
||
# 每日推送限额,可根据实际情况修改
|
||
QUOTA = 100
|
||
|
||
|
||
def parse_stiemap(site):
|
||
site = f'{site}/sitemap.xml'
|
||
try:
|
||
result = requests.get(site)
|
||
big = re.findall('<loc>(.*?)</loc>', result.content.decode('utf-8'), re.S)
|
||
return list(big)
|
||
except:
|
||
print('请检查你的url是否有误。')
|
||
print('正确的应是完整的域名,包含https://,且不包含‘sitemap.xml’, 如下所示:')
|
||
print('正确的示例: https://ghlcode.cn')
|
||
print('详情参见: https://ghlcode.cn/fe032806-5362-4d82-b746-a0b26ce8b9d9')
|
||
|
||
|
||
|
||
def push_to_bing(site, urls, api_key):
|
||
endpoint = f"https://ssl.bing.com/webmaster/api.svc/json/SubmitUrlbatch?apikey={api_key}"
|
||
|
||
payload = {
|
||
"siteUrl": site,
|
||
"urlList": urls
|
||
}
|
||
|
||
try:
|
||
response = requests.post(endpoint, json=payload)
|
||
result = response.json()
|
||
if response.status_code == 200:
|
||
print("成功推送到Bing.")
|
||
elif "ErrorCode" in result:
|
||
print("推送到Bing出现错误,错误信息为:", result["Message"])
|
||
except Exception as e:
|
||
print("An error occurred:", e)
|
||
|
||
|
||
def push_to_baidu(site, urls, token):
|
||
api_url = f"http://data.zz.baidu.com/urls?site={site}&token={token}"
|
||
|
||
payload = "\n".join(urls)
|
||
headers = {"Content-Type": "text/plain"}
|
||
|
||
try:
|
||
response = requests.post(api_url, data=payload, headers=headers)
|
||
result = response.json()
|
||
if "success" in result and result["success"]:
|
||
print("成功推送到百度.")
|
||
elif "error" in result:
|
||
print("推送到百度出现错误,错误信息为:", result["message"])
|
||
else:
|
||
print("Unknown response from Baidu:", result)
|
||
except Exception as e:
|
||
print("An error occurred:", e)
|
||
|
||
|
||
if __name__ == '__main__':
|
||
parser = argparse.ArgumentParser(description='parse sitemap')
|
||
parser.add_argument('--url', type=str, default=None, help='The url of your website')
|
||
parser.add_argument('--bing_api_key', type=str, default=None, help='your bing api key')
|
||
parser.add_argument('--baidu_token', type=str, default=None, help='Your baidu push token')
|
||
args = parser.parse_args()
|
||
|
||
# 获取当前的时间戳作为随机种子
|
||
current_timestamp = int(time.time())
|
||
random.seed(current_timestamp)
|
||
|
||
if args.url:
|
||
# 解析urls
|
||
urls = parse_stiemap(args.url)
|
||
if urls is not None:
|
||
# 判断当前urls数量是否超过额度,若超过则取当日最大值,默认为100,可根据实际情况修改
|
||
if len(urls) > QUOTA:
|
||
urls = random.sample(urls, QUOTA)
|
||
# 推送bing
|
||
if args.bing_api_key:
|
||
print('正在推送至必应,请稍后……')
|
||
push_to_bing(args.url, urls, args.bing_api_key)
|
||
# 推送百度
|
||
if args.baidu_token:
|
||
print('正在推送至百度,请稍后……')
|
||
push_to_baidu(args.url, urls, args.baidu_token)
|
||
else:
|
||
print('请前往 Github Action Secrets 配置 URL')
|
||
print('详情参见: https://ghlcode.cn/fe032806-5362-4d82-b746-a0b26ce8b9d9')
|