else: CHUNK = 16 * 1024 with open(dest_url, 'wb') as fp: while True: chunk = image.read(CHUNK) if not chunk: break fp.write(chunk) foo = db.table('anime').set(image_path=os.path.join( "img", "anime", str(anime_id), os.path.basename(dest_url))).where( id=int(anime_id)).limit(1).update() return True if __name__ == '__main__': bot = animurecs_bot.animurecs('fetch_mal_anime', animurecs_modules, config_file='config.txt') db = bot.dbs['animurecs'] mal_session = myanimelist.session.Session() parser = argparse.ArgumentParser() parser.add_argument("--start", default=1, help="start anime ID for range fetch") parser.add_argument("--end", default=None, help="end anime ID for range fetch") parser.add_argument("--only_new", action='store_true', help="only update with new anime") args = parser.parse_args()
#!/usr/bin/python # -*- coding: utf-8 -*- import animurecs_bot, animurecs_modules import datetime, pytz import decimal if __name__ == '__main__': bot = animurecs_bot.animurecs('test', animurecs_modules, config_file='./config.txt') user_lists = {} for row in bot.dbs['animurecs'].table('anime_lists').fields( 'user_id', 'anime_id', 'time', 'score').order('user_id ASC, anime_id ASC, time DESC').query(): if row['user_id'] not in user_lists: user_lists[row['user_id']] = {} if row['anime_id'] not in user_lists[row['user_id']]: user_lists[row['user_id']][row['anime_id']] = row elif row['time'] > user_lists[row['user_id']][row['anime_id']]['time']: user_lists[row['user_id']][row['anime_id']] = row for user in user_lists: for anime_id in user_lists[user].keys(): if user_lists[user][anime_id]['score'] == decimal.Decimal(0.00): del user_lists[user][anime_id] all_ratings = [ user_lists[u][a]['score'] for u in user_lists for a in user_lists[u] ]
zero_pad(dt.year, 4), zero_pad(dt.month, 2), zero_pad(dt.day, 2) ]) def get_max_user_id(queue): """Returns the highest user ID in the given queue. """ # get the idx of the user_id field. user_id_idx = queue._fields.index('user_id') print "" print "Exception detected, flushing queue. Highest user ID: " + str(max(queue, key=lambda x: x[user_id_idx])[user_id_idx]) if __name__ == '__main__': mal_session = myanimelist.session.Session() bot = animurecs_bot.animurecs('fetch_mal_lists', animurecs_modules, config_file='config.txt') db = bot.dbs['animurecs'] parser = argparse.ArgumentParser() parser.add_argument("--start", default=1, help="start user ID for range fetch") parser.add_argument("--end", required=True, help="end user ID for range fetch") parser.add_argument("--per_minute", default=6, help="number of users per minute to fetch, between 1 and 60 inclusive") parser.add_argument("--save_ids", default=False, help="filename in which to save user ID : username mapping") args = parser.parse_args() print "Calculating ID range..."
#!/usr/bin/python # -*- coding: utf-8 -*- import animurecs_bot, animurecs_modules import datetime,pytz import decimal if __name__ == '__main__': bot = animurecs_bot.animurecs('test', animurecs_modules, config_file='./config.txt') user_lists = {} for row in bot.dbs['animurecs'].table('anime_lists').fields('user_id', 'anime_id', 'time', 'score').order('user_id ASC, anime_id ASC, time DESC').query(): if row['user_id'] not in user_lists: user_lists[row['user_id']] = {} if row['anime_id'] not in user_lists[row['user_id']]: user_lists[row['user_id']][row['anime_id']] = row elif row['time'] > user_lists[row['user_id']][row['anime_id']]['time']: user_lists[row['user_id']][row['anime_id']] = row for user in user_lists: for anime_id in user_lists[user].keys(): if user_lists[user][anime_id]['score'] == decimal.Decimal(0.00): del user_lists[user][anime_id] all_ratings = [user_lists[u][a]['score'] for u in user_lists for a in user_lists[u]] all_rating_count = len(all_ratings) all_rating_mean = float(sum(all_ratings)) * 1.0 / all_rating_count all_rating_square_sum = 0 for u in user_lists: for a in user_lists[u]: