diff --git a/.github/workflows/pushUrl.yml b/.github/workflows/pushUrl.yml
index e71f7ec2..14a05b90 100644
--- a/.github/workflows/pushUrl.yml
+++ b/.github/workflows/pushUrl.yml
@@ -32,11 +32,8 @@ jobs:
with:
python-version: 3.8
- - name: install requests
+ - name: Install requests
run: pip install requests
- - name: baiduPush
- run: python pushUrl.py ${{ secrets.URL }} --baidu_token ${{ secrets.BAIDU_TOKEN }}
-
- - name: bingPush
- run: python pushUrl.py ${{ secrets.URL }} --bing_api_key ${{ secrets.BING_API_KEY }}
\ No newline at end of file
+ - name: Push
+ run: python pushUrl.py --url ${{ secrets.URL }} --baidu_token ${{ secrets.BAIDU_TOKEN }} --bing_api_key ${{ secrets.BING_API_KEY }}
\ No newline at end of file
diff --git a/pushUrl.py b/pushUrl.py
index dc6e73bf..af01535f 100644
--- a/pushUrl.py
+++ b/pushUrl.py
@@ -1,16 +1,33 @@
+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'
- result = requests.get(site)
- big = re.findall('(.*?)', result.content.decode('utf-8'), re.S)
- return list(big)
+ print('解析站点地图中,请稍后……')
+ try:
+ result = requests.get(site)
+ big = re.findall('(.*?)', 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):
@@ -25,9 +42,9 @@ def push_to_bing(site, urls, api_key):
response = requests.post(endpoint, json=payload)
result = response.json()
if response.status_code == 200:
- print("successfully submitted to Bing.")
+ print("成功推送到Bing.")
elif "ErrorCode" in result:
- print("Error pushing URLs to Bing:", result["Message"])
+ print("推送到Bing出现错误,错误信息为:", result["Message"])
except Exception as e:
print("An error occurred:", e)
@@ -42,9 +59,9 @@ def push_to_baidu(site, urls, token):
response = requests.post(api_url, data=payload, headers=headers)
result = response.json()
if "success" in result and result["success"]:
- print("URLs successfully pushed to Baidu.")
+ print("成功推送到百度.")
elif "error" in result:
- print("Error pushing URLs to Baidu:", result["message"])
+ print("推送到百度出现错误,错误信息为:", result["message"])
else:
print("Unknown response from Baidu:", result)
except Exception as e:
@@ -53,12 +70,34 @@ def push_to_baidu(site, urls, token):
if __name__ == '__main__':
parser = argparse.ArgumentParser(description='parse sitemap')
- parser.add_argument('url', type=str, help='The url of your website')
+ parser.add_argument('--url', type=str, 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()
- urls = parse_stiemap(args.url)
- if args.bing_api_key:
- push_to_bing(args.url, urls, args.bing_api_key)
- if args.baidu_token:
- push_to_baidu(args.url, urls, args.baidu_token)
+
+ # 获取当前的时间戳作为随机种子
+ 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')