I Heart Radio Internet Radio Streaming Skill - testing and feedback


This is a follow-up to my previous skill which uses TuneIn to find internet radio streams. I Heart Radio has a slightly different set of stations and is skewed towards the US market and commercial radio stations. The combination of TuneIn and IHeartRadio should get 95% of worldwide radio stations.

Important notes:

  • Most of the IHeartRadio streams are AAC or MP4 streams so the skill uses vlc for streaming instead of mpg123. This currently is problematic as VLC doesn’t seem to install nicely using the combination of MSM and the manifest.yml file. I’ve got a thread going in chat to try and clean that up but in the meantime the easiest thing to do so you can test this skill is to just apt-get install vlc yourself prior to installing the skill.
  • I also ran into problems getting a proper python wrapper of libvlc working on mark-1 hardware. For that reason I launch vlc directly and then control it using the remote control commands over a pipe.

How to install mycroft-skill-iheartradio

  • Install mycroft-skill-iheartradio by
    • Using msm to install from my repo:

msm install https://github.com/johnbartkiw/mycroft-skill-iheartradio

  • mycroft-skill-iheartradio connects to I Heart Radio Internet radio directory
    • This skill uses the public I Heart Radio web API that doesn’t require an account or any authentication.
    • There are no settings required for this skill

How to test mycroft-skill-iheartradio

After install there are no further steps to configure as there are no settings.

  • “Play KEXP (on|with|using) I Heart Radio”
  • “Play Jack FM radio”
  • “Play Jazz 24 internet radio”
  • “Play 80s Metal radio (on|with|using) I Heart Radio”
  • “Play 70s Country internet radio (on|with|using) I Heart Radio”
  • Speak `Intent phrase “Stream” followed by a station name, number, genre, etc. to search for.
  • Valid intent forms:
  • “Stream KEXP”
  • “Stream Jack FM Radio”
  • “Stream Jazz 24 internet radio”
  • “Stream 80s Metal (on|with|using) tune in”
  • “Stream 70s Country radio (on|with|using) tune in”
  • “Stream 99.9 internet radio (on|with|using) tune in”
  • “Stream 107.7 radio station”
  • “Stream NPR News internet radio station”
  • “Stream KEXP radio station (on|with|using) tune in”
  • “Stream KEXP internet radio station (on|with|using) tune in”
  • Mycroft should say it’s starting to stream a station name and then the radio audio stream should start. If it can’t find any station that matches your search criteria then it will tell you that if couldn’t find any stations matching.

Where feedback on mycroft-skill-iheartradio should be directed:

Feel free to leave feedback here or as an issue on the github repo (https://github.com/johnbartkiw/mycroft-skill-iheartradio/issues )


The pip- package for the Python-wrapper is „python-vlc“. You may want to have a look at my Amazonmusic skill which uses VLC as well and runs fine on my Mark-1.


That still doesn’t work for me. I get a similar error when I try to install your Amazon skill:

22:17:15.414 - mycroft.skills.core:load_skill:166 - ERROR - Failed to load skill: amzn-music-skill.domcross
Traceback (most recent call last):
  File "/home/johnbart/AdditionalSoftware/mycroft/mycroft-core/mycroft/skills/core.py", line 132, in load_skill
    skill = skill_module.create_skill()
  File "/opt/mycroft/skills/amzn-music-skill.domcross/__init__.py", line 602, in create_skill
    return AmznMusicSkill()
  File "/opt/mycroft/skills/amzn-music-skill.domcross/__init__.py", line 20, in __init__
    self.mediaplayer = VlcService(config={'low_volume': 10, 'duck': True})
  File "/home/johnbart/AdditionalSoftware/mycroft/mycroft-core/mycroft/audio/services/vlc/__init__.py", line 24, in __init__
    self.instance = vlc.Instance()
AttributeError: module 'vlc' has no attribute 'Instance'


This indicates that VLC could not be initialized from the Mycroft-audio service. Does this error persist after a full restart of Mycroft (or reboot of the machine running Mycroft)?


Yes. The problem persists after a full restart. Looking at the results of mycroft-pip list I see:

python-vlc 1.1.2
vlc 2018.11.20

and doing an apt install shows vlc as already installed.


I only have the python-vlc installed. To my knowledge the vlc 2018.11.20 package is a set of scripts for MacOS only. Try removing it by mycroft-pip uninstall vlc


Wow I think that did it! Maybe a weird dependency issue then?

I’ll do a bit more testing to verify and then update my skill to use this.

Thx for the help.


I have changes up to move back to the older requirements.* format and switching to use the VLCService. I’ve done basic testing on my Linux box and Mark-1 and it seems to be working decently.