Skip to content

Commit

Permalink
chore: git init
Browse files Browse the repository at this point in the history
  • Loading branch information
eallion committed Aug 7, 2024
0 parents commit 7cbd3a6
Show file tree
Hide file tree
Showing 4 changed files with 143 additions and 0 deletions.
52 changes: 52 additions & 0 deletions .github/workflows/main.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,52 @@
name: Sync Hourly

on:
# push:
# branches:
# - main
schedule:
- cron: '0 * * * *' # Hourly
workflow_dispatch:
repository_dispatch:
types: [sync-hourly]

jobs:
build-deploy:
runs-on: ubuntu-latest
steps:

- name: Checkout repository
uses: actions/checkout@v4
with:
submodules: false
fetch-depth: 1

- name: Set up Python
uses: actions/setup-python@v5
with:
python-version: '3.10'

- name: Install dependencies
run: pip install -r requirements.txt

- name: Fetch hot daily api
run: |
python fetch_hot_daily_api.py
python format_tg_markdownv2.py > formatted_text.txt
- name: Format to MarkdownV2
run: |
{
echo 'FORMATTED_TEXT<<EOF'
cat formatted_text.txt
echo EOF
} >> "$GITHUB_ENV"
- name: Post Text
uses: xireiki/channel-post@v1
with:
bot_token: ${{ secrets.BOT_TOKEN }}
chat_id: ${{ secrets.CHAT_ID }}
context: ${{ env.FORMATTED_TEXT }}
parse_mode: HTML # Optional
method: sendMessage
68 changes: 68 additions & 0 deletions fetch_hot_daily_api.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,68 @@
import requests
import json
import os

APIs = [
"https://daily-hot-api.eallion.com/36kr?limit=1&cache=true",
"https://daily-hot-api.eallion.com/acfun?limit=1&cache=true",
"https://daily-hot-api.eallion.com/baidu?limit=1&cache=true",
"https://daily-hot-api.eallion.com/bilibili?limit=1&cache=true",
"https://daily-hot-api.eallion.com/douyin?limit=1&cache=true",
"https://daily-hot-api.eallion.com/hellogithub?limit=1&cache=true",
"https://daily-hot-api.eallion.com/hupu?limit=1&cache=true",
"https://daily-hot-api.eallion.com/huxiu?limit=1&cache=true",
"https://daily-hot-api.eallion.com/ifanr?limit=1&cache=true",
"https://daily-hot-api.eallion.com/ithome?limit=1&cache=true",
"https://daily-hot-api.eallion.com/netease-news?limit=1&cache=true",
"https://daily-hot-api.eallion.com/ngabbs?limit=1&cache=true",
"https://daily-hot-api.eallion.com/qq-news?limit=1&cache=true",
"https://daily-hot-api.eallion.com/sina?limit=1&cache=true",
"https://daily-hot-api.eallion.com/sina-news?limit=1&cache=true",
"https://daily-hot-api.eallion.com/sspai?limit=1&cache=true",
"https://daily-hot-api.eallion.com/thepaper?limit=1&cache=true",
"https://daily-hot-api.eallion.com/tieba?limit=1&cache=true",
"https://daily-hot-api.eallion.com/toutiao?limit=1&cache=true",
"https://daily-hot-api.eallion.com/v2ex?limit=1&cache=true",
"https://daily-hot-api.eallion.com/weibo?limit=1&cache=true",
"https://daily-hot-api.eallion.com/weread?limit=1&cache=true",
"https://daily-hot-api.eallion.com/zhihu?limit=1&cache=true",
"https://daily-hot-api.eallion.com/zhihu-daily?limit=1&cache=true"
]

def fetch_data(api):
try:
response = requests.get(api)
response.raise_for_status()
return response.json()
except requests.RequestException:
return None

def process_data(data, source):
if data and 'data' in data and 'title' in data:
for item in data['data']:
item['source'] = data['title']
if 'hot' not in item:
item['hot'] = None
return data['data']
return []

def save_data(data, filename):
with open(filename, 'w', encoding='utf-8') as f:
json.dump(data, f, ensure_ascii=False, indent=4)

def main():
all_data = []
for api in APIs:
data = fetch_data(api)
if data:
source = api.split('/')[-1].split('?')[0]
processed_data = process_data(data, source)
save_data(data, f"{source}.json")
all_data.extend(processed_data)

# 处理没有 'hot' 字段的情况
all_data.sort(key=lambda x: (x['hot'] is not None, x['hot']), reverse=True)
save_data(all_data, 'total.json')

if __name__ == "__main__":
main()
22 changes: 22 additions & 0 deletions format_tg_markdownv2.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
import json
from datetime import datetime, timedelta

# 读取 total.json 文件
with open('total.json', 'r', encoding='utf-8') as file:
data = json.load(file)

# 获取当前时间并加上8个小时
current_time = (datetime.now() + timedelta(hours=8)).strftime('%H:00')
current_date= (datetime.now() + timedelta(hours=8)).strftime(' %b %d, %Y')

# 格式化数据
formatted_text = f"<b>头条一小时 {current_time}</b>{current_date}\n\n"
for item in data:
title = item.get('title', '').replace('[', '\\[').replace(']', '\\]').replace('_', '\\_')
url = item.get('url', '')
hot = item.get('hot', 'null')
source = item.get('source', '未知来源')
formatted_text += f"•【{source}】<a href=\"{url}\">{title}</a> 🔥<i>{hot}</i>\n"

# 输出格式化后的文本
print(formatted_text)
1 change: 1 addition & 0 deletions requirements.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
requests

0 comments on commit 7cbd3a6

Please sign in to comment.