Пример #1
0
def main():
    parser = cli.init_argparser()
    parser.add_argument('-f',
                        '--folder_name',
                        help='Elisa Viihde Simpsonit folder name')
    parser.add_argument('-s',
                        '--season_prefix',
                        help='prefix for season folder name')
    params = parser.parse_args()

    username = cli.read_input(params.user, 'Elisa Viihde Username')
    password = cli.read_password(params.passfile, 'Elisa Viihde Password')

    e = elisaviihde.Elisaviihde()
    if not e.login(username, password):
        return

    folder_name = cli.read_input(
        params.folder_name, 'Elisa Viihde Simpsonit folder name [Simpsonit]',
        u'Simpsonit')
    season_folder_name = cli.read_input(
        params.season_prefix,
        'prefix for season folder name or "None" [Season ]', u'Season ')
    if season_folder_name == 'None':
        season_folder_name = u''

    simpsonit_folder = e.find_folder_by_name(folder_name)
    if simpsonit_folder is None:
        print('Folder', folder_name, 'not found')
        return

    episodes = simpsonitorgparser.parse_schedule()
    simpsonit_folder_id = simpsonit_folder['id']
    root_simponit_recordings = e.recordings(simpsonit_folder_id)

    to_be_moved = []  # list of (recording, episode) pairs
    for recording in root_simponit_recordings:
        episode = find_episode(episodes, recording)
        if episode:
            to_be_moved.append((recording, episode))
    print('Found', len(to_be_moved), 'episodes to be moved')

    answer = get_input("Enter 'y' to continue, anything else to cancel: ")
    if answer == 'y':
        for move in to_be_moved:
            recording = move[0]
            episode = move[1]
            target_folder = e.find_or_create_subfolder(
                season_folder_name + str(episode['season']),
                simpsonit_folder_id)
            try:
                status = e.move(recording['programId'], target_folder['id'])
            except TypeError:
                print("Failed to move", recording['programId'])
                continue
            print('MOVED:', status, recording['startTime'], episode['name'],
                  'to', target_folder['name'])
        print("Moving done.")
    else:
        print("Moving canceled.")
Пример #2
0
def main():
    parser = cli.init_argparser()
    parser.add_argument('-f', '--folder_name')
    parser.add_argument('-m', '--max_auto_delete')
    params = parser.parse_args()

    username = cli.read_input(params.user, 'Elisa Viihde Username')
    password = cli.read_password(params.passfile, 'Elisa Viihde Password')

    e = elisaviihde.Elisaviihde()
    if not e.login(username, password):
        return

    folder_name = cli.read_input(params.folder_name,
                                 'Look from folder (enter for all)')
    if folder_name:
        folder = e.find_folder_by_name(folder_name)
        if folder is None:
            print 'Folder', folder_name, 'not found'
            return
    else:
        folder = e.find_folder_by_id(0)

    recordings = e.ls_recordings_recursive(folder, [])
    found_duplicates = find_duplicates(recordings)

    answer = 'n'
    if params.max_auto_delete is not None:
        if len(found_duplicates) <= int(params.max_auto_delete):
            answer = 'y'
    elif len(found_duplicates) > 0:
        answer = raw_input(
            "Enter 'y' to delete duplicates, anything else to cancel: ")

    if answer == 'y':
        for key, recordings in found_duplicates.iteritems():
            print 'Processing:', key[0], ';', key[1]
            first = True
            for recording in recordings:
                if first:
                    print 'Kept first', recording['startTime'], recording[
                        'channel']
                    first = False
                else:
                    status = e.delete(recording['programId'])
                    print 'DELETED', status, recording['startTime'], recording[
                        'channel']
        print 'Delete duplicates done.'
    else:
        print 'Delete duplicates canceled.'
        exit(-1)
