我怎样才能获得 iheartradio 电台的原始流 url。

how can i get the raw stream url of a iheartradio station.

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

我曾尝试通过 python 获得 json 但那只是 returns 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    });
}

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

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

通过这样做,我找到了 iheart url... 转到所需的广播电台网站。 点击 listen/play。 右键单击页面然后查看页面源代码。 Find/search 为..."icy" "icy"的第一个实例应该在这里.. "shoutcast_stream":"http:// (various letters and numbers). playlists.ihrhls.com/(4 numbers) icy" 我将 http 地址复制并粘贴到 winamp 中,它起作用了。

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

> Find/search 为..."icy"

这不是可靠的方法,因为可能会使用其他服务器,例如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

找到 links 关闭 iHeartRadio:(我使用频道 93.3 作为示例)

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

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

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

  1. 点击 Share 图标,它位于 'connect' 按钮右侧。
  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 少了很多。现在复制 url 并将其粘贴到您的网络浏览器中(您现在可以关闭之前的广播网页)。 Rick 单击播放按钮,select 检查。
  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. 现在,您可以选择自己喜欢的流,并用您最喜欢的 audio/video 播放器打开它。例如。 (一定要把它放在双引号里,这样它就不会被你的 shell 或 smth 操纵)mpv "http://playerservices.streamtheworld.com/api/livestream-redirect/XHENOFMAAC.m3u8"

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

干杯。