You are not logged in.
Pages: 1
I got this code Matthew Gyurgyik command line mplayer and created a new version for python3.
So few free to listen iHeartRadio from everywhere.
Station Default : 100z New york
#!/usr/bin/python3
import subprocess
import threading
import argparse
import time
import urllib.request as urlRequest
import xml.etree.ElementTree as ET
import os
import datetime
import signal
import sys
class iheartRadio():
def __init__(self):
self.stations=[
('whtz-fm',"New York's Hit Music Station"),
('khks-fm',"Dallas-Ft. Worth's Hit Music"),
('wksc-fm',"Chicago's Hit Music Station"),
('wjmn ',"Boston’s #1 For Hip-Hop and Hit Music")]
self.station = self.stations[0][0]
self.songList = {}
def epilog(self):
epilog = 'Some options : \n'
for radio,desc in self.stations:
epilog += radio + ((7-len(radio))*' ') + ' : ' +desc + '\n'
return epilog
def getXML(self):
data= urlRequest.urlopen('http://p2.'+self.station+'.ccomrcdn.com/player/player_dispatcher.html?section=radio&action=listen_live').read()
self.xml = ET.fromstring(data)
def getSongInfo(self):
self.getXML()
artists=self.xml.findall('ListenLiveInitialize/JustPlayed/song/artist')
titles=self.xml.findall('ListenLiveInitialize/JustPlayed/song/track')
for i in range(len(artists)):
artist = artists[i].attrib['name']
song = titles[i].attrib['track_title']
if not song in self.songList:
self.songList[song] = artist
print(artist + " - " + song)
def startRadio(self):
self.getXML()
rtmpurl='"'+self.xml.find("ListenLiveInitialize/StreamInfo/stream").attrib['primary_location']+'"'
self.proc = subprocess.Popen('mplayer ' + rtmpurl +' -novideo -ao alsa -quiet', stdout=subprocess.PIPE, stdin=subprocess.PIPE, stderr=subprocess.PIPE , shell=True)
def keepMpalyer(self):
while self.keepPlaying:
self.proc.wait()
if self.keepPlaying:
self.startRadio()
print('Thread joined')
def main(self):
parser = argparse.ArgumentParser(description='Listen iHeart Radio from everywhere.',epilog=self.epilog(),formatter_class=argparse.RawDescriptionHelpFormatter)
parser.add_argument('-r','--radio', dest='radio', type=str,help='Radio String ID')
parser.add_argument('-t','--time', dest='time', type=int,help='Time Stream will Play (in minutes)')
args = parser.parse_args()
if args.radio:
self.radio = args.radio
if args.time:
signal.signal(signal.SIGALRM, self.handler)
signal.alarm(args.time*60)
self.startRadio()
print('Playing ' + self.station)
self.getSongInfo()
self.keepPlaying = True
self.threadKeepingMplayer = threading.Thread(target=self.keepMpalyer,args=(),group=None)
self.threadKeepingMplayer.start()
while True:
self.getSongInfo()
time.sleep(30)
def handler(self, signum, frame):
self.keepPlaying = False
self.proc.kill()
self.threadKeepingMplayer.join()
sys.exit(0)
if __name__ == "__main__":
radio = iheartRadio()
signal.signal(signal.SIGTERM, radio.handler)
signal.signal(signal.SIGINT, radio.handler)
radio.main()
Offline
Pages: 1