Esempio n. 1
0
def execute(args, options):
    login = args['--login']

    file_path = check_file(args)

    csv_reader = CsvReader(file_path)
    csv_reader.open()

    game_count = csv_reader.rowCount

    if not args['--force']:
        sys.stdout.write(
            "You are about to delete %s games in you collection (%s), "
            "please enter the number of games displayed here to confirm you want to continue: "
            % (game_count, login))

        if raw_input() != game_count.__str__():
            Logger.error(
                'Operation canceled, number does not match (should be %s).' %
                game_count,
                sysexit=True)
            return

    Logger.info("Deleting games for '%s' account..." % login)

    with WebDriver('collection-delete', args, options) as web_driver:
        if not LoginPage(web_driver.driver).authenticate(
                login, args['--password']):
            sys.exit(1)

        Logger.info("Deleting %s games..." % game_count)
        game_page = GamePage(web_driver.driver)
        csv_reader.iterate(lambda row: game_page.delete(row))
        Logger.info("Deletion has finished.")
Esempio n. 2
0
def execute(args, options):
    login = args['--login']

    file_path = check_file(args)

    csv_reader = CsvReader(file_path)
    csv_reader.open()

    game_count = csv_reader.rowCount

    if not args['--force']:
        sys.stdout.write(
            "You are about to delete %s games in you collection (%s), "
            "please enter the number of games displayed here to confirm you want to continue: "
            % (game_count, login))

        if raw_input() != game_count.__str__():
            Logger.error('Operation canceled, number does not match (should be %s).' % game_count,
                         sysexit=True)
            return

    Logger.info("Deleting games for '%s' account..." % login)

    with WebDriver('collection-delete', args, options) as web_driver:
        if not LoginPage(web_driver.driver).authenticate(login, args['--password']):
            sys.exit(1)

        Logger.info("Deleting %s games..." % game_count)
        game_page = GamePage(web_driver.driver)
        csv_reader.iterate(lambda row: game_page.delete(row))
        Logger.info("Deletion has finished.")
Esempio n. 3
0
def execute(args, options):
    login = args['--login']

    file_path = check_file(args)

    csv_reader = CsvReader(file_path)
    csv_reader.open()

    Logger.info("Importing games for '%s' account..." % login)

    with WebDriver('collection-import', args, options) as web_driver:
        if not LoginPage(web_driver.driver).authenticate(login, args['--password']):
            sys.exit(1)

        Logger.info("Importing %s games..." % csv_reader.rowCount)
        game_page = GamePage(web_driver.driver)
        csv_reader.iterate(lambda row: game_page.update(row))
        Logger.info("Import has finished.")
Esempio n. 4
0
def execute(args):
    login = args['--login']

    file_path = check_file(args)

    csv_reader = CsvReader(file_path)
    csv_reader.open()

    game_count = csv_reader.rowCount

    if not args['--force']:
        sys.stdout.write(
            "You are about to delete %s games in you collection (%s), "
            "please enter the number of games displayed here to confirm you want to continue: "
            % (game_count, login))

        if raw_input() != game_count.__str__():
            Logger.error(
                'Operation canceled, number does not match (should be %s).' %
                game_count,
                sysexit=True)
            return

    Logger.info("Deleting games for '%s' account..." % login)

    cj = cookielib.CookieJar()
    opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(cj))
    Logger.info("Authenticating...", break_line=False)
    opener.open(
        BGG_BASE_URL + '/login',
        urlencode({
            'action': 'login',
            'username': login,
            'password': args['--password']
        }))
    if not any(cookie.name == "bggusername" for cookie in cj):
        Logger.info(" [error]", append=True)
        Logger.error("Authentication failed for user '%s'!" % login,
                     sysexit=True)
    Logger.info(" [done]", append=True)

    Logger.info("Deleting %s games..." % game_count)
    csv_reader.iterate(lambda row: game_deleter(opener, row))
    Logger.info("Deletion has finished.")
Esempio n. 5
0
def execute(args, options):
    login = args['--login']

    file_path = check_file(args)

    csv_reader = CsvReader(file_path)
    csv_reader.open()

    Logger.info("Importing games for '%s' account..." % login)

    with WebDriver('collection-import', args, options) as web_driver:
        if not LoginPage(web_driver.driver).authenticate(
                login, args['--password']):
            sys.exit(1)

        Logger.info("Importing %s games..." % csv_reader.rowCount)
        game_page = GamePage(web_driver.driver)
        csv_reader.iterate(lambda row: game_page.update(row))
        Logger.info("Import has finished.")
