【问题标题】:how can i get the raw stream url of a iheartradio station.如何获取 iheartradio 电台的原始流 url。
【发布时间】:2017-06-21 23:43:34
【问题描述】:

我正在尝试制作一个不和谐的机器人来在 103.7 广播电台播放 iheart80s, 到目前为止,我找不到直接流 url 来给我的不和谐机器人。

我试图通过 python 获取 json,但它只返回 http.client.BadStatusLine: ICY 200 OK

我正在使用 discord.js。 这是我试图将流 url 输入的函数:

function(CmdArg,CmdMsg){
  const voiceChannel = CmdMsg.member.voiceChannel;
  voiceChannel.join().then(connection => resolve(connection)).catch(err =>reject(err));
  const stream = () => {
           return request.get({
               uri: CmdArg,
               followAllRedirects: true,
               encoding: null
           });
       }


    console.log(stream);
    CmdMsg.guild.voiceConnection.playStream(stream, { passes: token.passes    });
}

【问题讨论】:

    标签: javascript node.js internet-radio


    【解决方案1】:

    我可以通过这样做找到 iheart 网址... 转到所需的广播电台网站。 点击收听/播放。 右键单击页面然后查看页面源。 查找/搜索...“冰冷” “冰冷”的第一个实例应该在这里.. "shoutcast_stream":"http:// (各种字母和数字).playlists.ihrhls.com/(4 个数字) icy" 我将http地址复制并粘贴到winamp中,它可以工作。

    http://c10icyelb.prod.playlists.ihrhls.com/4342_icy

    【讨论】:

      【解决方案2】:

      它再次改变了,wireshark 解决方案或在 chrome/firefox 的检查选项卡中搜索某些文本都没有帮助,但我想通了...

      我将使用的示例是:I heart Mix 90.1 Toluca https://www.iheart.com/live/mix-901-toluca-6566/

      1. 点击分享图标,它位于“连接”按钮的右侧。
      2. 查找嵌入小部件部分。
      3. 然后从src="的末尾复制。例子:整个文本是

      <iframe allow="autoplay" width="100%" height="200" src="https://www.iheart.com/live/mix-901-toluca-6566/?embed=true" frameborder="0"></iframe>

      我会复制

      https://www.iheart.com/live/mix-901-toluca-6566/?embed=true
      
      1. 好的,太好了。现在我们可以使用更少的 html 和 url。现在复制该网址并将其粘贴到您的网络浏览器中(您现在可以关闭以前的广播网页)。 Rick 点击播放按钮,选择 Inspect。
      2. 现在,使用 Ctrl+F(仅按 ctrlF)查找 stream。您应该得到多个结果,但它们都在同一文本行上,所以不用担心。
      3. 现在双击加载的 JSON 数据,应该以类似 {"initialPropos" : {.....,现在复制所有文本并粘贴到文本编辑器中,这样您就可以搜索文本(例如 vimnotepadMS Word
      4. 现在,使用粘贴的文本打开文本编辑器。现在寻找streams。第一个结果应该以这样的开头:,"streams":{"hls...
      5. 太棒了!现在您可以复制您喜欢的流,有些可能不可用,但在此示例中,可以使用以下流类型:
      {
      "hls_stream":"http://playerservices.streamtheworld.com/api/livestream-redirect/XHENOFMAAC.m3u8",
      
      "pls_stream":"http://playerservices.streamtheworld.com/pls/XHENOFMAAC.pls",
      
      "secure_hls_stream":"https://playerservices.streamtheworld.com/api/livestream-redirect/XHENOFMAAC.m3u8",
      
      "secure_pls_stream":"https://playerservices.streamtheworld.com/pls/XHENOFMAAC.pls"}
      
      1. 现在,您可以选择自己喜欢的流,并用您最喜欢的音频/视频播放器打开它。例如。 (一定要把它放在双引号中,这样它就不会被你的 shell 或 smth 操纵)mpv "http://playerservices.streamtheworld.com/api/livestream-redirect/XHENOFMAAC.m3u8"

      2. 结束!现在你应该好好去!如果我一点都不清楚,请告诉我。我创建堆栈溢出帐户的唯一原因是发布此内容并帮助其他人知道如何执行此操作,所以如果这不起作用,请告诉我!

      干杯。

      【讨论】:

        【解决方案3】:

        您可以在计算机上使用 mitmproxy 来检查应用的流量。我能够将http://c10.prod.playlists.ihrhls.com/4342/playlist.m3u8 识别为该广播电台的流源。当然,url可能会随着时间而改变,所以ymmv。

        【讨论】:

          【解决方案4】:

          在 iHeartRadio 上查找链接:(我以 93.3 频道为例)

          1. 打开 iHeart 收音机并找到您的直播 *注意:请勿开始直播
          2. 使用 Wire Shark 或任何其他捕获工具并在 iHeart Radio 上播放流之前立即开始捕获
          3. 停止流,然后立即停止捕获(这将我们捕获的数据包数量限制为仅我们想要的数据包)
          4. 使用过滤器并输入 tcp contains "ihrh"
          5. 打开所有包含链接的数据包。 *注意:忽略任何包含“ihrh”的文本,我们正在寻找链接
          6. 查找服务器链接(例如 c13.prod.playlists.ihrhls.com)*注意:确保它是“c”和类似“c13”的数字,而不是“cdn”或其他任何内容
          7. 进入 Internet Explorer 并在 iheart 电台上播放流媒体
          8. 查看 url 并注意代码(例如 https://www.iheart.com/live/channel-933-241/?autoplay=true&pname=fire&campid=local&callletters=khts-fm)
          9. 使用服务器链接,然后添加“/”,然后是上面步骤中找到的代码
          10. 接下来,在链接末尾添加“/playlist.m3u8”字样
          11. 完成所有步骤后,您将获得最终链接,在我们的案例中:https://c13.prod.playlists.ihrhls.com/241/playlist.m3u8

          【讨论】:

            【解决方案5】:

            > 查找/搜索...“冰冷”

            这不是一种可靠的方法,因为可能会使用其他服务器,例如streamtheworld、edgefcs 等 - 有些可能使用 RTMP(您的播放器可能无法处理)

            这是一个可以完成这项工作的 Perl 模块和示例脚本:

            https://metacpan.org/release/IHeartRadio-Streams

            参考:https://askubuntu.com/questions/470269/how-do-i-add-iheartradio-stations-to-radio-tray/470277

            【讨论】:

              【解决方案6】:

              我觉得播放广播电台需要代理服务器和 ffmpeg 设置,因为多个用户将通过您的网站/webapp/app 连接到流媒体。服务器端的 ffmpeg 将读取电台流(http 流或 rtsp 流)并将其提供给您的流媒体代理服务器,该服务器将管理多个连接。

              【讨论】:

              • discord.js 需要一个可读的 Steam 才能将音频播放到不和谐的频道。
              • 我提出的架构是高度可扩展和易于监控的,并且代理服务器生成的流是可流的,所以你在discord.js中使用它不会有问题。对我的答案投反对票的原因是什么?
              猜你喜欢
              • 2014-02-05
              • 2018-02-09
              • 1970-01-01
              • 2012-02-14
              • 1970-01-01
              • 2010-10-21
              • 2015-03-23
              • 1970-01-01
              • 1970-01-01
              相关资源
              最近更新 更多