вторник, 31 июля 2012 г.

AF Screens

Некоторые модификации игры Battlefield 2 в ходе своей работы время от времени делают снимки игрового поля. Мы сделали скрипт, который выводит эти снимки в веб-интерфейс. Идея и тестирование - Uks, программирование - ваш покорный слуга. Скрипт очень простой, но может быть, кому-то он пригодится. Доступен по адресу: http://www.ongnet.ru/af-screens/


Для корректной работы скрипта необходимы:

  • *nix-подобная ОС (на Windows работа скрипта не проверялась);
  • Web-сервер Apache с mod_wsgi;
  • Интерпретатор Python версии 2.7 (версии 3.x не тестировались), и модули для него: pymongo, jinja2, PIL;
  • СУБД MongoDB;
  • Утилита wget;
  • Доступ к серверу, куда выкладываются скриншоты, по HTTP или FTP.
В нашем случае скрипт работает следующим образом. Модуль crawler.py запускается по cron каждые 5 минут. Он запускает программу wget, которая по ftp подключается к серверу игры и выкачивает оттуда новые скриншоты, если те появились. Информация об этих скриншотах загружается в базу MongoDB. С помощью PIL создаются уменьшенные копии (thumbnails) для этих скриншотов.

Новые скриншоты при их появлении замещают старые, так что база не разрастается до слишком большого размера. Зайдя на страницу скрипта, можно посмотреть, что есть в базе на данный момент.

Установка. Исходники доступны здесь: https://dl.dropbox.com/u/56343352/af-screens.zip

Нужно распаковать их в какую-нибудь папку и изменить параметры в settings.py под свои нужды.

Чтобы скрипт мог скачивать изображения, необходимо, чтобы папки, указанные как DESTINATION и THUMBS, были доступны пользователю cron для записи. Скрипт crawler.py нужно записать в crontab, например так:

*/5 * * * * python /var/www/af-screens/crawler.py

Чтобы было куда записывать данные, надо установить на сервер MongoDB. База данных будет создана автоматически при первом успешном запуске crawler.py.

Чтобы сделать программу доступной для Apache, нужно прописать в httpd.conf примерно следующее:

WSGIScriptAlias /af-screens /var/www/af-screens/af-screens.wsgi

Естественно, пути нужно изменить под свои нужды.

Ну вот, кажется, ничего не забыл.

Комментариев нет:

Отправить комментарий