2021/02/26

Скрипт для создания базы TWIC

Журнал The Week in Chess (TWIC) является одним из популярнейших онлайн шахматных изданий в мире. Первый номер вышел 17 сентября 1994 года, и с тех пор каждую неделю на сайте появляется свежая порция шахматных партий с турниров по всему свету. На данный момент в бесплатном доступе выпуски, начиная с 920 (25.06.2012). Из них можно составить большую базу партий. Ссылка на архив: https://theweekinchess.com/twic.


Разумеется, можно вручную скачать и распаковать каждый файл, затем соединить всё в одну базу в программе вроде Chessbase. Но это огромная рутинная работа. Данную задачу можно автоматизировать, например, с помощью Windows PowerShell. Это встроенный инструмент Windows для создания несложных программ, аналог Bash на Linux. Итак, вот скрипт для создания базы TWIC:


$localfolder = 'C:\Users\VasjaPupkin\Documents\TWIC\'

[int]$from = Read-Host -Prompt 'Enter first TWIC'

[int]$to = Read-Host -Prompt 'Enter last TWIC'

for($NR = $from; $NR -le $to; $NR++){

    $url = 'https://theweekinchess.com/zips/twic' + [string]$NR + 'g.zip'

    $output = $localfolder + 'twic' + [string]$NR + 'g.zip'

    Invoke-WebRequest -Uri $url -OutFile $output

    Expand-Archive -LiteralPath $output -DestinationPath $localfolder

    }

$getpgn = $localfolder + '*.pgn'

$finaldb = $localfolder + 'twic.pgn'

Write-Host "Creating database..."

cmd /c copy $getpgn $finaldb

Get-ChildItem $localfolder -Exclude twic.pgn, *.ps1 | Remove-Item -Force


Скрипт скачивает, распаковывает, соединяет pgn базы twic в одну и затем удаляет все вспомогательные файлы. Инструкция по использованию:


1) Создайте отдельную пустую папку, где будет храниться ваша база.

2) Скопируйте код в Notepad. Измените строку $localfolder = 'C:\Users\VasjaPupkin\Documents\TWIC\', разумеется, указав в ней свой путь к папке. Сохраните файл с расширением .ps1. Файл может лежать где угодно на компьютере, но можно для удобства сохранить его в ту же папку.


3) Запустите скрипт, щёлкнув по ps1 файлу правой кнопкой мыши и выбрав в меню "Run with PowerShell".

4) Скрипт спросит, от и до которого "твика" скачивать. Как уже упоминалось, посмотреть какие выпуски доступны можно здесь. Введите номера, подтвердив клавишей Enter.

NB! В дальнейшем для обновления базы просто укажите диапазон новых выпусков. Программа присоединит их к имеющейся базе.

После запуска скрипта и указания номеров "твиков" Windows PowerShell начнёт их скачивать и распаковывать в указанную папку, отображая в окне текущую информацию. Данный процесс займёт несколько минут. Сколько именно - зависит от количества скачиваемых выпусков и скорости интернета. Затем появится надпись "Creating database...". Это значит, что программа приступила к созданию общей базы. Дождитесь, пока окно закроется. В папке появится итоговый twic.pgn. Все остальные файлы в ней, кроме самого скрипта ps1, будут удалены.

5) Если скачать все "твики", то крайне желательно конвертировать получившуюся базу в другой формат. Дело в том, что pgn (portable game notation) не предназначен для работы с очень большими базами - поиск будет сильно тормозить. К счастью, во многих шахматных GUI имеется свой родной, более шустрый формат. Например, в самой популярной программе Chessbase это .cbh. Откройте нашу базу twic.pgn в Chessbase, щёлкните по ней правой кнопкой мыши и выберите пункт "Convert to CBH Format...".


Готово! У нас получилась база с ~1.5 млн. партий, начиная с 2012 года и по сей день. В подавляющем большинстве случаев этого хватит для подготовки к сопернику на турнире или изучения актуальной дебютной теории.


1 комментарий: