Пример #1
0
def catalogue_movies(certificate='', env='quality'):
    """Test playability of every movie in the catalogue
    """
    url = f'http://client.{env}.nowtv.bskyb.com/catalogue/programs?limit=20&offset='
    umv = get_umv()

    headers = {'cache-control': 'no-cache'}

    for offset in range(0, 1000, 20):
        url_offset = '{}{}'.format(url, offset)
        Verbose().output(url_offset, end=' ')

        response = requests.request('GET', url_offset, headers=headers)

        if response.status_code == 200:
            Verbose().output('Got a catalogue of {} bytes'.format(
                len(response.text)))
            catalogue = response.json()

            for content in catalogue['list']:
                crid = content.get('id', 'n/a')
                title = AsJson(content).get("title", "n/a")
                # matching cert or no cert filter
                if certificate and content.get(
                        'certificate', 'x') == certificate or not certificate:
                    if in_atom(crid) and playout(umv, crid, env):
                        print(
                            f"{content.get('certificate', ''):<3} {title:<50} {crid:<15} {content.get('uri', 'n/a'):<120} Ends: {end_date(content)}"
                        )
        else:
            print('No data')
            return
Пример #2
0
def test_verbosity_level_reached(capsys):
    Verbose().set(2)
    Verbose().output('level is set to 2', verbosity=1)
    out, err = capsys.readouterr()
    assert 'level is set to 2' in out

    Verbose().set(3)
    Verbose().output('level is set to 3', verbosity=1)
    out, err = capsys.readouterr()
    assert 'level is set to 3' in out
Пример #3
0
def in_atom(crid):
    url = 'http://e2e.dev.aws.atom.sky.com/adapter-atlas/v1/query/content_id/' + crid

    headers = {'x-skyott-proposition': "NOWTV", 'x-skyott-territory': "GB", 'x-skyott-device': "MOBILE", 'x-skyott-platform': "IOS", 'cache-control': "no-cache"}

    response = requests.get(url, headers=headers, timeout=5)
    Verbose().output(f'Atom lookup request: {url}\nReturned: {response.status_code}')
    Verbose().output(f'{pformat(response.json())}', verbosity=1)
    if response.status_code == 200:
        return True

    return False
Пример #4
0
def test_borg():
    """There is only one Borg..."""
    Verbose().set()
    borg = Verbose()
    assert Verbose().level()
    assert borg.level()

    borg.unset()
    assert not borg.level()
Пример #5
0
def playout(umv, crid, env='quality'):
    url = f'http://playout.{env}.nowtv.bskyb.com/vod/{crid}'
    headers = {
        'authorization': umv,
        'X-NowTV-DeviceID': 'playps3 NowTV_Player;1;PS3;Win32',
        'X-NowTV-ClientID': 'ps3 client crosstv:1.5.1',
    }

    Verbose().output(f'Request: {url}')
    response = requests.get(url, headers=headers, timeout=5)
    Verbose().output(f'Returned: {response.status_code}')

    if response.status_code == 200:
        Verbose().output(f'{pformat(response.json())}', verbosity=1)
        return True
    Verbose().output(f'{pformat(response.json())}')
    return False
Пример #6
0
def command_line_runner(argv=None):
    parser = get_parser()
    if argv is None:
        argv = sys.argv

    if len(argv) == 1:
        parser.print_usage()
        return

    args = parser.parse_args(argv[1:])

    if args.verbose:
        Verbose().set(level=args.verbose)

    # Show crid details
    if args.crid:
        catalogue_content(args.crid, args.env)
        return

    # List all QA crids
    if args.list_crids:
        assets.list_titles()
        return

    # Find collections in the catalogue
    if args.collections:
        catalogue_collections(args.env)
        return

    # Find playable movies in the catalogue
    if args.movies:
        catalogue_movies(certificate=args.with_cert, env=args.env)
        return

    # Playout title|crid
    if args.asset:
        # asset can be a crid or a title
        crid = assets.get_crid(' '.join(args.asset))
        x = ' '.join(args.asset)
        print(f'Looking for: {x}')

        if not crid:
            crid = args.asset[0]

        print(f'Using: {crid}')
        if play(crid, env=args.env):
            print('Playable')
            return
        else:
            print('Not playable')
            return 1
Пример #7
0
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import argparse
import logging
import sys

from playable.usernames import Usernames
from playable.assets import Assets
from playable.playout import play, catalogue_movies, catalogue_collections, catalogue_content
from playable.verbose import Verbose

users = Usernames()
assets = Assets()
verbose = Verbose()

logging.basicConfig(level=logging.INFO, format='%(message)s')


def get_parser():
    parser = argparse.ArgumentParser(description='Playout tool')
    parser.add_argument('--collections',
                        action='store_true',
                        default=False,
                        help='Find collections in the catalogue')
    parser.add_argument('--crid',
                        action='store',
                        default='',
                        help='Show crid details from the catalogue')
    parser.add_argument('--movies',
                        action='store_true',
                        default=False,
Пример #8
0
def test_status():
    Verbose().unset()
    assert Verbose().level() == 0
    Verbose().set()
    assert Verbose().level() == 1
Пример #9
0
def test_verbosity_level_under(capsys):
    Verbose().set(0)
    Verbose().output('Hide unless level is set to 1 or more', verbosity=1)
    out, err = capsys.readouterr()
    assert '' == out
Пример #10
0
def test_verbosity_level_defaults(capsys):
    Verbose().set()
    Verbose().output('You can not hide this', verbosity=0)
    out, err = capsys.readouterr()
    assert 'You can not hide this' in out
Пример #11
0
def test_output_supressed(capsys):
    """Output to stdout suppressed """
    Verbose().unset()
    Verbose().output('This will always be hidden')
    out, err = capsys.readouterr()
    assert '' == out
Пример #12
0
def test_output(capsys):
    """Output to stdout"""
    Verbose().set()
    Verbose().output('show when true')
    out, err = capsys.readouterr()
    assert 'show when true' in out
Пример #13
0
def get_umv():
    users = Usernames
    scratchy = users.get('scratch_tester')
    umv = session(scratchy)
    Verbose().output('Using user: scratch_tester', verbosity=1)
    return umv