import requests import base64 import os def fetch_and_decode_base64(url): print(f"正在获取 {url}") try: response = requests.get(url, verify=False) response.raise_for_status() decoded_content = base64.b64decode(response.text) return decoded_content.decode('utf-8') except requests.RequestException as e: print(f"获取 {url} 时出错: {e}") return None def upload_to_gist(content, gist_id, github_token): url = f"https://api.github.com/gists/{gist_id}" headers = { 'Authorization': f'token {github_token}', 'Accept': 'application/vnd.github.v3+json' } data = { "files": { "configsub.yaml": { "content": content } } } try: response = requests.patch(url, headers=headers, json=data) response.raise_for_status() print(f"成功更新 Gist: {gist_id}") except requests.RequestException as e: print(f"更新 Gist 时出错: {e}") def main(): file_path = '/app/aggregator/data/subscribes.txt' with open(file_path, 'r') as file: urls = file.read().strip().split('\n') all_decoded_texts = [] for url in urls: decoded_content = fetch_and_decode_base64(url) if decoded_content: all_decoded_texts.append(decoded_content) merged_content = "\n".join(all_decoded_texts) encoded_merged_content = base64.b64encode(merged_content.encode('utf-8')).decode('utf-8') merged_file_path = '/app/merged.txt' with open(merged_file_path, 'w') as file: file.write(encoded_merged_content) print(f"已将编码后的合并内容写入 {merged_file_path}") # 上传合并内容到 Gist github_token = os.getenv('GITHUB_TOKEN') gist_id = os.getenv('GITHUB_GIST_ID') upload_to_gist(encoded_merged_content, gist_id, github_token) if __name__ == "__main__": main()