frpc-desktop/electron/json/extract.py

50 lines
1.9 KiB
Python

import json
import os
import requests
import logging
# Set up logging configuration
logging.basicConfig(level=logging.INFO, format='%(asctime)s - %(levelname)s - %(message)s')
def extract_frp_releases():
current_dir = os.path.dirname(os.path.abspath(__file__))
json_file_path = os.path.join(current_dir, 'frp-releases.json')
logging.info('Reading JSON file: %s', json_file_path)
with open(json_file_path, 'r', encoding='utf-8') as file:
data = json.load(file)
checksums = {}
for i in data:
for asset in i['assets']:
if asset['name'] == 'frp_sha256_checksums.txt':
logging.info('Found checksum file: %s', asset['browser_download_url'])
content = fetch_txt_content(asset['browser_download_url'])
if content:
lines = content.splitlines()
for line in lines:
if line.strip(): # Ensure the line is not empty
parts = line.split()
if len(parts) == 2:
checksums[parts[0]] = parts[1] # 反转映射关系
logging.debug('Added checksum: %s -> %s', parts[0], parts[1])
output_file_path = os.path.join(current_dir, 'frp_all_sha256_checksums.json')
logging.info('Writing checksums to file: %s', output_file_path)
with open(output_file_path, 'w', encoding='utf-8') as output_file:
json.dump(checksums, output_file, ensure_ascii=False, indent=4)
def fetch_txt_content(url):
logging.info('Fetching content from: %s', url)
response = requests.get(url)
if response.status_code == 200:
logging.info('Successfully fetched content')
return response.text
else:
logging.error('Failed to fetch content, status code: %d', response.status_code)
return None
if __name__ == "__main__":
extract_frp_releases()