Как передать элемент 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
значение в качестве входа для вашего субпайпа.
В частности:
Создайте пользовательский ввод -> элемент ввода URL. Вы можете дать ему любое имя и подсказку. Полезно установить значение "Отладка" для тестирования.
Создайте String Builder с 3 полями. В первом поле поместите строку туда, где должно быть подставлено значение. В примере в вопросе
select * from html.tostring where url='
, Во втором поле подключите выход из элемента ввода URL сюда. В третьем поле добавьте остальные выходные данные:' and xpath='//div[@id="foo"]'
, Когда строка будет построена, это будет полная строка запроса YQL с подставленным в нее URL-адресом.Создайте элемент YQL и подключите вывод из строителя строк к полю запроса.
Соедините вывод элементов YQL с элементом Pipe Output.
Сохрани свою новую трубу.
В своей основной трубе создайте элемент своей новой трубы (Мои трубы -> все, что вы назвали). Обычно вы будете перетаскивать его в элемент Loop. Установите вход, чтобы быть item.link
и вы получите правильный вывод.