50 lines
1.9 KiB
Python
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()
|