[mythtv-users] Can commercial flagging be scheduled?

Hika van den Hoven hikavdh at gmail.com
Sat Jan 30 22:10:18 UTC 2016


Hoi Mark,

Saturday, January 30, 2016, 8:02:13 AM, you wrote:

>> On 30 Jan 2016, at 12:43 pm, DryHeat122 . <dryheat122 at gmail.com> wrote:
>> 
>> Thanks for the responses.  If I can schedule job queue start/end why would I need the script option?
>> 

> The number one reason in my mind would be because it would stop any
> jobs running, not just commflag. However not having metadata lookup
> run in real time may not be significant either.

Try the following Python script. Run it with --help to get the options

#!/usr/bin/env python2
# -*- coding: utf-8 -*-

import argparse, socket, sys, traceback, requests

def read_commandline():
    parser = argparse.ArgumentParser(description='Start LiveTV on the (optionaly) given channel.')

    parser.add_argument('-b', '--backend', type=str, required=True,
        metavar='<hostname>', default=None, dest = 'backend',
        help='backendend dns hostname/ip-address')

    parser.add_argument('-p', '--back_port', type=int, required=False,
        metavar='<portnr>', default=6544, dest = 'back_port',
        help='the backend api portnumber, default is 6544')

    parser.add_argument('-H', '--hostname', type=str, required=False,
        metavar='<hostname>', default=None, dest = 'hostname',
        help='The MythTV hostname if not equal to the dns-name')

    parser.add_argument('-c', '--commflagging-off', required=False,
        default=False, dest = 'commflagging_off', action = 'store_true',
        help='set this to turn commflagging off else turn it on')

    try:
        return parser.parse_args()

    except:
        return

def post_api(url, postdata=None):
    try:
        headers = {'User-Agent':'0.27 Python Services API Client',
                            'Accept': 'application/json'}
        url_request = requests.post(url, headers = headers, data = postdata)
        return url_request.json()

    except requests.ConnectionError:
        sys.stderr.write('The host is not available!\n')

    except:
        sys.stderr.write('An unexpected error has occured:\n')
        sys.stderr.write(traceback.format_exc())

def check_hostname(args):
    url = 'http://%s:%s/Myth/GetHosts' % (args.backend, args.back_port)
    host_list = post_api(url)['StringList']
    if host_list == None:
        return(False)

    if args.hostname == None:
        args.hostname =args.backend

    for h in host_list:
        if h.lower() == args.hostname.lower():
            args.hostname = h
            return(True)

    else:
        sys.stderr.write('The given Backend/Hostname: %s is not known!\n' % args.hostname)
        return(False)

def get_setting(args, key):
    url = 'http://%s:%s/Myth/GetSetting' % (args.backend, args.back_port)
    postdata ={'HostName': args.hostname,'Key': key}
    reply = post_api(url, postdata)
    if reply != None:
        return reply['SettingList']['Settings'][key]

def put_setting(args, key, value):
    url = 'http://%s:%s/Myth/PutSetting' % (args.backend, args.back_port)
    postdata ={'HostName': args.hostname,'Key': key, 'Value': value}
    reply = post_api(url, postdata)
    if reply == None:
        return False

    return(reply['bool'] == 'true')

def main():
    try:
        # get the commandline parameters
        args = read_commandline()
        if args == None:
            return(0)

        # Check if the given hostname is known
        if not check_hostname(args):
            return(2)

        # Check if JobAllowCommFlag is set
        JobAllowCommFlag = get_setting(args, 'JobAllowCommFlag')
        if JobAllowCommFlag == None:
            sys.stderr.write('Invalid HostName: %s\n' % args.hostname)
            return(2)

        # Try to set/unset it
        if JobAllowCommFlag == '1' and args.commflagging_off:
            if not put_setting(args, 'JobAllowCommFlag', '0'):
                sys.stderr.write('The command returned False!\n')

        elif JobAllowCommFlag == '0' and not args.commflagging_off:
            if not put_setting(args, 'JobAllowCommFlag', '1'):
                sys.stderr.write('The command returned False!\n')

        else:
            sys.stderr.write('No need to change anything!\n')

    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())



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