2021 advent calendar day 14,15

タイムラインの画像をダウンロード後印刷

忙しいのでソースはあまり整形してません。
media_urlがあるデータから画像を1つダウンロードして印刷し終了(動画の場合は不明)

from escposjp import Network
from PIL import Image,ImageDraw
import tweepy
import settings # キー情報やユーザID等
import os
import urllib.request, urllib.error
import tempfile

p = Network("192.168.10.21")
p.hw("INIT")
p.JpInit()

auth = tweepy.OAuthHandler(settings.consumer_key,settings.consumer_secret)
auth.set_access_token(settings.access_token,settings.access_token_secret)
api = tweepy.API(auth)

# ユーザータイムライン取得
user_tweets = api.user_timeline(user_id=settings.user_id)

print_count = 0
for tweet in user_tweets:
  # full_text取得のため個別で更に取得
  status = api.get_status(tweet.id,tweet_mode="extended",include_ext_alt_text=True,include_card_uri=True)

  if hasattr(status, "extended_entities"):
    print_count += 1
    p.JpText(status.full_text + "\n")
    for m in status.extended_entities['media']:

      url = m['media_url']
      url_orig = '%s:orig' % url
      response = urllib.request.urlopen(url=url_orig)
      tmpdir = tempfile.TemporaryDirectory()
      file = os.path.join(tmpdir.name,os.path.basename(url))
      with open(file,"wb") as f:
        f.write(response.read())

        # iamge
        img = Image.open(file)
        h = round(img.height * 512 / img.width)
        resize_imge = img.resize((512, h))
        mask = Image.new("L", resize_imge.size, 0)
        draw = ImageDraw.Draw(mask)
        draw.rounded_rectangle((0,0, resize_imge.width,resize_imge.height), fill=255, radius=20)
        resize_imge.putalpha(mask)

        p.image(resize_imge,impl="graphics")

      tmpdir.cleanup()

    p.JpText("─────────────────────\n")

  if print_count >= 1:
    break

p.cut()

サーマルプリンタ古いけど幅512ドットまでいける

タイトルとURLをコピーしました