erpk / harvester
此软件包的最新版本(v1.1.6)没有可用的许可证信息。
eRepublik的屏幕抓取工具。
该软件包的官方仓库似乎已消失,因此该软件包已被冻结。
v1.1.6
2014-02-17 15:55 UTC
Requires
- php: >=5.4
- ext-curl: *
- ext-dom: *
- ext-json: *
- ext-pdo_sqlite: *
- erpk/common: 0.3.*
- guzzle/guzzle: 3.4.*
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);