Пример #3
0
def main():
    parser = cli.init_argparser()
    parser.add_argument('-f', '--folder_name', help='Elisa Viihde Simpsonit folder name')
    parser.add_argument('-s', '--season_prefix', help='prefix for season folder name')
    params = parser.parse_args()

    username = cli.read_input(params.user, 'Elisa Viihde Username')
    password = cli.read_password(params.passfile, 'Elisa Viihde Password')

    e = elisaviihde.Elisaviihde()
    if not e.login(username, password):
        return

    folder_name = cli.read_input(params.folder_name,
                                 'Elisa Viihde Simpsonit folder name [Simpsonit]',
                                 u'Simpsonit')
    season_folder_name = cli.read_input(params.season_prefix,
                                        'prefix for season folder name or "None" [Season ]',
                                        u'Season ')
    if season_folder_name == 'None':
        season_folder_name = u''

    simpsonit_folder = e.find_folder_by_name(folder_name)
    if simpsonit_folder is None:
        print 'Folder', folder_name, 'not found'
        return
    
    episodes = simpsonitorgparser.parse_schedule()
    simpsonit_folder_id = simpsonit_folder['id']
    root_simponit_recordings = e.recordings(simpsonit_folder_id)
    
    to_be_moved = []  # list of (recording, episode) pairs
    for recording in root_simponit_recordings:
        episode = find_episode(episodes, recording)
        if episode:
            to_be_moved.append((recording, episode))
    print 'Found', len(to_be_moved), 'episodes to be moved'

    answer = raw_input("Enter 'y' to continue, anything else to cancel: ")
    if answer == 'y':
        for move in to_be_moved:
            recording = move[0]
            episode = move[1]
            target_folder = e.find_or_create_subfolder(season_folder_name + str(episode['season']),
                                                       simpsonit_folder_id)
            status = e.move(recording['programId'], target_folder['id'])
            print 'MOVED:', status, recording['startTime'], episode['name'], 'to', target_folder['name']
        print "Moving done."
    else:
        print "Moving canceled."
Пример #4
0
def main():
    parser = cli.init_argparser()
    parser.add_argument('-f', '--folder_name')
    parser.add_argument('-m', '--max_auto_delete')
    params = parser.parse_args()

    username = cli.read_input(params.user, 'Elisa Viihde Username')
    password = cli.read_password(params.passfile, 'Elisa Viihde Password')

    e = elisaviihde.Elisaviihde()
    if not e.login(username, password):
        return
          
    folder_name = cli.read_input(params.folder_name, 'Look from folder (enter for all)')
    if folder_name:
        folder = e.find_folder_by_name(folder_name)
        if folder is None:
            print('Folder', folder_name, 'not found')
            return
    else:
        folder = e.find_folder_by_id(0)

    recordings = e.ls_recordings_recursive(folder, [])
    found_duplicates = find_duplicates(recordings)
    
    answer = 'n'
    if params.max_auto_delete is not None:
        if len(found_duplicates) <= int(params.max_auto_delete):
            answer = 'y'
    elif len(found_duplicates) > 0:
        answer = get_input("Enter 'y' to delete duplicates, anything else to cancel: ")
    
    if answer == 'y':
        for key, recordings in found_duplicates.items():
            print('Processing:', key[0], ';', key[1])
            first = True
            for recording in recordings:
                if first:
                    print('Kept first', recording['startTime'], recording['channel'])
                    first = False
                else:
                    status = e.delete(recording['programId'])
                    print('DELETED', status, recording['startTime'], recording['channel'])
        print('Delete duplicates done.')
    else:
        print('Delete duplicates canceled.')
        exit(-1)
Пример #5
0
def main(args):
    pattern = get_date_pattern(parse_date(args.date), args.log_type)

    try:
        with cli.read_input(args.filepath, args.stdin) as f:
            print ''.join(split(f, pattern))
    except cli.CliError as e:
        raise argparse.ArgumentError(args.filepath, str(e))
Пример #6
0
def convert(args):
    """The `convert` subcommand"""
    pattern = get_pattern(args.pattern)
    try:
        with cli.read_input(args.filepath, args.stdin) as lines:
            logs = (parse_line(line, pattern) for line in lines if line.strip() != "")
            sys.stdout.write(json.dumps([log for log in logs if log is not None]))
    except cli.CliError as e:
        raise argparse.ArgumentError(args.filepath, str(e))
