From 7373b01696309d64ebe9e7d9474a4d2377b44015 Mon Sep 17 00:00:00 2001 From: amd64fox <62529699+amd64fox@users.noreply.github.com> Date: Sun, 5 Nov 2023 22:16:42 +0300 Subject: [PATCH] latest revision - If more than one URL is found for the platform, then select the one with the highest revision --- upd.py | 36 +++++++++++++++++++++++------------- 1 file changed, 23 insertions(+), 13 deletions(-) diff --git a/upd.py b/upd.py index b2b4312..d11efef 100644 --- a/upd.py +++ b/upd.py @@ -1,6 +1,7 @@ import aiohttp import asyncio import json +import re import argparse from bs4 import BeautifulSoup @@ -36,8 +37,25 @@ async def send_request(json_data): data = await response.text() soup = BeautifulSoup(data, 'html.parser') system_response = soup.find('div', style='text-align:center;font-family:monospace;margin:50px auto 0;max-width:600px').text - print(f'Ответ от Google apps script: {system_response}') + print(f'Ответ от GAS: {system_response}') +def get_urls(find_url): + platform_urls = {} + version_pattern = re.compile(r'-([0-9]+)\.(exe|tbz)') + + for url, platform in find_url: + match = version_pattern.search(str(url)) + if match: + version_number = int(match.group(1)) + if platform in platform_urls: + # Сравниваем и сохраняем URL (если найдено больше одного url для платформы, то выбираем с самой большой ревизией) + current_version = int(version_pattern.search(platform_urls[platform]).group(1)) + if version_number > current_version: + platform_urls[platform] = str(url) + else: + platform_urls[platform] = str(url) + + return platform_urls async def main(): start_number = 0 @@ -73,18 +91,10 @@ async def main(): find_url.append(result) if find_url: - platform_urls = {} - for item in find_url: - if isinstance(item, tuple): - url, platform_name = item - if platform_name not in platform_urls: - platform_urls[platform_name] = str(url) - else: - if "unknown" not in platform_urls: - platform_urls["unknown"] = "unknown" - platform_urls["version"] = version - platform_urls["source"] = source - req_ver = json.dumps(platform_urls) + latest_urls = get_urls(find_url) + latest_urls["version"] = version + latest_urls["source"] = source + req_ver = json.dumps(latest_urls, ensure_ascii=False, indent=2) print(f'Версия {version} отправлена') await send_request(req_ver) else: