Esempio n. 1
0
def main(query, param_dict):
    # Make sure we got a clean config file
    try:
        nzbcli.read_config(args)
    except NZBCliError, e:
        prettystd.err(msg="{cfgError}! {e}\n".format(cfgError='{cfgError}',
                                                     e=e),
                      format_dict={'cfgError': 'NZBCliError'},
                      indent=0,
                      newline=True)
        return 1
Esempio n. 2
0
def _validate_choice(raw_choice, len_results):
    # Make sure choices are valid
    if raw_choice == 'A' or raw_choice == 'a':
        return range(0, len_results)
    elif raw_choice == 'N' or raw_choice == 'n':
        return 'N'
    elif re.match(r'^[0-9,-]+$', raw_choice):
        # split str into single digits and ranges. Note: I bet someone
        # smart would use an iterator here. 8)
        digits = []

        for digit in raw_choice.split(','):
            # make sure its a digit, its in the result range and
            # unique. Also, should we correct possible typos or raise
            # an Exception as soon as we find an invalid digit range?
            if (re.match(r'^[0-9]+$', digit)
                    and int(digit) in range(0, len_results + 1)
                    and int(digit) not in digits):
                digits.append(int(digit))
            elif re.match(r'[0-9]+-[0-9]+', digit):
                d_range = digit.split('-')
                if re.match(r'[0-9]+', (d_range[0] + d_range[1])):
                    if int(d_range[0]) < int(d_range[1]):
                        for d in range(int(d_range[0]), int(d_range[1]) + 1):
                            if (int(d) not in digits
                                    and int(d) in range(0, len_results + 1)):
                                digits.append(int(d))

        if len(digits) != 0:
            return digits

    # Only invalid entries should end up here
    prettystd.err(msg='{error}: Invalid choice, please {try} again.',
                  format_dict={
                      'error': 'Error',
                      'try': 'try'
                  },
                  indent=1,
                  newline=True)
    return None
Esempio n. 3
0
    prettystd.out(
        msg=
        "{indent} Starting NZB search for '{query}' (category: {category}).",
        format_dict={
            'indent': '>',
            'query': query,
            'category': args['category']
        },
        indent=0)
    # Query the newznab provider
    try:
        results = newznab.do_query(query=query, category=args['category'])
    except NZBCliError:
        prettystd.err(
            msg="-> {title}... :(",
            format_dict={'title': 'no results'},
            indent=1,
        )
        return 1
    # Present results and get download targets
    print results
    download_list = _present_results(results)

    if download_list is None:
        return

    # Retrieve nzburls using the rss api from nzbindex.nl
    for url in nzbindex.get_links(download_list):
        # Print success/fail
        if url['url']:
            success = 'OK!'