erpk/harvester

此软件包的最新版本(v1.1.6)没有可用的许可证信息。

eRepublik的屏幕抓取工具。

该软件包的官方仓库似乎已消失,因此该软件包已被冻结。

维护者

详细信息

github.com/erpk/harvester

安装: 823

依赖项: 2

建议: 0

安全: 0

星星: 17

监视者: 13

分支: 14

v1.1.6 2014-02-17 15:55 UTC

This package is not auto-updated.

Last update: 2024-01-20 11:34:39 UTC


README

Harvester是eRepublik网页抓取工具。最初,Harvester被api.erpk.org使用,但我决定将其开源。它允许您轻松地从游戏中获取有用的信息。它用PHP编写,主要基于DOMXPath库。它需要PHP 5.4+。

您的应用程序不是用PHP编写的吗?

如果您的应用程序不是用PHP编写的,您可能正在寻找一个独立的API web服务器 - erpk/harsever

安装

安装库的推荐方法是使用Composer。在您的应用程序目录中创建composer.json文件

{
    "minimum-stability": "dev",
    "prefer-stable": true,
    "require": {
      "erpk/harvester": "dev-master"
    }
}

然后下载最新的composer.phar并运行以下命令

php composer.phar install

该命令将安装Harvester及其所有依赖项。现在,为了使用库,您必须包含位于vendor/autoload.php中的自动加载器。

<?php
require __DIR__.'/vendor/autoload.php';

客户端

客户端是每个Harvester模块所需的对象。如何创建它?

<?php
require __DIR__.'/vendor/autoload.php';

use Erpk\Harvester\Client\ClientBuilder;

$builder = new ClientBuilder();
$builder->setEmail('your_erepublik@email.com');
$builder->setPassword('your_erepublik_password');

$client = $builder->getClient();

代理

有时您需要使用代理与Harvester一起使用。这里是实现这一点的简单解决方案。

use Erpk\Harvester\Client\Proxy\HttpProxy;
// Create new HttpProxy object
$proxy = new HttpProxy('59.47.43.90', 8080);
// Make client using that proxy
$builder->setProxy($proxy);

$client = $builder->getClient();

第三方模块

原始模块

以下示例假设您已经设置了客户端并包含了自动加载器。

###公民

use Erpk\Harvester\Module\Citizen\CitizenModule;
// assumes you have your Client object already set up
$module = new CitizenModule($client);

// Get citizen profile
$citizen = $module->getProfile(2020512);
echo $citizen['name']; // Romper

// Search for citizens by name
$results = $module->search('Romp', 1); // page 1
print_r($results);

###军事

use Erpk\Harvester\Module\Military\MilitaryModule;
$module = new MilitaryModule($client);

// Get list of active campaigns
$active = $module->getActiveCampaigns();
$countryId = 35;
$cotdCampaign = $active->findCampaignOfTheDay($countryId);
$countryCampaigns = $active->findCountryCampaigns($countryId);
$alliesCampaigns = $active->findAlliesCampaigns($countryId);

// Get information about Military Unit
$unit = $module->getUnit(5);
// Get information about regiment in Military Unit
$regiment = $module->getRegiment(5, 1);

// Choose weapon Q7 in particular campaign
$module->changeWeapon($campaignId, 7);
// Make single kill in campaign at selected side
$module->fight($campaignId, $sideCountryId);

// Check Daily Order status
$doStatus = $module->getDailyOrderStatus();
// ...then get reward if completed
if ($doStatus['do_reward_on'] == true) {
    $module->getDailyOrderReward($doStatus['do_mission_id'], $doStatus['groupId']);
}

###交易所

use Erpk\Harvester\Module\Exchange\ExchangeModule;
$module = new ExchangeModule($client);

// Purchase currenc, sell gold, page 1
$response = $module->scan(ExchangeModule::CURRENCY, 1);
// Purchase gold, sell currency, page 20
$response = $module->scan(ExchangeModule::GOLD, 20);

// Access citizen gold and currency amounts
$gold = $response->getGoldAmount();
$cc = $response->getCurrencyAmount();

// Get paginator
$paginator = $offers->getPaginator();
echo $paginator->getCurrentPage(); // Display current page number
echo $paginator->getLastPage(); // Display last page number

// Buy offer
$offer = $response->getOffers()[0];
$amountToBuy = 0.05;
$response = $module->buy($offer, $amountToBuy);

###就业市场

use Erpk\Harvester\Module\JobMarket\JobMarketModule;
$module = new JobMarketModule($client);

// Job offers in Poland, page 1
$countryId = 35;
$page = 1;
$offers = $module->scan($countryId, $page);

###市场

use Erpk\Harvester\Module\Market\MarketModule;

$countryId = 35; // Poland
$industryId = 2; // Weapons
$quality = 7; // Q7

$module = new MarketModule($client);
$result = $module->scan($countryId, $industryId, $quality);

// Buy 15 weapons of Q7 quality.
$response = $module->buy($result['offers'][0]['id'], 15);

###国家

use Erpk\Harvester\Module\Country\CountryModule;
$module = new CountryModule($client);

// Get Country entity instance
use Erpk\Common\EntityManager;
$em = EntityManager::getInstance();
$countries = $em->getRepository(Country::class);
$poland = $countries->findOneByCode('PL');

// Get country's society data
$society = $module->getSociety($poland);

// Get country's economic data
$eco = $module->getEconomy($poland);

// Get list of online citizens (page 3)
$onlineCitizens = $module->getOnlineCitizens($poland, 3);

###管理

use Erpk\Harvester\Module\Management\ManagementModule;
$module = new ManagementModule($client);

// Refill energy
$module->eat();
// Get items in inventory
$module->getInventory();
// Train in all (four) training grounds
$module->train(true, true, true, true);
// Work as employee
$module->workAsEmployee();

// Get owned companies
use Erpk\Harvester\Module\Management\Company;

$companies = $module->getCompanies(); // Returns CompanyCollection object
$companies->filter(function (Company $company) {
    // Filter out all companies where you've already worked as Manager
    // and which are not raw companies
    return $company->hasAlreadyWorked() === false
        && $company->isRaw() === true; 
});

foreach ($companies as $company) { // Iterate filtered Companies
    echo $company->getId(); // Display company ID
}

$companies->reset(); // Resets previously added filters

// Work as manager
use Erpk\Harvester\Module\Management\WorkQueue;

$queue = new WorkQueue;
foreach ($companies as $company) { // Iterate previously filtered CompanyCollection
    $queue->add($company, true, 0); // Work in company as Manager without employees assigned
}
$module->workAsManager($queue);

// Get rewards for daily tasks
$module->getDailyTasksReward();
// Send private message to citizen with ID 123456
$module->sendMessage(
    123456,
    'Subject of message',
    'Content of message'
);

###媒体

use Erpk\Harvester\Module\Media\PressModule;
use Erpk\Harvester\Module\Media\Category;

$press = new PressModule($client);

// Create new article
$articleId = $press->publishArticle(
    'Test article',
    'Article body',
    35, // Country ID - Poland
    Category::FIRST_STEPS
);

// Edit existing article
$press->editArticle(
    $articleId,
    'Test article 2',
    'Another body',
    Category::BATTLE_ORDERS
);

// Remove article
$press->deleteArticle($articleId);