Это небольшой веб-сервис по анализу рынка серверов Lineage 2 проекта rpg-club.
Python >=3.3 (asyncio) или Python 3.4
- Сбор статистики спроса и предложений
- Отслеживание ситуаций когда продают дешевле, чем покупают (внерыночные котировки).
Запущенная Python-служба каждые 2 минуты парсит страницу рынка и записывает данные в БД. При открытии странички в браузере она начинает каждые 30 секунд опрашивать сервер на предмет изменений и сигнализирует звуковым сигналом. Так что вы можете открыть вкладку в фоне и заниматься своими делами.
В интерфейсе предусмотрена кнопка ПОТРАЧЕНО
, чтобы вы могли помечать те позиции, которые уже не актуальны. Действие можно обратить повторным нажатием. Слева крупным шрифтом отображена потенциальная прибыль, а мелким, под ней, необходимые вложения. Справа название предмета, иконка и количество необходимое для купли-продажи.
import market
market.sqlite_init_items()
market.sqlite_init_trades()
exprs = []
for file_name in ('items_l2j.sql', 'items_rpgclug.sql'):
with open(file_name) as f:
exprs.extend(f.read().split(';'))
with market.sqlite_conn() as conn:
cur = conn.cursor()
for expr in exprs:
cur.execute(expr)
По умолчанию будет создан файл market_history.db
, но вы можете это изменить передав имя файла в качестве параметра в эти функции, либо задав значение по умолчанию SQLITE_DB_FILENAME
в market.py
Скопируйте содержимое каталога www
в любое доступное для nginx место, например /var/www/
.
Пример конфигурации:
server {
listen *:80;
server_name l2-shekel.example.com;
location / {
root /var/www;
}
location /api {
access_log off;
proxy_pass http://127.0.0.1:8080;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
Выполнить
python3.4 run.py
Пример файла run_server.sh
для Python 3.3 + asyncio:
#!/bin/bash
SELF_DIR=$(dirname $(readlink -f $0))
source $SELF_DIR/aio/bin/activate
screen -AmdS market-rpg-club python $SELF_DIR/run.py
где aio
это виртуальное окружение Python, а про screen
вы можете прочитать отдельно
- Вы можете сообщить серверу какие торговцы уже ничего не продают или ничего не покупают, тогда он подберет вам других. К сожалению это реализовано только на стороне сервера, в интерфейсе никак не поддерживается. Вы можете доделать это сами. Если коротко, то для каждого покупающего/продающего формируется хэш и тонкий клиент отправляет те, которые необходимо проигнорировать при анализе, будто их нет. См. файл
analyze.py
методget_dupes
. - Я прикладываю БД для сервера motherland (Родина), на ней вы сможете потренироваться если вдруг захотите построить графики или считать медиану для цены. Ведь одно из прибыльных направлений это быстрая скупка по бросовой цене и перепродажа. Всё в ваших руках!
Спасибо моим друзьям, за веб-интерфейс, за тестирование и за идеи, некоторым из которых так и не довелось дойти до конца. Это было весело и интересно!
Этот проект больше не развивается и не поддерживается. Если у вас есть вопросы, то я готов ответить на них, но не по JS-коду :)