Esempio n. 6
0
        update_collid(opener, collid, 'weight', {'weight': row['weight']})
    if 'comment' in row.keys():
        update_collid(opener, collid, 'comment', {'value': row['comment']})
    if 'conditiontext' in row.keys():
        update_collid(opener, collid, 'conditiontext', {'value': row['conditiontext']})
    if 'wantpartslist' in row.keys():
        update_collid(opener, collid, 'wantpartslist', {'value': row['wantpartslist']})
    if 'haspartslist' in row.keys():
        update_collid(opener, collid, 'haspartslist', {'value': row['haspartslist']})
    if 'wishlistcomment' in row.keys():
        update_collid(opener, collid, 'wishlistcomment', {'value': row['wishlistcomment']})
 
 
 def execute(args):    login = args['--login']

    file_path = check_file(args)

    csv_reader = CsvReader(file_path)
    csv_reader.open()

    Logger.info("Importing games for '%s' account..." % login)

    cj = cookielib.CookieJar()
    opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(cj))
    Logger.info("Authenticating...", break_line=False)
    opener.open(BGG_BASE_URL + '/login', urlencode({
        'action': 'login', 'username': login, 'password': args['--password']}))
    if not any(cookie.name == "bggusername" for cookie in cj):
        Logger.info(" [error]", append=True)
        Logger.error("Authentication failed for user '%s'!" % login, sysexit=True)
    Logger.info(" [done]", append=True)
Esempio n. 7
0
def execute(args, options):
    print('Executing!')
    login = args['--login']

    file_path = check_file(args)

    csv_reader = CsvReader(file_path)
    csv_reader.open()
    rows = []
    #    try:
    Logger.info("Parsing input file '{}'...".format(file_path))
    csv_reader.iterate(lambda row: rows.append(row))
    #Logger.info("Found %s games to put in collection..." % csv_reader.rowCount)
    rows.reverse()
    firstrow = rows[0]
    loop = 0

    Logger.info("Importing {} games to collection of '{}' ...".format(
        csv_reader.rowCount, login))
    while rows:
        try:
            with WebDriver('collection-import', args, options) as web_driver:
                if not LoginPage(web_driver.driver).authenticate(
                        login, args['--password']):
                    sys.exit(1)
                #input("Kill Firefox, then Press Enter to continue...")
                game_page = GamePage(web_driver.driver)
                while rows:
                    row = rows.pop()
                    if firstrow is None or firstrow == row:
                        loop += 1
                        if loop >= LOOPLIMIT:
                            Logger.info(
                                "Loop limit of {} reached.".format(loop))
                            return
                        Logger.info('Loop {} (maximum {})'.format(
                            loop, LOOPLIMIT))
                        if rows:
                            firstrow = rows[0]
                            Logger.info('First assigned {}'.format(
                                firstrow['objectname']))
                        else:
                            firstrow = None
                            Logger.info('First assigned None')

                    Logger.info('(BGGID {}) Name: {} ({} game left)'.format(
                        row['objectid'], row['objectname'],
                        len(rows) + 1))

                    try:
                        val = game_page.update(row)
                        Logger.info('update returned {}'.format(val))

                        if val:
                            #Logger.info('Updated (BGGID {0}) "{1}"'.format(row['objectid'],row['objectname']))
                            Logger.info('(BGGID {}) Name: {} UPDATED!'.format(
                                row['objectid'], row['objectname'], len(rows)))
                            #  ({} game left)
                        else:
                            rows.insert(0, row)
                            Logger.info(
                                'returned False??, back in queue.'.format(
                                    len(rows)))  #  ({} game left)

                    except WebDriverException:
                        rows.insert(0, row)
                        Logger.info(
                            'Exception occurred, back in queue.'.format(
                                len(rows)))  # ({} left)
                        Logger.info(
                            'WebDriverException occurred, restarting browser.')
                        raise

                    except Exception as e:
                        traceback.print_exc(limit=2, file=sys.stdout)

                        rows.insert(0, row)
                        Logger.info(
                            'Exception occurred, back in queue.'.format(
                                len(rows)))  #  ({} left)

                        #badrows.append(row)
                # for row in rows:
                # try:
                # game_page.update(row)
                # except:
                # badrows.append(row)
                # print
        except WebDriverException:
            pass
    Logger.info("Import has finished.")