[mythtv-users] using mythtv as clockradio
Hika van den Hoven
hikavdh at gmail.com
Thu Jan 21 00:30:40 UTC 2016
Hoi Hika,
Thursday, January 21, 2016, 1:24:06 AM, you wrote:
> It is not by far ideal but. It at present it always sends a select
> after starting Live TV etc. So if the Guide is not enabled it is very
> inefficient!
> start_live_tv.py
> #!/usr/bin/env python2
> # -*- coding: utf-8 -*-
> import argparse, socket, urllib2, sys, re, traceback, time
> from xml.etree import cElementTree as ET
> def read_commandline():
> parser = argparse.ArgumentParser(description='Start LiveTV on the (optionaly) given channel.')
> parser.add_argument('-f', '--host', type=str, required=False,
> metavar='<hostname>', default=socket.gethostname(), dest = 'host',
> help='frontend dns hostname/ip-address, defaults to the local hostname')
> parser.add_argument('-p', '--portnumber', type=int, required=False,
> metavar='<portnr>', default=6547, dest = 'port',
> help='the frontend api portnumber, default is 6547')
> parser.add_argument('-c', '--channel', type=int, required=False,
> metavar='<channelnr>', default=None, dest = 'channel',
> help='the tv/radio channel to tune to')
> #~ parser.add_argument('-v', '--verbose', action='store_true', dest = 'verbose',
> #~ required=False, help='print the result to the screen')
> try:
> return parser.parse_args()
> except:
> return
> def is_idle(host, port):
> url = 'http://%s:%s/Frontend/GetStatus' % (host, port)
> try:
> #~ print urllib2.urlopen(url).read().decode('utf-8', 'ignore')
> response = ET.parse(urllib2.urlopen(url))
> for val in response.findall('./State/String'):
> if val.findtext('Key') == 'state':
> return (val.findtext('Value') == 'idle')
> except:
> sys.stderr.write('An unexpected error has occured:\n')
> sys.stderr.write(traceback.format_exc())
> def send_action(host, port, api_call):
> url = 'http://%s:%s/Frontend/SendAction?Action=%s' % (host,
> port, re.sub(' ', '%20', api_call))
> try:
> response = ET.parse(urllib2.urlopen(url))
> return response.findtext('.')
> except:
> sys.stderr.write('An unexpected error has occured:\n')
> sys.stderr.write(traceback.format_exc())
> def main():
> try:
> args = read_commandline()
> if args == None:
> return(0)
> if not is_idle(args.host, args.port):
> sys.stderr.write('The Frontend %s is busy or otherwise unavailable\n' % args.host)
> return(2)
> if send_action(args.host, args.port, 'Live TV') != 'true':
> sys.stderr.write('The Frontend %s returned False on starting Live TV:\n' % args.host)
> time.sleep(2)
> send_action(args.host, args.port, 'SELECT')
> time.sleep(2)
> if args.channel != None:
> ch = str(args.channel)
> for chn in ch:
> send_action(args.host, args.port, chn)
> send_action(args.host, args.port, 'SELECT')
> except:
> sys.stderr.write('An unexpected error has occured:\n')
> sys.stderr.write(traceback.format_exc())
> return(99)
> # and return success
> return(0)
> # end main()
> # allow this to be a module
> if __name__ == '__main__':
> sys.exit(main())
small correction on the end of the script
> time.sleep(2)
> if args.channel != None:
> ch = str(args.channel)
> for chn in ch:
> send_action(args.host, args.port, chn)
> send_action(args.host, args.port, 'SELECT')
should be:
time.sleep(2)
if args.channel != None:
ch = str(args.channel)
for chn in ch:
send_action(args.host, args.port, chn)
send_action(args.host, args.port, 'SELECT')
Tot mails,
Hika mailto:hikavdh at gmail.com
"Zonder hoop kun je niet leven
Zonder leven is er geen hoop
Het eeuwige dilemma
Zeker als je hoop moet vernietigen om te kunnen overleven!"
De lerende Mens
More information about the mythtv-users
mailing list