- исправлении логики определения последней версии
This commit is contained in:
@@ -171,19 +171,48 @@ class ContentProcessor:
|
|||||||
|
|
||||||
def create_script_content(self, script_ver, next_version, response):
|
def create_script_content(self, script_ver, next_version, response):
|
||||||
"""Создание контента для обновления скрипта"""
|
"""Создание контента для обновления скрипта"""
|
||||||
self.logger.debug(f"Создаем контент для версии скрипта {script_ver}")
|
self.logger.debug(f"Создаем контент для версии скрипта от {script_ver} до {next_version}")
|
||||||
soup = self.make_soup(response)
|
soup = self.make_soup(response)
|
||||||
page_text = str(soup)
|
page_text = str(soup)
|
||||||
page_text = page_text.replace("Вы можете помочь развитию проекта: https://linux-gaming.ru/donate/", '')
|
page_text = page_text.replace("Вы можете помочь развитию проекта: https://linux-gaming.ru/donate/", '')
|
||||||
|
|
||||||
last_text = f"###Scripts version {next_version}### / stable"
|
# В changelog версии идут от новых к старым (2444, 2443, 2442...)
|
||||||
index_last_text = page_text.find(last_text)
|
# Нужно найти текущую версию (next_version) и предыдущую (script_ver)
|
||||||
|
# Предыдущая версия находится ПОСЛЕ текущей в файле
|
||||||
|
|
||||||
if index_last_text != -1:
|
current_text = f"###Scripts version {next_version}### / stable"
|
||||||
changelog_text_last = page_text[:index_last_text]
|
self.logger.debug(f"Ищем текущую версию: {current_text}")
|
||||||
prev_text = f"###Scripts version {script_ver}### / stable"
|
index_current = page_text.find(current_text)
|
||||||
index_script_ver = changelog_text_last.find(prev_text)
|
self.logger.debug(f"Индекс текущей версии: {index_current}")
|
||||||
changelog_text = changelog_text_last[index_script_ver:]
|
|
||||||
|
if index_current != -1:
|
||||||
|
# Ищем предыдущую версию ПОСЛЕ текущей
|
||||||
|
text_after_current = page_text[index_current:]
|
||||||
|
|
||||||
|
# Попробуем разные варианты формата предыдущей версии
|
||||||
|
possible_formats = [
|
||||||
|
f"###Scripts version {script_ver}### / stable",
|
||||||
|
f"###Scripts version {script_ver}###",
|
||||||
|
f"Scripts version {script_ver}"
|
||||||
|
]
|
||||||
|
|
||||||
|
index_prev_relative = -1
|
||||||
|
for prev_text in possible_formats:
|
||||||
|
self.logger.debug(f"Ищем предыдущую версию (формат): {prev_text}")
|
||||||
|
index_prev_relative = text_after_current.find(prev_text)
|
||||||
|
if index_prev_relative != -1:
|
||||||
|
self.logger.debug(f"Найдено! Относительный индекс: {index_prev_relative}")
|
||||||
|
break
|
||||||
|
|
||||||
|
if index_prev_relative == -1:
|
||||||
|
self.logger.error(f"Не найдена версия {script_ver} после версии {next_version}")
|
||||||
|
self.logger.debug(f"Первые 1000 символов после текущей версии: {text_after_current[:1000]}")
|
||||||
|
return None
|
||||||
|
|
||||||
|
# Извлекаем текст от начала текущей версии до начала предыдущей
|
||||||
|
index_prev = index_current + index_prev_relative
|
||||||
|
changelog_text = page_text[index_current:index_prev]
|
||||||
|
self.logger.debug(f"Длина извлеченного текста: {len(changelog_text)} символов")
|
||||||
|
|
||||||
changelog_text = re.sub(
|
changelog_text = re.sub(
|
||||||
r'###Scripts version (\d+)### / Дата: (\d{2}\.\d{2}\.\d{4}) / Размер скачиваемого обновления: \d+ \S+',
|
r'###Scripts version (\d+)### / Дата: (\d{2}\.\d{2}\.\d{4}) / Размер скачиваемого обновления: \d+ \S+',
|
||||||
@@ -198,7 +227,10 @@ class ContentProcessor:
|
|||||||
|
|
||||||
post_text = "-----------------------------\n" + changelog_text
|
post_text = "-----------------------------\n" + changelog_text
|
||||||
|
|
||||||
self.logger.debug(f"Возвращаем post_text: {post_text}")
|
self.logger.debug(f"Возвращаем post_text длиной {len(post_text)} символов")
|
||||||
return post_text
|
return post_text
|
||||||
|
else:
|
||||||
|
self.logger.error(f"Не найдена версия {next_version} в changelog (конец диапазона)")
|
||||||
|
return None
|
||||||
|
|
||||||
return None
|
return None
|
18
site_api.py
18
site_api.py
@@ -204,16 +204,24 @@ class SiteAPI:
|
|||||||
self.logger.info(f"Будем публиковать версии начиная с индекса {start_index}")
|
self.logger.info(f"Будем публиковать версии начиная с индекса {start_index}")
|
||||||
|
|
||||||
# Публикуем только новые версии после последней опубликованной
|
# Публикуем только новые версии после последней опубликованной
|
||||||
for i in range(start_index, len(sorted_versions) - 1):
|
# Идём до последнего элемента включительно
|
||||||
script_ver = int(sorted_versions[i])
|
for i in range(start_index, len(sorted_versions)):
|
||||||
next_version = int(sorted_versions[i + 1])
|
current_version = int(sorted_versions[i])
|
||||||
|
# Для changelog берём предыдущую версию как начало диапазона
|
||||||
|
prev_version = int(sorted_versions[i - 1]) if i > 0 else None
|
||||||
|
|
||||||
self.logger.info(f"Найдена новая версия скрипта {script_ver}")
|
if prev_version is None:
|
||||||
|
self.logger.warning(f"Нет предыдущей версии для {current_version}, пропускаем")
|
||||||
|
continue
|
||||||
|
|
||||||
|
self.logger.info(f"Публикуем новость о версии {current_version} (changelog от {prev_version} до {current_version})")
|
||||||
|
|
||||||
post_text, post_data = self.create_script_update_post(
|
post_text, post_data = self.create_script_update_post(
|
||||||
str(script_ver), str(next_version), resp_changelog, content_processor
|
str(prev_version), str(current_version), resp_changelog, content_processor
|
||||||
)
|
)
|
||||||
|
|
||||||
if post_data:
|
if post_data:
|
||||||
|
# Заголовок должен быть с текущей версией
|
||||||
|
post_data['title'] = f"Кумулятивное обновление скриптов {current_version}"
|
||||||
self.logger.debug(f"Публикуем {post_data}")
|
self.logger.debug(f"Публикуем {post_data}")
|
||||||
self.post_to_site(post_data)
|
self.post_to_site(post_data)
|
Reference in New Issue
Block a user