Пример #7
0
def main(args):
    with read_input(args["FILE"], args["-i"]) as f:
        data = cast_to_type(f, args["--datatype"])
        plt = plot_hist(data, args["--title"], args["--xlabel"], int(args["--bins"]))
        if args["show"]:
            plt.show()
        elif args["save"]:
            target = "{0}.png".format(os.path.splitext(args["FILE"])[0])
            plt.savefig(target)
            print("Saved to {target}".format(target=target))
        return 0
Пример #8
0
def main(args):
    with read_input(args['FILE'], args['-i']) as f:
        data = coerce_lines(f, args['--datatype'])
        plt = plot_hist(data, args['--title'], args['--xlabel'], int(args['--bins']))
        if args['show']:
            plt.show()
        elif args['save']:
            target = '{0}.png'.format(os.path.splitext(args['FILE'])[0])
            plt.savefig(target)
            print('Saved to {target}'.format(target=target))
        return 0
Пример #9
0
def main():
    parser = cli.init_argparser()
    params = parser.parse_args()

    username = cli.read_input(params.user, 'Elisa Viihde Username')
    password = cli.read_password(params.passfile, 'Elisa Viihde Password')

    e = elisaviihde.Elisaviihde(params.verbose)

    if not e.login(username, password):
        exit(-1)

    # From root up
    folder = e.find_folder_by_id(0)

    recordings = e.ls_recordings_recursive(folder, [])
    found_duplicates = find_duplicates(recordings, params.verbose)

    # If nothing to delete, end
    if len(found_duplicates) < 1:
        return

    # Loop-de-loop
    for key, recordings in found_duplicates.iteritems():
        if params.verbose > 0:
            print 'Processing:', key[0], ';', key[1]
        first = True
        for recording in recordings:
            if first:
                if params.verbose > 1:
                    print 'Kept first', recording['startTime'], recording[
                        'channel']
                first = False
            else:
                status = e.delete(recording['programId'])
                if params.verbose > 2:
                    print 'DELETED', status, recording['startTime'], recording[
                        'channel']
    if params.verbose > 0:
        print 'Delete duplicates done.'
Пример #10
0
def main():
    parser = cli.init_argparser()
    params = parser.parse_args()

    username = cli.read_input(params.user, 'Elisa Viihde Username')
    password = cli.read_password(params.passfile, 'Elisa Viihde Password')

    e = elisaviihde.Elisaviihde(params.verbose)

    if not e.login(username, password):
        exit(-1)

    # From root up
    folder = e.find_folder_by_id(0)

    recordings = e.ls_recordings_recursive(folder, [])
    found_duplicates = find_duplicates(recordings, params.verbose)

    # If nothing to delete, end
    if len(found_duplicates) < 1:
        return

    # Loop-de-loop
    for key, recordings in found_duplicates.iteritems():
        if params.verbose > 0:
            print 'Processing:', key[0], ';', key[1]
        first = True
        for recording in recordings:
            if first:
                if params.verbose > 1:
                    print 'Kept first', recording['startTime'], recording['channel']
                first = False
            else:
                status = e.delete(recording['programId'])
                if params.verbose > 2:
                    print 'DELETED', status, recording['startTime'], recording['channel']
    if params.verbose > 0:
        print 'Delete duplicates done.'
Пример #11
0
devices = partial(count_stats, f=lambda ua: ua.device.family)

oss = partial(count_stats, f=lambda ua: ua.os.family)
oss_version = partial(count_stats, f=lambda ua: ua_str(ua.os))


def write(c):
    for k, v in c.iteritems():
        print '{k}:{v}'.format(k=k, v=v)


if __name__ == '__main__':
    args = docopt(__doc__)

    if not any(args[k] for k in ['browsers', 'devices', 'oss']):
        args['browser'] = True

    with cli.read_input(args['FILE'], args['--stdin']) as f:
        logs = json.load(f)
        if args['browsers']:
            write((browsers_version if args['--fullname'] else browsers)(logs))
            exit(0)

        if args['devices']:
            write(devices(logs))
            exit(0)

        if args['oss']:
            write((oss_version if args['--fullname'] else oss)(logs))
            exit(0)