用JavaScript从RSS提要获取附件URL

Get enclosure URL from RSS feed in JavaScript

本文关键字:获取 URL JavaScript RSS      更新时间:2023-09-26

我试过这个论坛上的其他答案,但没有任何运气。我试图从RSS提要中提取每个条目的附件URL(它包含mp3音频的直接链接),因此我可以创建一个包含所有音频内置播放器的页面。

到目前为止我写的是:

var FEED_URL = 'https://www.spreaker.com/show/1720272/episodes/feed';
$.ajax({
  url: document.location.protocol + '//ajax.googleapis.com/ajax/services/feed/load?v=1.0&num=10&callback=?&q=' + encodeURIComponent(FEED_URL),
  dataType: 'json',
  success: function(data) {
    $(data).find("item").each(function(i) {
      var URL = $(this).find("enclosure").attr("url");
      console.log(URL);
    });
  }
})

下面是其中一个项目的例子:

      <item>
            <title>Episode 2 - 7 Minute Leadership</title>
            <link>https://www.spreaker.com/user/paul_falavolito/epsiode-2-7-minute-leadership</link>
            <description>Why should anyone be led by you?</description>
            <guid isPermaLink="false">https://api.spreaker.com/episode/8296378</guid>
            <pubDate>Tue, 19 Apr 2016 13:16:50 +0000</pubDate>
            <enclosure url="https://api.spreaker.com/download/episode/8296378/episode_2_7_minute_leadership.mp3" length="0" type="audio/mpeg"></enclosure>
            <itunes:author>Paul Falavolito</itunes:author>
            <itunes:subtitle>Why should anyone be led by you?</itunes:subtitle>
            <itunes:summary>Why should anyone be led by you?</itunes:summary>
            <itunes:duration>713</itunes:duration>
            <itunes:keywords>motivation,business,leadership</itunes:keywords>
            <itunes:explicit>clean</itunes:explicit>
            <itunes:image href="https://d3wo5wojvuv7l.cloudfront.net/t_rss_itunes_square_1400/images.spreaker.com/original/f71be8f6c859a4ce5669a83cbf3bcd31.jpg"/>
        </item>

你可以看到有一个附件URL指向一个mp3。这就是我要提取的URL。

这就是我最终获得附件url的方式:

$(document).ready(function() {
  var feed = "https://crossorigin.me/https://www.spreaker.com/show/1720272/episodes/feed";
  $.ajax(feed, {
    accepts: {
      xml: "application/rss+xml"
    },
    dataType: "xml",
    success: function(data) {
      $(data).find("enclosure").each(function() { 
        var el = $.parseHTML($(this)[0].outerHTML);
        var url = $(el).attr('url');
        console.log(url);
      });
    }
  });
});