#!/usr/bin/python3 import requests api_url = 'http://www.fipradio.fr/livemeta/7' def get_all(): r = requests.get(api_url) if r.status_code != 200: msg = "Got status code %d for %s" msg %= (r.status_code, api_url) raise RuntimeError(msg) return r.json() def get_current(): datas = get_all() position = datas['levels'][0]['position'] item_id = datas['levels'][0]['items'][position] item = datas['steps'][item_id] return item def format_current(): item = get_current() infos = """Title :\t\t{title} Authors :\t{author} Album :\t\t{album} Visual :\t{image} Youtube :\t{youtube} """ return infos.format( title = item['title'].title(), author = item['authors'].title(), album = item['titreAlbum'].title(), image = item['visual'], youtube = item['lienYoutube']) def icecast_infos(): item = get_current() infos = """{title} - {author} ({album})""" return infos.format( title = item['title'].title(), author = item['authors'].title(), album = item['titreAlbum'].title()) def icecast_url_update(host, mount, login = None, password = None): infos = icecast_infos() url = "http://{host}/admin/medata?mount={mount}&mode=updinfo&song={infos}" url = url.format( host = host, mount = mount, infos = infos) auth = None if login is not None and password is not None: auth = (login, password) res = requests.get(url, auth) if r.status_code != 200: msg = "Got status code %d for %s" msg %= (r.status_code, url) raise RuntimeError(msg) print(icecast_infos())