Files
NotionNext/pushUrl.py
2023-09-02 15:16:01 +08:00

104 lines
3.6 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
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'
print('解析站点地图中,请稍后……')
try:
result = requests.get(site)
big = re.findall('<loc>(.*?)</loc>', result.content.decode('utf-8'), re.S)
print('当前已有url:')
print(list(big))
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:
push_to_bing(args.url, urls, args.bing_api_key)
else:
print('未配置 Bing API Key')
print('详情参见: https://ghlcode.cn/fe032806-5362-4d82-b746-a0b26ce8b9d9')
# 推送百度
if args.baidu_token:
push_to_baidu(args.url, urls, args.baidu_token)
else:
print('未配置 Baidu Token')
print('详情参见: https://ghlcode.cn/fe032806-5362-4d82-b746-a0b26ce8b9d9')
else:
print('请前往 Github Action Secrets 配置 URL')
print('详情参见: https://ghlcode.cn/fe032806-5362-4d82-b746-a0b26ce8b9d9')