如何将来自不同Feed的图像的两个不同标签作为雅虎管道中的单个标签?

时间:2013-08-19 17:57:13

标签: xml rss atom-feed yahoo-pipes

我正在阅读来自不同网站的3或4个新闻RSS,并将它们合并到雅虎管道中。 我正在显示每个新闻项目中的一张图片。现在我面临两个问题。

1>图像以不同的标签提供在不同的标签中。图像的不同标签是:

<media:content medium="image" url="http://metrouk2.files.wordpress.com/2013/08/1000x67025.jpg?w=150&amp;h=150&amp;crop=1">
<media:title type="html">Liverpool v Stoke City - Premier League</media:title>
</media:content>

来自另一个Feed:

<media:thumbnail height="340" link="" url="http://www.chelseafc.com/javaImages/4a/7c/0,,10268~12155978,00.jpg" width="640"/

另一个提要:

<enclosure length="150" type="image/jpeg" url="http://u.goal.com/187200/187249_thumb.jpg"/>

2 - ;另外在一些Feed中我得到3或4个媒体:内容数据,其中一些不是图像而是mp3文件。甚至与新闻项目相关的图像也不在固定位置。有时它是第四种媒体:内容有时它是第一位。

对于第一个问题,我正在根据客户端的来源评估源和提取信息,但我不想这样做,因为我希望将来添加更多的源,我真的不想处理所有那些来源明确地在客户端。

对于第二个问题,我很无奈......我只是展示了第一个媒体:内容有时会给我正确的图像。

另外要指出的是,雅虎管道正确执行它并根据雅虎管道面板中的新闻项目显示相关图像。

我真的很挣扎。请指出我正确的方向。

1 个答案:

答案 0 :(得分:0)

第一个问题很简单。对于每个输入源,使用重命名运算符重命名或将dom元素复制到统一格式。然后在联合所有修改后的输入字段后,可以使用统一名称。

第二个问题很棘手。我通常使用重命名 + 正则表达式 + 循环(String Builder)运算符来解决这类问题:

  1. 重命名相关字段,以便以后更容易使用,例如:

    • item.div.div.0.div.div.a.href重命名为link0
    • item.div.div.1.div.div.a.href重命名为link1
    • item.div.div.2.div.div.a.href重命名为link2
    • ...
  2. 使用正则表达式,尝试将不相关的link0link1设为空,例如:

    • item.link0中将<{1}}替换为
    • ^.*[^/]$中将<{1}}替换为
    • item.link1中将<{1}}替换为
    • ...

    正确的正则表达式取决于您的用例。在我的例子中,这适合于使不相关的元素变空。

  3. 使用循环,在 String Builder 中,我连接^.*[^/]$item.link2并将结果分配给{{ 1}}。

  4. 因此,无论^.*[^/]$item.link0,......都有正确的链接,因为其他所有其他内容都已清空,所以连接的值将是正确的。

    这是一个黑客,但它可以工作。我在我的一些管道中积极使用这种技术。棘手的部分是提出正确的正则表达式,使无关的值变为空白。