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)
Beispiel #2
0
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, 
Beispiel #3
0
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))
Beispiel #4
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)

Beispiel #5
0
    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)