Как передать элемент Yahoo Pipes в YQL-запрос?

В YQL-элементе Yahoo Pipes нужно сделать одну обычную вещь - передать значение Pipes в YQL-запрос. Например:

select * from html.tostring where url='<someurl>' and xpath='//div[@id="foo"]'

и вы хотите передать динамическое значение для <someurl>, Допустим, это URL элемента RSS-канала, который называется item.link, Попытка просто заменить цитируемое someurl с item.link дает вам эту ошибку:

Неверный идентификатор item.link. me - единственный поддерживаемый идентификатор в этом контексте

Как я могу передать это значение?

1 ответ

Решение

Вам необходимо создать отдельный канал, который принимает URL элемента в качестве пользовательского ввода, передает его в построитель строк, который подставляет фактическое значение URL в строку запроса YQL, и передает его в качестве ввода в виджет YQL. Затем в вашей главной трубе, передайте item.link значение в качестве входа для вашего субпайпа.

В частности:

  1. Создайте пользовательский ввод -> элемент ввода URL. Вы можете дать ему любое имя и подсказку. Полезно установить значение "Отладка" для тестирования.

  2. Создайте String Builder с 3 полями. В первом поле поместите строку туда, где должно быть подставлено значение. В примере в вопросе select * from html.tostring where url=', Во втором поле подключите выход из элемента ввода URL сюда. В третьем поле добавьте остальные выходные данные: ' and xpath='//div[@id="foo"]', Когда строка будет построена, это будет полная строка запроса YQL с подставленным в нее URL-адресом.

  3. Создайте элемент YQL и подключите вывод из строителя строк к полю запроса.

  4. Соедините вывод элементов YQL с элементом Pipe Output.

Сохрани свою новую трубу.

В своей основной трубе создайте элемент своей новой трубы (Мои трубы -> все, что вы назвали). Обычно вы будете перетаскивать его в элемент Loop. Установите вход, чтобы быть item.link и вы получите правильный вывод.

Другие вопросы по тегам