Are IHeart "iPhone" MP3 feeds ending?

Results 1 to 7 of 7

Thread: Are IHeart "iPhone" MP3 feeds ending?

  1. #1

    Are IHeart "iPhone" MP3 feeds ending?

    I've had a bunch of links I've opened in Winamp for a few years ago, but now they all come up 'not found'.

    I've never used Apple hardware, but wouldn't be surprised that IHR made their apps/site easier to use with them, so should I presume the inevitable here?

    dL

  2. #2
    The old streaming URLs for the iHeart Radio stations are gradually being replaced by new ones, being phased in over a period of time.
    I noticed this a few months ago as when I "snooped" for a URL for some iHeart stations, some new URLs popped up replacing the old ones.
    For a while both new and old streaming URLs were functional; now the old ones are becoming disfunctional.

    So, using WOR-AM New York as an example:

    New streaming URL (copy + paste between the arrows): >>http://c5icy.prod.playlists.ihrhls.com/5874_icy<<

    Old streaming URL was: >>http://wor-am.akacast.akamaistream.net/7/495/179680/v1/auth.akacast.akamaistream.net/wor-am<<

    The good news: the new URLs are able to be used in the Windows Media Player whereas the old ones wouldn't work (at least for me on any edition of the player).

    The bad news: unlike most of the old URLs, the new ones are rather anonymous as far as stream "Titles" go;
    they do not retain the name of the station when finished listening to them.
    I tried modifying the "Title" in the VLC Player (for example), but upon opening a new streaming "session" later on, the "Title" modifications are wiped away.

    If there are other iHeart stations for which you'd like the new URL, the pattern you could use to find the new URL is
    (using the above as an example):

    >>http://c5icy.prod.playlists.ihrhls.com/5874_icy<<

    The # "5874" above refers to the station ID # - that can be obtained by checking the URL of the station's Listen Live web page link,
    in this example, between the arrows: >>http://www.iheart.com/live/710-wor-5874/<<

    The time-consuming part is determining the digit that appears between the letter "c" and "icy" in the new URL.
    It is a random digit somewhere between 1 and 20 (currently; that could expand in the future).

    Thus, one would have to test the new URL by first plugging in the station ID # and then starting with the digit "1"
    between the "c" and "icy". If it works, great. If not, try "2", "3", "4", "5", etc. until the stream works.
    (In the above example, it so happens that "5" worked.)

  3. #3
    Just "view source" and search for the word "streams".....it appears only once, and the multiple streams are listed below....an m3u8 stream (for roku and other video devices) and the sboutcast streams.

  4. #4
    Thanks, pjc1961 and CalRadioFan. Very helpful information.

  5. #5
    Unfortunately these links don't work reliably. Sometimes they start glitching after a couple of minutes, other times they just stop after a few minutes.

    Too bad because the iHeart website is awful. It loads over a dozen tracking links or cookies and plays a video pre-roll commercial with is ridiculous because by the time all the cookies load nobody is staring at the screen and the ads make no sense without the visuals.

    The Android iHeart App is a virus in every sense of the word. It pops up notifications even if "block all" is enabled, it suddenly starts playing audio by itself, and the only way to keep it under control is to "force stop" or uninstall. Google Play Store should ban it.

  6. #6
    No need to make 20 hostname guesses. You can look up the station ID value for a known callsign with this API URL (replace "KEIB" below with your desired callsign):

    Code:
    https://us.api.iheart.com/api/v1/catalog/searchAll?keywords=KEIB&maxRows=20&queryArtist=false&queryTrack=false&queryBundle=false&queryFeaturedStation=true&queryKeyword=false&queryStation=true&queryTalkShow=false&startIndex=0
    The result is XML. Look inside the <id></id> tag for the station ID value.

    You can then get the stream URLs (rtmp, icy, hls) by placing the aforementioned station ID value in this API URL (replace "197" below with your desired station ID):

    Code:
    https://us.api.iheart.com/api/v2/content/liveStations/197?allMarkets=true
    The result is json.

    I made a batch file that can be run at the Windows command line to retrieve all stream URLs for an IHR station by callsign (requires xidel.exe from http://www.videlibri.de/xidel.html):

    Code:
    @echo off
    
    setlocal
    
    if not "%~1" == "" goto top
    
    echo.
    echo Command line syntax:
    echo    ihrstreams [callsign]
    echo Example:
    echo    ihrstreams KEIB
    
    goto :eof
    
    :top
    
    set "ihr_call=%~1"
    
    for /f "tokens=1" %%a in ('xidel -s "http://us.api.iheart.com/api/v1/catalog/searchAll?keywords=%ihr_call%&maxRows=20&queryArtist=false&queryTrack=false&queryBundle=false&queryFeaturedStation=true&queryKeyword=false&queryStation=true&queryTalkShow=false&startIndex=0" -e "//bestmatch/id"') do set "ihr_sid=%%a"
    
    if "%ihr_sid%" == "" (
      echo.
      echo Error querying IHR 'searchAll' API. Check callsign.
    ) else (
      echo.
      for /f "tokens=1" %%a in ('xidel -s "http://us.api.iheart.com/api/v2/content/liveStations/%ihr_sid%?allMarkets=true" -e "($json).hits/streams/*"') do echo %%a
    )
    
    endlocal
    Screenshot of the batch file working:

    https://images2.imgbox.com/95/59/l7tvGD9R_o.png

    If you want the batch file to return only one kind of stream (instead of all 5 kinds), just replace the asterisk inside the batch file (there is only one) with the desired stream's name in the server's json output (i.e., replace "*" with "hls_stream" or "shoutcast_stream" or "secure_rtmp_stream" or "secure_hls_stream" or "secure_shoutcast_stream").

  7. #7
    Quote Originally Posted by yeoldeschool View Post
    No need to make 20 hostname guesses. You can look up the station ID value for a known callsign with this API URL (replace "KEIB" below with your desired callsign):

    Code:
    https://us.api.iheart.com/api/v1/catalog/searchAll?keywords=KEIB&maxRows=20&queryArtist=false&queryTrack=false&queryBundle=false&queryFeaturedStation=true&queryKeyword=false&queryStation=true&queryTalkShow=false&startIndex=0
    The result is XML. Look inside the <id></id> tag for the station ID value.

    You can then get the stream URLs (rtmp, icy, hls) by placing the aforementioned station ID value in this API URL (replace "197" below with your desired station ID):

    Code:
    https://us.api.iheart.com/api/v2/content/liveStations/197?allMarkets=true
    The result is json.

    I made a batch file that can be run at the Windows command line to retrieve all stream URLs for an IHR station by callsign (requires xidel.exe from http://www.videlibri.de/xidel.html):

    Code:
    @echo off
    
    setlocal
    
    if not "%~1" == "" goto top
    
    echo.
    echo Command line syntax:
    echo    ihrstreams [callsign]
    echo Example:
    echo    ihrstreams KEIB
    
    goto :eof
    
    :top
    
    set "ihr_call=%~1"
    
    for /f "tokens=1" %%a in ('xidel -s "http://us.api.iheart.com/api/v1/catalog/searchAll?keywords=%ihr_call%&maxRows=20&queryArtist=false&queryTrack=false&queryBundle=false&queryFeaturedStation=true&queryKeyword=false&queryStation=true&queryTalkShow=false&startIndex=0" -e "//bestmatch/id"') do set "ihr_sid=%%a"
    
    if "%ihr_sid%" == "" (
      echo.
      echo Error querying IHR 'searchAll' API. Check callsign.
    ) else (
      echo.
      for /f "tokens=1" %%a in ('xidel -s "http://us.api.iheart.com/api/v2/content/liveStations/%ihr_sid%?allMarkets=true" -e "($json).hits/streams/*"') do echo %%a
    )
    
    endlocal
    Screenshot of the batch file working:

    https://images2.imgbox.com/95/59/l7tvGD9R_o.png

    If you want the batch file to return only one kind of stream (instead of all 5 kinds), just replace the asterisk inside the batch file (there is only one) with the desired stream's name in the server's json output (i.e., replace "*" with "hls_stream" or "shoutcast_stream" or "secure_rtmp_stream" or "secure_hls_stream" or "secure_shoutcast_stream").
    Batch file works well. Wonder how long until they break it? Thanks for the work.

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •  




     
Our Conferences
Useful Contacts
Community


Contact Us