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