parser.add_argument('-V', '--vertical', dest='vertical', metavar='FILE', help='Vertical Montage File Name') parser.add_argument('-H', '--horizontal', dest='horizontal', metavar='FILE', help='Horizontal Montage File Name') parser.add_argument('-L', '--libdir', dest='libdir', metavar='DIRECTORY', help='imageutils directory') parser.add_argument('search') args = parser.parse_args() vargs = vars(args) sys.path.insert(0, os.path.join(os.path.dirname(__file__), '..', 'lib')) if args.libdir: sys.path.insert(0, args.libdir) from imageutils import horizontal_montage, vertical_montage uri = 'http://chrome.wunderground.com/auto/chrome/geo/wx/index.html?%s' url = uri % urllib.urlencode({'query': args.search}) soup = BeautifulStoneSoup(urllib.urlopen(url)) images = [] for i, d in enumerate(soup.findAll('div', 'icon')): im = Image.open(StringIO(urllib.urlopen(d.img['src']).read())) images.append(im) if args.vertical: vm = vertical_montage(images, halign='center') vm.save(args.vertical) if args.horizontal: hm = horizontal_montage(images, valign='top') hm.save(args.horizontal)
images = [] for i, game in enumerate(games): im = [] # Team images away_image = game.away_team.image home_image = game.home_team.image # Display the teams record if it is pre-game if game.type == 'pregame': ari = text_as_image( format_record(game.away_team.record, args.record_format), font=fonts['record'], fill=colors['record']) away_image = vertical_montage([away_image, ari], halign='center') hri = text_as_image( format_record(game.home_team.record, args.record_format), font=fonts['record'], fill=colors['record']) home_image = vertical_montage([home_image, hri], halign='center') # Team Icons icons = horizontal_montage([away_image, home_image], spacing=args.spacing) im.append(icons) (iw, ih) = icons.size if game.type == 'final': # Display the current/final score away_si = text_as_image("%s" % game.away_team.score,
def render_game(game, fonts, colors): game_images = [] away_image = game.away_team.image home_image = game.home_team.image upcoming = game.type.startswith('preview') if upcoming and game.away_team.record != 'N/A': ar = game.away_team.record.replace('-', ' - ') hr = game.home_team.record.replace('-', ' - ') ari = text_as_image(ar, font=fonts['record'], fill=colors['record']) hri = text_as_image(hr, font=fonts['record'], fill=colors['record']) away_image = vertical_montage([game.away_team.image, ari], halign='center') home_image = vertical_montage([game.home_team.image, hri], halign='center') icons = horizontal_montage([away_image, home_image], spacing=args.spacing) game_images.append(icons) if upcoming: delta = game.date - localtz.localize(datetime.now()) game_images.append(text_as_image(game.date.strftime(args.date_format).upper(), font=fonts['date'], fill=colors['date'])) if delta.days >= 7: game_images.append(text_as_image(game.date.strftime('%b %m, %Y'), font=fonts['date'], fill=colors['date'])) if args.line and game.line: line_image = text_as_image(game.line, font=fonts['line'], fill=colors['line']) game_images.append(line_image) game_images.append(text_as_image(game.tv, font=fonts['tv'], fill=colors['tv'])) else: if args.quarters: # Quarters as text (w, h) = icons.size asi = [text_as_image(s, font=fonts['quarter'], fill=colors['quarter']) for s in game.away_team.scores] hsi = [text_as_image(s, font=fonts['quarter'], fill=colors['quarter']) for s in game.home_team.scores] qis = [] for x in zip(asi, hsi): qis.append(vertical_montage(list(x), halign='right', sameheight=True)) quarters_image = horizontal_montage(qis, min_width=w/6, halign='right') game_images.append(quarters_image) else: # Summary score (iw, ih) = icons.size away_i = text_as_image("%s" % game.away_team.scores[5], font=fonts['score'], fill=colors['score']) home_i = text_as_image("%s" % game.home_team.scores[5], font=fonts['score'], fill=colors['score']) game_images.append(horizontal_montage([away_i, home_i], min_width=iw/2, halign='center', valign='center')) game_images.append(text_as_image(game.status.upper(), font=fonts['status'], fill=colors['status'])) if args.headline and game.headline: hi = [] for str in wrap(game.headline, 20): hi.append(text_as_image(str, font=fonts['headline'], fill=colors['headline'])) game_images.append(vertical_montage(hi, halign='left')) if args.lastplay and game.lastplay: li = [] for str in wrap(game.lastplay, 20): li.append(text_as_image(str, font=fonts['lastplay'], fill=colors['lastplay'])) game_images.append(vertical_montage(li, halign='left')) if game.type == 'in-game': game_images.append(text_as_image(game.tv, font=fonts['tv'], fill=colors['tv'])) return drop_shadow(vertical_montage(game_images, halign='center', spacing=0))
if args.invert: up_image = ImageOps.invert(ImageOps.grayscale(up_image)).convert('RGBA') down_image = ImageOps.invert(ImageOps.grayscale(down_image)).convert('RGBA') up_image.putalpha(up_alpha) down_image.putalpha(down_alpha) if args.grayscale: up_image = ImageOps.grayscale(up_image).convert('RGBA') down_image = ImageOps.grayscale(down_image).convert('RGBA') up_image.putalpha(up_alpha) down_image.putalpha(down_alpha) images = [] for service in services: command = vargs['check.' + service] try: output = check_output(command, shell=True) images.append(up_image) except CalledProcessError as e: images.append(down_image) if args.horizontal: hm = drop_shadow(horizontal_montage(images, valign='top')) hm.save(args.horizontal) if args.vertical: vm = drop_shadow(vertical_montage(images, valign='center')) vm.save(args.vertical)
week_im = text_as_image("PRESEASON %d" % week, font=fonts['week'], fill=colors['week']) elif season == 2: week_im = text_as_image("WEEK %d" % week, font=fonts['week'], fill=colors['week']) elif season == 3: ptype = ['WILD CARD', 'DIVISIONAL', 'CONFERENCE', 'PRO BOWL', 'SUPER BOWL'] week_im = text_as_image("%s" % ptype[week-1], font=fonts['week'], fill=colors['week']) if args.timestamp: now = localtz.localize(datetime.now()) now_image = text_as_image(now.strftime(args.timestamp_format), font=fonts['timestamp'], fill=colors['timestamp']) if not images: images = [text_as_image('No Games', font=fonts['default'], fill=colors['default'])] if args.vertical: montage = vertical_montage(images, spacing=max(int(args.vpad),0), halign='center') if args.timestamp: montage = vertical_montage([now_image, montage], halign='center') montage = vertical_montage([week_im, montage], halign='center') if args.desaturate: montage = montage.convert('LA') montage.save(args.vertical) if args.horizontal: montage = horizontal_montage(images, spacing=max(int(args.hpad),0), valign='top') if args.timestamp: montage = horizontal_montage([now_image.rotate(90), montage], valign='center') montage = horizontal_montage([week_im.rotate(90), montage], valign='center') if args.desaturate: montage = montage.convert('LA') montage.save(args.horizontal)