Проблемы с работой таблицы YQL

Итак, я пытаюсь настроить таблицу YQL с помощью API по адресу http://www.teamliquid.net/video/streams/?filter=live&xml=1, но возникли некоторые проблемы.

Вот мое определение таблицы:

<?xml version="1.0" encoding="UTF-8"?>
<table xmlns="http://query.yahooapis.com/v1/schema/table.xsd">
    <meta>
        <author>TL.net</author>
        <description>TL.net's streams</description>
        <documentationURL>none</documentationURL>
        <sampleQuery>select * from {table}</sampleQuery>
    </meta>
    <bindings>
        <select itemPath="streamlist" produces="XML">
            <urls>
                <url>http://www.teamliquid.net/video/streams/?xml=1</url>
            </urls>         
            <inputs>
                <key id="filter" type="xs:string" paramType="query" />
            </inputs>
        </select>
     </bindings>
</table>

Выполнение use "store://q5awkFLmEqteFVOTUJbQ6h" as tl; select * from tl where filter="live" приводит к следующей ошибке:

<?xml version="1.0" encoding="UTF-8"?>
<query xmlns:yahoo="http://www.yahooapis.com/v1/base.rng"
    yahoo:count="0" yahoo:created="2012-02-13T22:14:48Z" yahoo:lang="en-US">
    <diagnostics>
        <publiclyCallable>true</publiclyCallable>
        <url execution-start-time="1" execution-stop-time="33"
            execution-time="32" proxy="DEFAULT"><![CDATA[store://q5awkFLmEqteFVOTUJbQ6h]]></url>
        <url execution-start-time="35" execution-stop-time="232"
            execution-time="197" http-status-code="406"
            http-status-message="Not Acceptable" proxy="DEFAULT"><![CDATA[http://www.teamliquid.net/video/streams/?xml=1&filter=live]]></url>
        <user-time>232</user-time>
        <service-time>258</service-time>
        <build-version>25247</build-version>
    </diagnostics> 
    <results/>
</query>

Я действительно не могу понять, почему это не работает.


yql
person Tony    schedule 13.02.2012    source источник


Ответы (1)


В операторах отладки вы можете видеть, что YQL считывает исходный URL-адрес: http://www.teamliquid.net/video/streams/?xml=1&filter=live, но возвращает сообщение об ошибке HTTP 406 Not Acceptable.

HTTP 406 предназначен для случаев, когда сервер не может ответить ни в одном из запрошенных форматов (заголовок Accept). Я не знаю, как это применимо в данном случае, но источник teamliquid.net упоминает следующее:

Требуется кодировка gzip, также отправьте действительный User-Agent с названием вашего приложения/сайта и контактной информацией. Эта страница и XML-файл обновляются каждые пять минут, пожалуйста, не проводите опрос чаще, чем каждые пять минут, иначе вы рискуете быть заблокированным по IP-адресу. Если у вас есть какие-либо вопросы, пожалуйста, PM R1CH.

Я подозреваю, что это одно из двух:

  1. Серверы YQL не запрашивают данные в формате gzip или сжатом формате.
  2. Серверы teamliquid.net блокируют YQL
person BrianC    schedule 21.10.2012