Скрипт сбора статистики для биржи Linkfeed
Сегодня предлагаю ознакомиться с API интерфейсом известной среди вебмастеров и оптимизаторов биржи Linkfeed.ru, предоставляющим функции для удаленного получения и обработки данных о доходах, статусе страниц, заявок, балансе и т.п. API реализован на базе протокола SOAP, являющегося расширением XML-RPC. Взаимодействие с сервером выглядит следующим образом – клиент отправляет xml пакет с указанием нужной функции, ее параметров, сервер возвращает ответ – результат ее выполнения. Кстати, в прошлом месяце я уже рассматривал создание оповещений о новых заявках в sape.ru с помощью api функций предоставляемых системой и протокола XML-RPC.
Цель:
На этот раз решил написать для web-мастеров небольшой php скрипт сбора статистики доходов с отмеченных площадок за год (в разрезе месяцев), за месяц (в разрезе дней) и анализа динамики роста или падения.

Детали реализации:
Из списка api функций Linkfeed.ru мне понадобились:
get_sites() – Возвращает список площадок/сайтов пользователя
get_site_income(site_id, year, month) – Возвращает доходы с площадки/сайта за указанный месяц
get_site_income_for_day(site_id, year, month, day) – Возвращает доходы с площадки/сайта за указанный день
Обратите внимание, что в скрипте нигде не заданы свойства html-элементов такие как выравнивание, цвет, фон, шрифт и т.п., это я оставляю для самостоятельного задания
, ибо каждый сделает по-своему. Достаточно положить рядом со скриптом файл – styles.css , в котором все это указать.
Тем кому интересно как взаимодействует SOAP сервер с клиентом, можно вставить после вызова каждой функции код:
1 2 3 4 | <?php echo("Запрос :".htmlspecialchars($client->__getLastRequest())."<BR>"); echo("Ответ:".htmlspecialchars($client->__getLastResponse())."<BR>"); ?> |
К примеру, вызов get_sites() генерирует следующий запрос:
1 2 3 4 5 6 | <?xml version="1.0" encoding="UTF-8"?> <SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="https://api.linkfeed.ru" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"> <SOAP-ENV:Body> <ns1:GetSites/> </SOAP-ENV:Body> </SOAP-ENV:Envelope> |
сервер ответит на него:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 | <?xml version="1.0" encoding="UTF-8" ?> <env:Envelope xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:env="http://schemas.xmlsoap.org/soap/envelope/"> <env:Body> <n1:GetSitesResponse xmlns:n1="https://api.linkfeed.ru" env:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"> <return n2:arrayType="n1:LinkfeedStruct..Site[1]" xmlns:n2="http://schemas.xmlsoap.org/soap/encoding/" xsi:type="n2:Array"> <item> <day_cost xsi:type="xsd:double">+0</day_cost> <links_count xsi:nil="true"></links_count> <level1_max_anchor_length xsi:nil="true"></level1_max_anchor_length> <yap xsi:type="xsd:boolean">true</yap> <stop_sale xsi:type="xsd:boolean">false</stop_sale> <encoding_id xsi:type="xsd:int">1</encoding_id> <level1_max_links_count xsi:type="xsd:int">15</level1_max_links_count> <disable_adult xsi:type="xsd:boolean">true</disable_adult> <created_at xsi:type="xsd:date">2009-11-20Z</created_at> <after_text xsi:type="xsd:string"></after_text> <domain xsi:type="xsd:string">domain.com</domain> <yaca xsi:type="xsd:boolean">false</yaca> <class_attr xsi:type="xsd:string">link_linkfeed</class_attr> <auto_mode xsi:type="xsd:boolean">true</auto_mode> <level3_max_anchor_length xsi:nil="true"></level3_max_anchor_length> <before_text xsi:type="xsd:string"></before_text> <dmoz xsi:type="xsd:boolean">false</dmoz> <hide_url_in_search xsi:type="xsd:boolean">false</hide_url_in_search> <level3_max_links_count xsi:type="xsd:int">15</level3_max_links_count> <stop_words xsi:type="xsd:string"></stop_words> <pr xsi:type="xsd:int">0</pr> <status xsi:type="xsd:string">WORK</status> <level2_max_anchor_length xsi:nil="true"></level2_max_anchor_length> <id xsi:type="xsd:int">91895</id> <all_cost xsi:type="xsd:double">+20.775</all_cost> <yesterday_cost xsi:type="xsd:double">+3.06</yesterday_cost> <gop xsi:type="xsd:boolean">true</gop> <separator xsi:type="xsd:string">;</separator> <language_id xsi:type="xsd:int">1</language_id> <theme_id xsi:type="xsd:int">41</theme_id> <domain_level xsi:type="xsd:int">2</domain_level> <hide_url xsi:type="xsd:boolean">false</hide_url> <level2_max_links_count xsi:type="xsd:int">15</level2_max_links_count> <disable_obscene xsi:type="xsd:boolean">true</disable_obscene> <cy xsi:type="xsd:int">0</cy> </item> </return> </n1:GetSitesResponse> </env:Body> </env:Envelope> |
Настройка:
Для работы с протоколом SOAP по https на хостинге под Win нужно подключить в php.ini две библиотеки:
[PHP_SOAP]
extension=php_soap.dll
[PHP_OPENSSL]
extension=php_openssl.dll
На хостингах с linux, как пишут разработчики, необходимо установить пакеты php-auth и php-soap.
Далее, находим в начале скрипта строчки:
1 2 3 4 | <?php $client = new SoapClient("http://api.linkfeed.ru/service/wsdl", array("trace"=>1,"exceptions"=>0,"login"=>"vasya","password"=>"parol")); ?> |
Меняем в них логин и пароль на свои. Вот, собственно, и все.
Скрипт распространяется по лицензии GNU GPL. Можете модифицировать его как захотите. Будут вопросы и предложения – пишите, всегда буду рад их выслушать и ответить.
Впервые слышу про апи у линкфеда, хм конечно там редко бываю, но если что пригодится. Благодарю
Как у вас доход в LinkFeed, по сравнению с SAPE.
Доход в Sape в несколько раз больше.