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')