Drkcore

13 04 2013 Python Tweet

pythonでpptxを作ればGit管理下におけて素敵

Shizuoka.pyお疲れ様でした、想定以上のヒトに参加していただいて感謝しております。特に今までお会いしたことのなかった静岡のPythonistaにお会いできて満足です。

それからpygamessユーザーとお話できたのも嬉しかったです(あまり製薬業界以外で使われているとは思わなかったので)。

また、懇親会で良い感じの場所を提供していただいたphotoにも感謝!

python-pptxでつくったスライドのソースを張っておきます。水着ループはたった 4 行のコードでひたすらアイドル水着画像をあつめる(Python だよ)を参考にしました。

#!/usr/bin/env python
# -*- encoding:utf-8 -*-

from pptx import Presentation
from pptx.util import Inches, Px
import re
import requests

prs = Presentation()
title_slidelayout = prs.slidelayouts[0]
bullet_slidelayout = prs.slidelayouts[1]

shapes = prs.slides.add_slide(title_slidelayout).shapes
shapes.title.text = 'Pythonでpptx'
shapes.placeholders[0].text = 'Pythonでpptx'
shapes.placeholders[1].text = '@kzfm'

shapes = prs.slides.add_slide(bullet_slidelayout).shapes
shapes.placeholders[0].text = 'GUIに頼らずpptxを作れると素敵'
tf = shapes.placeholders[1].textframe
tf.text = 'パターンの再利用'
tf.add_paragraph().text = '作業の自動化'
tf.add_paragraph().text = 'Sphinxに慣れすぎた'
tf.add_paragraph().text = 'powepointたまに死ぬ(->発狂する)'

shapes = prs.slides.add_slide(bullet_slidelayout).shapes
shapes.placeholders[0].text = 'python-pptx'
tf = shapes.placeholders[1].textframe
tf.text = 'https://github.com/scanny/python-pptx'
tf.add_paragraph().text = 'pip install python-pptx'
tf.add_paragraph().text = '開発はじまったばかり'
tf.add_paragraph().text = '超期待!'

shapes = prs.slides.add_slide(bullet_slidelayout).shapes
shapes.placeholders[0].text = 'アイドル水着画像をあつめてpptxに貼る'
top = Inches(2)
left = Inches(0.5)
width  = Px(280)
height = int(width * 1.427)
txBox = shapes.add_textbox(left, top, width, height)
txBox.textframe.text = """c = requests.get('http://matome.naver.jp/odai/2135350364969742801').content
urls = [x.group(1) for x in re.finditer(r'<img src="(.+)".*?class="MTMItemThumb".*?/>', c)]

for i, url in enumerate(urls[:10], 1):
    img_path = "{}.jpg".format(i)
    r = requests.get(url)
    if r.status_code == 200:
        img = r.content
        with open(img_path, 'w') as f:
            f.write(img)
        shapes = prs.slides.add_slide(bullet_slidelayout).shapes
        shapes.placeholders[0].text = '水着アイドル ({})'.format(i)
        top = Inches(1.5)
        left = Inches(3)
        width  = Px(280)
        height = int(width * 1.427)
        pic = shapes.add_picture(img_path, left, top, width, height)
"""

c = requests.get('http://matome.naver.jp/odai/2135350364969742801').content
urls = [x.group(1) for x in re.finditer(r'<img src="(.+)".*?class="MTMItemThumb".*?/>', c)]

for i, url in enumerate(urls[:10], 1):
    img_path = "{}.jpg".format(i)
    r = requests.get(url)
    if r.status_code == 200:
        img = r.content
        with open(img_path, 'w') as f:
            f.write(img)
        shapes = prs.slides.add_slide(bullet_slidelayout).shapes
        shapes.placeholders[0].text = '水着アイドル ({})'.format(i)
        top = Inches(1.5)
        left = Inches(3)
        width  = Px(280)
        height = int(width * 1.427)
        pic = shapes.add_picture(img_path, left, top, width, height)

shapes = prs.slides.add_slide(bullet_slidelayout).shapes
shapes.placeholders[0].text = 'このスライドはpython-pptx製'
tf = shapes.placeholders[1].textframe
tf.text = 'スクリプトっぽい(DSLっぽくはない)'
tf.add_paragraph().text = '再利用性は高められそう'
tf.add_paragraph().text = 'Gitで管理できる(重要!)'
tf.add_paragraph().text = 'Sphinxの拡張にするのは面白そう'
tf.add_paragraph().text = 'livereloadで更新時にリロードしないかなぁ?'

shapes = prs.slides.add_slide(bullet_slidelayout).shapes
shapes.placeholders[0].text = 'まとめ (真のアイドルは焼津)'.format(i)
top = Inches(1.5)
left = Inches(3)
width  = Px(280)
height = int(width * 1.427)
pic = shapes.add_picture("yaidumoe.jpg", left, top, width, height)

prs.save('test.pptx')

About

  • もう5年目(wishlistありマス♡)
  • 最近はPythonとDeepLearning
  • 日本酒自粛中
  • ドラムンベースからミニマルまで
  • ポケモンGOゆるめ

Tag

Python Deep Learning javascript chemoinformatics Emacs sake and more...

Ad

© kzfm 2003-2021