Найдите исполнителя для вашего проекта прямо сейчас!
Разместите заказ на фриланс-бирже и предложения поступят уже через несколько минут.

http://www.bijiaqi.com/

1) Надо раз в час парсить  списокпродавцов, список покупателей и список совершенных сделок по каждому из

серверов World Of Warcraft US, доступных в списке bijiaqi.com (World of Warcraft US на китайском 魔兽世界(美服)). Они парсятся с одной страницы, описание см. вприложенной картинке.

Сохранять в базу данных в таблицу BjProduct (Game+Server+Side, к примеру "World of Warcraft US" + "Aerie Peak" + "Alliance" ), создавая запись для Game+Server+Side вслучае отсутствия, следующие данные (по каждому серверу+стороне):

                UpdateTime - времяобновления данных

                SellerCount - кол-вопродавцов

                HighestBuyerPrice -наивысшая цена, предлагаемая покупателями (в юанях), за 1 золотую

А также сохранять в таблицу BjOrder все увиденные заказы. Дубликаты заказовдобавлять не надо.

 

со следующими значениями:

                ProductId - Idпродукта из таблицы BjProduct

                BjTime - дата+времязаказа, взятые с bijiaqi (дата указана числом 30 - 30-е число, 1 - 1-е число месяца. т.к.отображаются сделки за последние 10 дней, то это число однозначно определяет

дату) (час указан вторым числом. 0 - 00:00, 1 - 01:00 т.п)

                Price - цена, по которойбыл куплен товар (в юанях)

                Amount - кол-во товара(если указано >50000 - пишем в базу 50000)

                BuyerHash - хешпокупателя

playerauctions.com

1) Надо раз в 4 часа парсить список офферов по каждому из серверов+сторон игрыWorld of Warcraft US(Aegwynn-Alliance,Aegwynn-Horde,Aerie Peak-Alliance,...) (https://www.playerauctions.com/wow-gold/), для величины заказаOffersCheckUnit, сохраняя данные всех офферов со страницы в таблицу PaOffer

(обновляем список офферов для данных игра+сервер+сторона, т.е. старые удаляем,

спарсенные добавляем). По факту надо держать в базе последний слепок списка

офферов по каждому серверу+стороне(alliance/horde) - таблица PaProductOffer:

                ProductId - Id продуктав таблице PaProduct (Game+Server+Side)

                SellerName - имя продавца

                Amount - кол-во золотана продажу (т.к. парсим OffersCheckUnit , топишемOffersCheckUnit )

                Feedback - кол-во фидбеков продавца

                Price - цена (в долларах)

Алгоритм автоматического расчета цены на PA

Цена продажи на PA рассчитывается отдельно для каждого из серверов+сторонWoW. Может использоваться 2 алгоритма расчета цены за Unit золота на PA: Manual и Auto. В Manualпользователь вручную задает стоимость Unit-а золота, а в Auto за него это значениерассчитывает программа. Алгоритм расчета:

1) Рассчитываем ожидаемую цену, по которой купим золото на bijiaqi.com, за Unit золотых в $ (ExpectBjBuyPrice), как

ExpectBjBuyPrice= BjProduct.HighestBuyerPrice  * Unit *YuanToDollar * BjBuyMultiplier. BjBuyMultiplier - настройка, задающаяся пользователем (значение по умолчанию 1.2)

2) Рассчитываем минимальную цену на PA за Unit золота, по которой готовы выставлять минимумOffersCheckUnit золота, с учетом комиссии PA. Т.к. комиссия в %, то считаем все цены как заOffersCheckUnit, а в конце поправляем для приведения в цену за Unit

(AutoMinPaSellPrice):

MinGet = ExpectBjBuyPrice * (OffersCheckUnit /Unit) * (1 + MinProfitPercent/100) - это сколько мы хотим получить на рукиминимум, за OffersCheckUnit золота

AutoMinPaSellPrice = (MinGet + FeeFixed)/(1-FeePercent/100) * (Unit/OffersCheckUnit) - это какую ценунадо выставить на PA, чтобы получить на руки нужный % профита, после вычета

комиссии, за Unit золота, при заказах от OffersCheckUnit золота

3) Смотрим минимальную цену продавцов (MinOfferPrice) с кол-вом фидбеков >=AutoPriceFilterFeedback и временем доставки

Если ни одного оффера, удовлетворяющего фильтру, не найдено, то MinOfferPrice = 100$

MinOfferPrice = MinOfferPrice * (Unit/OffersCheckUnit) - переводим в цену за Unit золота из цены за OffersCheckUnit золота

4) Рассчитываем финальную цену (PaSellPrice), за Unit.

Ставим PaSellPrice = MinOfferPrice *(1-AutoPriceDiscount/100)

Если PaSellPrice

Если PaSellPrice

