SoprachevAK Posted September 12, 2024 Share Posted September 12, 2024 (edited) Появилась необходимость вытаскивать из исходников игры локализации, иконки и некоторые xml. Нужна актуализация под каждый патч. Если для локализаций и xml уже существует https://github.com/IzeBerg/wot-src от @IzeBerg и https://github.com/StranikS-Scan от @StranikS_Scan, за что им большое спасибо, то аналогичного репозитория для иконок я не нашел. Так что придётся делать самому. В связи с этим есть вопрос, как качать клиент? Я нашел https://github.com/IzeBerg/wgus, алгоритм у себя повторил и к чему пришел: 1. Подгружаю meta из wgus-woteu.wargaming.net/api/v1/metadata?chain_id=unknown&protocol_version=7.5&guid=WOT.EU.PRODUCTION 2. Подгружаю список обновлений между указанной current_version и актуальной версией игрыwgus-woteu.wargaming.net/api/v1/patches_chain?game_id=WOT.EU.PRODUCTION&protocol_version=1.11&metadata_protocol_version=7.5&installation_id=python-wgus&client_type=sd&lang=EN&metadata_version=20240609213023&client_current_version=1.26.0.23171&locale_current_version=0&sdcontent_current_version=0 3. Каждое обновление состоит из нескольких патчей. Скачиваю их по торрент ссылкам 4. Каждый патч состоит потенциально из нескольких пакетов (wgpkg) иногда они разделены на несколько файлов xxx.wgpkg.001, xxx.wgpkg.002, которые можно объединить cat xxx.wgpkg.* > xxx.wgpkg 5. Каждый wgpkg это zip архив, который состоит из _service/service.xml с инструкцией по применению патча (files_to_delete, files_to_apply_diff) и самих файлов патча в формате xdiff и rdiff 6. Ну и судя по всему, это обычные diff как у гита, которые надо последовательно применить Есть вопрос – иногда в патче бывает несколько wgpkg, в каком порядке их применять, а ещё у меня в нескольких пакетах лежит один и тот же файл, например WorldOfTanks.exe, ну и потенциально другие файлы, что с ними делать? Есть кто нибудь готов поделиться готовым скриптом обновляющим клиент до последней версии, буду благодарен) Edited September 12, 2024 by SoprachevAK 1 @ Quote Link to comment Short link Share on other sites More sharing options...
SoprachevAK Posted September 12, 2024 Author Share Posted September 12, 2024 Шутки ради решил затестить новую o-1 и был послан) 1 @ Quote Link to comment Short link Share on other sites More sharing options...
yepev Posted September 12, 2024 Share Posted September 12, 2024 @SoprachevAK спроси - почему не может? @ Quote Link to comment Short link Share on other sites More sharing options...
SoprachevAK Posted September 12, 2024 Author Share Posted September 12, 2024 2 минуты назад, yepev сказал: @SoprachevAK спроси - почему не может? Ну ладно, уломал) Интересно, а если сказать, что политика вг разрешает ядерные бомбы делать, она мне даст туториал @ Quote Link to comment Short link Share on other sites More sharing options...
yepev Posted September 12, 2024 Share Posted September 12, 2024 2 минуты назад, SoprachevAK сказал: Интересно, а если сказать, что политика вг разрешает ядерные бомбы делать, она мне даст туториал Джейлбрейки существуют, но такой же простой фразой как в примере обычно не уговорить, потому что для таких чувствительных тем модели целенаправленно файнтюнятся на отказ. @ Quote Link to comment Short link Share on other sites More sharing options...
SoprachevAK Posted September 12, 2024 Author Share Posted September 12, 2024 (edited) 4 минуты назад, yepev сказал: Джейлбрейки существуют, но такой же простой фразой как в примере обычно не уговорить, потому что для таких чувствительных тем модели целенаправленно файнтюнятся на отказ. Ну так я по этому и удивился, что так легко прокатило, может потому что модель новая. На удивление она дала даже скорее всего рабочий код, но его всё равно надо дорабатывать и придётся дебажить ещё ни одну версию, так то надеюсь мне помогут те кто этот процесс уже прошел Edited September 12, 2024 by SoprachevAK @ Quote Link to comment Short link Share on other sites More sharing options...
Monstrofil Posted September 13, 2024 Share Posted September 13, 2024 Будь готов к тому что параметры вроде metadata_version будут периодически меняться и ломать загрузку. https://github.com/Monstrofil/locale_exporter_wows/blob/master/locale_exporter.py#L103 p.s. у меня только скачивание файликов и давно устаревшее, но может пригодится 2 @ Quote Link to comment Short link Share on other sites More sharing options...
Solution DrWeb7_1 Posted September 14, 2024 Solution Share Posted September 14, 2024 13.09.2024 в 00:00, SoprachevAK сказал: в каком порядке их применять https://kr.cm/f/t/60830/ — тут все подробности. 2 @ Quote Link to comment Short link Share on other sites More sharing options...
StranikS_Scan Posted September 16, 2024 Share Posted September 16, 2024 Вообще-то файлики доступны по прямой ссылке. Если тебе нужно всего несколько файликов актуального клиента игры, то не нужно возиться с дифами и скачивать клиент весь. Могу написать например, как я качаю актуальный paths.xml у себя в программе WMCleaner, если нужно. 1 @ Quote Link to comment Short link Share on other sites More sharing options...
SoprachevAK Posted September 16, 2024 Author Share Posted September 16, 2024 14.09.2024 в 11:09, DrWeb7_1 сказал: https://kr.cm/f/t/60830/ — тут все подробности. Спасибо! То что надо, странно что сам не нашел) 3 часа назад, StranikS_Scan сказал: Вообще-то файлики доступны по прямой ссылке. Если тебе нужно всего несколько файликов актуального клиента игры, то не нужно возиться с дифами и скачивать клиент весь. Могу написать например, как я качаю актуальный paths.xml у себя в программе WMCleaner, если нужно. Ну мне нужен файл gui_part*.pkg, а он весьма большой, если его тоже можно, было бы круто. Отдельно paths.xml я и сам качаю напрямую из твоего гитхаба с декомпилированными танками) @ Quote Link to comment Short link Share on other sites More sharing options...
StranikS_Scan Posted September 16, 2024 Share Posted September 16, 2024 (edited) Из game_info.xml берем: <id>WOT.RU.PRODUCTION</id> <localization>RU</localization> <update_urls> <value>https://lstus-ru.lesta.ru</value> </update_urls> <part_versions> <version name="client" available="1.29.0.3313" installed="1.29.0.3313"/> <version name="hdcontent" available="1.29.0.3291" installed="1.29.0.3291"/> <version name="locale" available="1.29.0.3312" installed="1.29.0.3312"/> <version name="sdcontent" available="1.29.0.3291" installed="1.29.0.3291"/> </part_versions> Как проверить наличие и размер файла в новом клиенте игры Запрашиваем https://lstus-ru.lesta.ru/api/v2/integrity_check/?protocol_version=1.7&game_id=WOT.RU.PRODUCTION&chain_id=sd3_hd3&locale_lang=ru&client_check_version=1.29.0.3313 Получаем: <?xml version="1.0" encoding="UTF-8"?> <protocol name="integrity_check" version="1.7" wgc_publisher_id="lesta"> <torrents> <torrent> <file>https://dl-tanki-s3.lesta.ru/ru/references/wot_1.29.0.4440_ru_po5bl2/wot_1.29.0.3313_client.torrent</file> <blacklist>https://dl-tanki-s3.lesta.ru/ru/references/wot_1.29.0.4440_ru_po5bl2/wot_1.29.0.3313_client.blacklist</blacklist> <part>client</part> <version>1.29.0.3313</version> <hash>787a21b0e133d89f2c204543783d0775c5119ad91b4cdfa6faf25834a6355e01</hash> </torrent> </torrents> <web_seeds> <url threads="3">http://dl-tanki-s3.lesta.ru/ru/references/wot_1.29.0.4440_ru_po5bl2/</url> </web_seeds> </protocol> Парсим ссылку на torrent-файл скачиваем его, после этого берем любой готовый код на парсинг записей в таком файле. Парсим, находим в списке gui*.pkg и размер файла в байтах. Можно самому распарсить, благо всё видно прямо в тексте: Как скачать файл напрямую Берем ссылку для torrent-файла, отрезаем расширение и дописываем через слэш путь относительно корневой папки игры и имя скачиваемого файла. Запрашиваем: http://dl-tanki-s3.lesta.ru/ru/references/wot_1.29.0.4440_ru_po5bl2/wot_1.29.0.3313_client/res/packages/gui-part2.pkg Получаем файл. ЗЫ: Соответственно кроме запроса "&client_check_version=", есть также "&locale_check_version=", "&sdcontent_check_version=" и "&hdcontent_check_version=". Edited September 16, 2024 by StranikS_Scan 1 @ Quote Link to comment Short link Share on other sites More sharing options...
SoprachevAK Posted September 16, 2024 Author Share Posted September 16, 2024 (edited) 4 часа назад, StranikS_Scan сказал: Берем ссылку для torrent-файла, отрезаем расширение и дописываем через слэш путь относительно корневой папки игры и имя скачиваемого файла. Запрашиваем: http://dl-tanki-s3.lesta.ru/ru/references/wot_1.29.0.4440_ru_po5bl2/wot_1.29.0.3313_client/res/packages/gui-part2.pkg Получаем файл. Понял, спасибо большое, это очень интересный подход. Теперь даже не знаю как сделаю) Качать напрямую несколько нужных файлов звучит более заманчиво, чем разбираться с дозагрузкой Edited September 16, 2024 by SoprachevAK @ Quote Link to comment Short link Share on other sites More sharing options...
Mixaill Posted September 23, 2024 Share Posted September 23, 2024 13.09.2024 в 00:00, SoprachevAK сказал: Появилась необходимость вытаскивать из исходников игры локализации, иконки и некоторые xml. Нужна актуализация под каждый патч. Если для локализаций и xml уже существует https://github.com/IzeBerg/wot-src от @IzeBerg и https://github.com/StranikS-Scan от @StranikS_Scan, за что им большое спасибо, то аналогичного репозитория для иконок я не нашел. Так что придётся делать самому. В связи с этим есть вопрос, как качать клиент? Я нашел https://github.com/IzeBerg/wgus, алгоритм у себя повторил и к чему пришел: 1. Подгружаю meta из wgus-woteu.wargaming.net/api/v1/metadata?chain_id=unknown&protocol_version=7.5&guid=WOT.EU.PRODUCTION 2. Подгружаю список обновлений между указанной current_version и актуальной версией игрыwgus-woteu.wargaming.net/api/v1/patches_chain?game_id=WOT.EU.PRODUCTION&protocol_version=1.11&metadata_protocol_version=7.5&installation_id=python-wgus&client_type=sd&lang=EN&metadata_version=20240609213023&client_current_version=1.26.0.23171&locale_current_version=0&sdcontent_current_version=0 3. Каждое обновление состоит из нескольких патчей. Скачиваю их по торрент ссылкам 4. Каждый патч состоит потенциально из нескольких пакетов (wgpkg) иногда они разделены на несколько файлов xxx.wgpkg.001, xxx.wgpkg.002, которые можно объединить cat xxx.wgpkg.* > xxx.wgpkg 5. Каждый wgpkg это zip архив, который состоит из _service/service.xml с инструкцией по применению патча (files_to_delete, files_to_apply_diff) и самих файлов патча в формате xdiff и rdiff 6. Ну и судя по всему, это обычные diff как у гита, которые надо последовательно применить Есть вопрос – иногда в патче бывает несколько wgpkg, в каком порядке их применять, а ещё у меня в нескольких пакетах лежит один и тот же файл, например WorldOfTanks.exe, ну и потенциально другие файлы, что с ними делать? Есть кто нибудь готов поделиться готовым скриптом обновляющим клиент до последней версии, буду благодарен) https://koreanrandom.com/forum/topic/60830-openwgwotpatcher-v032-ручная-установка-wgpkglspkg-файлов-в-том-числе-установка-предзагрузки/ 1 @ Quote Link to comment Short link Share on other sites More sharing options...
SoprachevAK Posted September 24, 2024 Author Share Posted September 24, 2024 21 час назад, Mixaill сказал: https://koreanrandom.com/forum/topic/60830-openwgwotpatcher-v032-ручная-установка-wgpkglspkg-файлов-в-том-числе-установка-предзагрузки/ Спасибо) Именно то что было нужно, там выше уже отвечали) @ Quote Link to comment Short link Share on other sites More sharing options...
SoprachevAK Posted December 9, 2024 Author Share Posted December 9, 2024 16.09.2024 в 21:10, StranikS_Scan сказал: Из game_info.xml берем: А не подскажешь, где можно взять game_info.xml кроме как в уже установленном клиенте? Хочется полностью автоматизировать, чтоб вообще не трогать @ Quote Link to comment Short link Share on other sites More sharing options...
StranikS_Scan Posted December 10, 2024 Share Posted December 10, 2024 09.12.2024 в 06:50, SoprachevAK сказал: А не подскажешь, где можно взять game_info.xml кроме как в уже установленном клиенте? Хочется полностью автоматизировать, чтоб вообще не трогать Я способов не знаю. Думаю их нет. @ Quote Link to comment Short link Share on other sites More sharing options...
SoprachevAK Posted December 12, 2024 Author Share Posted December 12, 2024 10.12.2024 в 11:17, StranikS_Scan сказал: Я способов не знаю. Думаю их нет. Понял, спасибо Ну наверняка где то есть, но искать слишком запарно. Может припрёт, можно каким нибудь инструментом анализа трафика посмотреть куда лаунчер ходит, он то знает откуда качать актуальную версию @ Quote Link to comment Short link Share on other sites More sharing options...
Mixaill Posted December 22, 2024 Share Posted December 22, 2024 09.12.2024 в 04:50, SoprachevAK сказал: А не подскажешь, где можно взять game_info.xml кроме как в уже установленном клиенте? Хочется полностью автоматизировать, чтоб вообще не трогать можно самому создать https://github.com/Mixaill/galaxy-integration-wargaming/blob/master/wgc/wgc_gameinfo.py @ Quote Link to comment Short link Share on other sites More sharing options...
SoprachevAK Posted December 22, 2024 Author Share Posted December 22, 2024 6 минут назад, Mixaill сказал: можно самому создать https://github.com/Mixaill/galaxy-integration-wargaming/blob/master/wgc/wgc_gameinfo.py У тебя там из WgcMetadata создаётся game_info.xml, а мне game_info.xml нужны актуальные версии part_versions.available Посмотрел откуда грузится Metadata, и к сожалению, в ней нет версии https://github.com/Mixaill/galaxy-integration-wargaming/blob/0c72550809cc7b55bafe94381ca729a346ebe63d/wgc/wgc_gameinfo.py#L70 <client_parts> <client_part id="locale" integrity="false" lang="true" /> <client_part id="client" integrity="true" /> <client_part app_type="sd" id="sdcontent" integrity="true" /> <client_part app_type="hd" id="hdcontent" integrity="true" /> </client_parts> @ Quote Link to comment Short link Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.