diff --git a/.github/workflows/baidupush.yml b/.github/workflows/pushUrl.yml similarity index 78% rename from .github/workflows/baidupush.yml rename to .github/workflows/pushUrl.yml index 2541e38f..e71f7ec2 100644 --- a/.github/workflows/baidupush.yml +++ b/.github/workflows/pushUrl.yml @@ -1,16 +1,16 @@ ## 利用GitHub Actions每天定时给百度推送链接,提高收录率 ## -name: baidupush +name: pushUrl # 两种触发方式:一、push代码,二、每天国际标准时间23点(北京时间+8即早上7点)运行 on: - # push: + push: schedule: - cron: '0 23 * * *' # https://help.github.com/en/actions/automating-your-workflow-with-github-actions/events-that-trigger-workflows#scheduled-events-schedule workflow_dispatch: inputs: unconditional-invoking: - description: 'baidupush unconditionally' + description: 'push url unconditionally' type: boolean required: true default: true @@ -35,5 +35,8 @@ jobs: - name: install requests run: pip install requests - - name: baidupush - run: npm run baidupush \ No newline at end of file + - 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 diff --git a/baidupush.py b/baidupush.py deleted file mode 100644 index 9d0c0130..00000000 --- a/baidupush.py +++ /dev/null @@ -1,18 +0,0 @@ -import re -import ssl -import requests -import argparse - - -if __name__ == '__main__': - ssl._create_default_https_context = ssl._create_unverified_context - parser = argparse.ArgumentParser(description='parse sitemap') - parser.add_argument('url', help='The url of your website') - args = parser.parse_args() - url = f'https://{args.url}/sitemap.xml' - result = requests.get(url) - big = re.findall('(.*?)', result.content.decode('utf-8'), re.S) - for i in big: - # print(i) - op_xml_txt = open('urls.txt', 'a') - op_xml_txt.write('%s\n' % i) diff --git a/baidupush.sh b/baidupush.sh deleted file mode 100644 index 7901c56a..00000000 --- a/baidupush.sh +++ /dev/null @@ -1,12 +0,0 @@ -#!/usr/bin/env sh - -# 确保脚本抛出遇到的错误 -set -e - -# 解析sitemap.xml, 记得换成你自己的域名,注意检查是否包含‘www’ -python baidupush.py 'www.ghlerrix.cn' - -# 百度链接推送,换成自己的token和域名 -curl -H 'Content-Type:text/plain' --data-binary @urls.txt "http://data.zz.baidu.com/urls?site=https://www.ghlerrix.cn&token=oUldnU4HZvSTlh0e" - -rm -rf urls.txt # 删除文件 \ No newline at end of file diff --git a/package.json b/package.json index 4ef4c221..60da82a0 100644 --- a/package.json +++ b/package.json @@ -18,8 +18,7 @@ "start": "next start", "post-build": "next-sitemap --config next-sitemap.config.js", "export": "next build && next-sitemap --config next-sitemap.config.js && next export", - "bundle-report": "ANALYZE=true yarn build", - "baidupush": "bash baidupush.sh" + "bundle-report": "ANALYZE=true yarn build" }, "dependencies": { "@giscus/react": "^2.2.6", diff --git a/pushUrl.py b/pushUrl.py new file mode 100644 index 00000000..dc6e73bf --- /dev/null +++ b/pushUrl.py @@ -0,0 +1,64 @@ +import re +import ssl +import requests +import argparse + +ssl._create_default_https_context = ssl._create_unverified_context + + +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) + + +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("successfully submitted to Bing.") + elif "ErrorCode" in result: + print("Error pushing URLs to 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("URLs successfully pushed to Baidu.") + elif "error" in result: + print("Error pushing URLs to Baidu:", 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, 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)