Если PaSellPrice > HighestAutoPaSellPrice то PaSellPrice =HighestAutoPaSellPrice

Пользовательский интерфейс

В пользовательском интерфейсе можно включать и отключать выставлениеофферов на отдельных серверах, задавать цену выставления вручную, или включать

автоматическое выставление, просматривать данные автоматических вычислений по

серверам.

Задавать настройки работы программы.

Вариант внешнего вида пользовательского интерфейса показан в прилагаемойкартинке.

Обновление офферов на ПА

По нажатию на кнопку "Delete all offers no PA" следует удалять все офферы по игре World of Warcraft US с PA (скорее всего это можноделать одной командой).

По нажатию на кнопку "Update offers on PA" программа должнаотменить все офферы по игре World of Warcraft US, сгенерировать и загрузить с помощью Currency Bulk Offer Tool (https://www.playerauctions.com/member/batchoffer/)новые офферы исходя из настроек на момент нажатия на кнопку. По отключенным

серверам офферов быть не должно. По серверам, на которых цену продажи

рассчитать не удалось, или Amount

Проверка новых заказов

Если стоит галочка "Check for pending orders", то программадолжна раз в 2 минуты проверять, не появились ли НОВЫЕ (с момента старта

программы, когда список уже виденных заказов пустой) заказы в статусе

"Pending Delivery". В случае появления нового заказа следует слать об

этом уведомление на все емейлы, указанные в Notification email(s), и проигрывать звуковой сигнал. Послеперезапуска программа должна заново начать реагировать на все недоставленные

заказы.

Посылка сообщений покупателям по заказам в статусеPending delivery

Программа должна хранить базу заказов, по которым она уже высылаласообщения покупателям. Если  встречаетсязаказ по игре World of Warcraft US в статусе Pending delivery, по которому еще

не высылалось сообщение - следует немедленно выслать. Этот контур должен

работать только, если включена автоматическая проверка заказов

Настройки

Настройки хорошо видны в примере пользовательского интерфейса. Вотнекоторые из них:

PaLogin, PaPassword, PaProxy - логин/пароль/прокси аккаунта наplayerauctions

PaFeePercent - комиссия сайта playerauctions в % от суммы заказа (процентная часть)

PaFeeFixed - комиссия сайта playerauctions в $ (фиксированная часть)

NotificationEmails - список (через ;) почтовых адресов, на которыенадо высылать уведомления о состоянии работы программы, поступлении новых

заказов т.п.

BuyerMessage - сообщение, которое должно автоматическивысылаться покупателю в системе playerauctions при переходе заказа в статус Pending Delivery (один раз назаказ).

Unit - кол-во золота, за которое идут расчетыстоимости в программе (за 1000 золотых / за 10000 золотых / ...)

OffersCheckUnit - кол-во золота, за которое идет парсинг офферов продавцовна PA

AutoPriceFilterFeedback - минимальное кол-во фидбеков продавца для учетаего оффера в расчете цены выставления на PA

AutoPriceFilterDeliveryTime - максимальное время доставки оффера для учетаего в расчете цены выставления на PA

AutoPriceDiscount - на сколько % дешевле офферов других продавцоввыставлять

LowestAutoPaSellPrice, HighestAutoPaSellPrice - диапазон цен, в которых позволяетсярассчитывать цену выставления оффера на PA в автоматическом алгоритме

BjBuyMultiplier - коэффициент, учитывающий, насколько дороже мыкупим золото на bijiaqi, по сравнению с наивысшей ценой предложения от

покупателей

DefaultDeliveryTime - время доставки по умолчанию, которое следуетиспользовать при размещении офферов на PA.

MinProfitPercent - минимальный % прибыли, который мы хотимиметь, от перепродажи на playerauctions

Особенности автоматизации PA, требующиезалогиненного на сайте аккаунта

Автоматизацию запросов к PA из-под залогиненного аккаунта следует делать спомощью Selenium + Mozilla Firefox.С поддержкой возможности задания прокси. По необходимости открывается браузер и

в нем совершаются все необходимые действия.

Особенности автоматизации PA и bijiaqi, нетребующих аккаунтов на сайте (парсинг)

Такие запросы должны осуществляться ТОЛЬКО через прокси. Прокси должны задаватьсяв настройках по отдельности для каждого из сайтов одним из следующих способов

(на выбор пользователя): задание ссылки (http://) на список прокси, или задание

списка прокси в текстовом виде в программе. Список прокси это IP:Port по одному

на строчку, возможно дополнение вида "1.2.3.4:5555;235;Oklahoma;..."

-> следует брать значение до первой ";". В случае, если не задан

прокси - парсинг производиться не должен.

- программа должна чередовать прокси из списка по кругу

- в случае ошибки выполнения сетевого запроса программа должна вносить этотпрокси в черный список на 15 минут и не использовать его это время, после чего

снова вернуть его в рабочий список. Сетевой запрос должен быть повторен с

использованием другого прокси. Это относится ко всем сетевым запросам

программы, не требующим залогинивания и привязки к IP-адресу.

Особенности поведения настроек

- применение измененных настроек не должно требовать перезапускапрограммы,  а если где-то этодействительно необходимо - следует предупреждать пользователя после изменения

настройки о том, что она будет применена только после перезапуска

- настройки должны сохраняться сразу же после их изменения

- изменение настроек цен должно сразу же перерасчитывать автоматически рассчитываемые значения иобновлять пользовательский интерфейс

Особенности пользовательского интерфейса

- пользовательский интерфейс должен быть полностью интерактивным, никакихлоков таблиц и элементов

- таблица с настройками серверов должна сохраняться каждые 5 минут, или привнесении изменений (в настраиваемые пользователем поля)

Особенности многопоточности

Программа должна быть многопоточной. Контур парсинга bijiaqi, контур парсинга playerauctions и контурпроверки заказов должны работать каждый в своих потоках.

Особенности базы данных

Работа с базой данных должна быть кеширована. В базу данных должны слатьсятолько запросы на изменение/добавление данных, запросы на чтение должны быть

вызваны один раз при старте программы. Предполагается, что программа будет

запущена в единственном экземпляре и синхронизации с другими экземплярами не

нужно.

База данных Microsoft Sql Server.

Особенности отладки

- для каждого контура должен вестись свой лог, в который пишутсясовершаемые операции и их результат

- для каждого контура должно отображаться его состояние в текстовом виде("WoW PA Offers Parser:5/50 parsed","WoW PA Offers Parser: next check in 400s")

- ошибки должны дополнительно выводиться в отдельный лог (Errors.htm)

- не должно быть по-тихому скрываемых исключений. они должны обрабатыватьсяпо смыслу, или об исключении должно писаться в отдельный лог

(UnhandledException.htm)

Особенности дальнейшей реализации

- может возникнуть необходимость доработать систему для поддержки множестваигр (не только World of Warcraft US). стоит предусмотреть такую возможность припроектировании БД.

7 лет назад
pombazhira
Ольга 
47 летРоссия
8 лет в сервисе
Был
7 лет назад
  • Похожие заказы
  • Чтобы было более понятно о чем идет речь, вот видео роботизированных складов такого типа: https://www.youtube.com/watch?v=UtBa9yVZBJM https://www.youtube.com/watch?v=5uHm5tu7aEQ https://www.youtube.com/watch?v=udr0OOxmPbc В двух словах о предлагаемом проекте. Необходимо разработать упрощенную графическую модель склада, управляемую через веб-интерфейс. Задача данной модели - продемонстрировать основные элементы, гибкость ...

    Закрыт
    7 лет назад
  • 1. Приложение должно работать под ОС Windows XP и выше 2. Поддерживаемые протоколы HTTP и HTTPS 3. Сохранение всего трафика в открытом (не зашифрованном) виде на Proxy сервере 4. Язык программирования по согласованию

    Прикладное ПО1 исполнитель
    Завершен
    7 лет назад
  • Требуется простой макрос. В колонке имеются простые данные типа.  ГлавнаяНазвание категории 1Название категории 3Название категории 4Название категории 5FunyToys G"S" Требуется чтобы макрос оставлял в колонке только то, что расположено в последнем теге перед . Т.е. после обработки ...

    Закрыт
    7 лет назад
  • $350

    Добрый день, уважаемые фрилансеры! Задача состоит в следующем: Есть трехмерный mesh-объект, необходимо нанести на его поверхность текст. Шрифт выбирается пользователем либо текст целиком пишется на графическом планшете от руки. Получаем изогнутый в 3D текст. Дальше нужно этот ...

    Закрыт
    7 лет назад
  • Редактор со встроенными макетами для создания коллажей (онлайн создание фотоподушки с подогнанными размерами и т.д и т.п)  с последующим сохранением их в базе данных. Пример: instaphoto.ru

    Закрыт
    7 лет назад
  • Нужно написать бота(макрос) или что то в этом духе что будет само играть и выигрывать в данной игре.Интересуют режимы игры 1 на 1 stadium(в настройках) classic.и 4 на 4 stadium Big и Big Easy.Просьба писать ...

    Прикладное ПОнет заявок
    Закрыт
    7 лет назад
  • Требуется дизассемблировать стороннюю программу (windows) на предмет наличия в ней определенных шпионских функций. К примеру, возможность делать скриншоты экрана, сканировать процессы, анализировать подключенное оборудование, клавиатурный ввод и тп. Ни исполняемый файл, ни библиотеки не помещены ...

    Закрыт
    7 лет назад