이미지를 결합하고 이미지 트윗을 자동 게시했습니다.
소개
이번은 전회와 같은 크래시 로얄이라는 게임에 대해서, 다시 코드를 써 보았으므로 기록으로서 남겨 둡니다.
htps : // 코 m/마오토타나베/있어 ms/1cd3d92704c960바다 fb
(전회의 기사는 이쪽)
크래시 로얄이란?
크래시 로얄은 중고생부터 어른까지 유행하는 스마트 폰 게임으로 전세계 프로 리그가 탄생하는 등 큰 분위기를 보이고 있습니다. 수많은 카드 중에서 8장을 선택해 덱을 작성해, 상대와 대전하는 카드·시미레이션 게임입니다.
지난번에는 클라로바의 API를 사용하여 프로게이머의 대전 정보를 csv 파일에 저장했습니다.
이번에는, 클라로와의 승률이 높은 덱을 취득해 카드 화상을 작성해, 자동으로 트윗 하는 기능을 만들어 보았습니다.
프로그램 개요
0. 필요한 라이브러리 설치
0. 승률 톱의 덱과 그 정보를 취득(이번은 생략)
1. 이미지 데이터를 바탕으로 8장의 카드 이미지 획득
2. 8장의 이미지를 세로 2×가로 4에 결합
3. twitterAPI를 사용하여 2에서 만든 이미지와 문장 게시
실제 코드
#0.必要なライブラリのインストール
import tweepy
from PIL import Image
import pandas as pd
여기는 설명 불필요하네요. 나중에 이 라이브러리를 사용합니다.
# 1.画像データをもとに8枚のカード画像を取得
♯ カード名と画像ファイルの辞書作成
imgdic = {'Baby Dragon': 'baby_dragon.png', 'Goblin Gang': 'goblin_gang.png', 'Minions': 'minion.png"', 'Balloon': 'chr_balloon.png', 'Goblin Barrel': r': 'mirror.png', 'Heal': 'heal.png'} #一部省略
# 一致する画像ファイルを取得
a = imgdic[df.iloc[0,0][0]]
b = imgdic[df.iloc[0,0][1]]
c = imgdic[df.iloc[0,0][2]]
d = imgdic[df.iloc[0,0][3]]
e = imgdic[df.iloc[0,0][4]]
f = imgdic[df.iloc[0,0][5]]
g = imgdic[df.iloc[0,0][6]]
h = imgdic[df.iloc[0,0][7]]
실행할 PC에 이미지 파일을 로드한 후 카드 이름에서 이미지 파일을 꺼낼 수 있도록 사전을 작성해 둡니다. 또, 여기에서는 기재하고 있지 않습니다만 df에는 1열째에 카드 8장이 리스트 형식으로, 2열째에는 승률, 3열째에는 사용률, 4열명에는 덱명이 수납되어 있어, 이들이 승률의 순서로 20 가량 정도 수납되고 있습니다. 이번에는 승률 1위의 카드를 취득하고 싶기 때문에, df.iloc[0,0]로 1열째 1행째의 리스트를 취득해, 리스트내의 1번째의 요소를 a에, 2번째를 b 에 ... 넣어.
# 2.8枚の画像を縦2×横4に結合
# 画像データを読み込み
im1 = Image.open(a)
im2 = Image.open(b)
im3 = Image.open(c)
im4 = Image.open(d)
im5 = Image.open(e)
im6 = Image.open(f)
im7 = Image.open(g)
im8 = Image.open(h)
# 8つの画像を2×4で結合する関数の作成
def get_concat_42(im1,im2,im3,im4,im5,im6,im7,im8):
dst = Image.new('RGB', (im1.width + im2.width + im3.width + im4.width+6, im1.height + im5.height+2),"white")
dst.paste(im1,(0,0))
dst.paste(im2,(im1.width+2,0))
dst.paste(im3,(im1.width+im2.width+4,0))
dst.paste(im4,(im1.width+im2.width+im3.width+6,0))
dst.paste(im5,(0,im1.height+2))
dst.paste(im6,(im5.width+2,im1.height+2))
dst.paste(im7,(im5.width+im6.width+4,im1.height+2))
dst.paste(im8,(im5.width+im6.width+im7.width+6,im1.height+2))
return dst
# 関数を実行し、新しい画像ファイル(fortwitter.png)を作成し保存
get_concat_42(im1,im2,im3,im4,im5,im6,im7,im8).save('fortwitter.png')
여기도 써 있는 대로입니다. 또한 멋지게 보이는 작품으로 배경을 흰색으로 만들어 카드를
결합할 때 조금만 틈을 열도록 해 보았습니다. (그렇게 보기가 좋아지지 않을지도...)
이렇게 이런 느낌으로 이미지가 생겼습니다.
빨리 이것을 트위터에 게시해 보겠습니다.
TwitterAPI의 취득 등에 대해서는 생략하고 있습니다.
♯ 3.twitterAPIを用いて2で作成した画像と文章を投稿
# アクセストークンを記載
CK = "your key" #(API key)
CS = "your key" #(API secret key)
AT = "your key" #(Access token)
AS = "your key" #(Access token secret)
# Twitterオブジェクトの生成
auth = tweepy.OAuthHandler(CK, CS)
auth.set_access_token(AT, AS)
api = tweepy.API(auth)
# 勝率、使用率、デッキ名をdfから取得
winrate = df.iloc[0,1]
userate = df.iloc[0,2]
deckname = df.iloc[0,3]
# ツイートを実行
api.update_with_media(status = '【マルチ勝率1位デッキ】\n \n ■deck:%s \n ■Win rate:%s \n ■Use rate:%s ' % ( deckname,winrate,userate ), filename = 'fortwitter.png')
이렇게 실행 한 트윗이 여기
【멀티 승률 1위 덱】 ■deck:Giant Prince EDrag ■Win rate:53.2% ■Use rate:0.5% 피 c. 라고 r. 이 m / z6 오 Gl 아 H — 클라로와 데이터 분석 (@crdatabot) 2019년 5월 31일
참고로 한 기사
0. 필요한 라이브러리 설치
0. 승률 톱의 덱과 그 정보를 취득(이번은 생략)
1. 이미지 데이터를 바탕으로 8장의 카드 이미지 획득
2. 8장의 이미지를 세로 2×가로 4에 결합
3. twitterAPI를 사용하여 2에서 만든 이미지와 문장 게시
실제 코드
#0.必要なライブラリのインストール
import tweepy
from PIL import Image
import pandas as pd
여기는 설명 불필요하네요. 나중에 이 라이브러리를 사용합니다.
# 1.画像データをもとに8枚のカード画像を取得
♯ カード名と画像ファイルの辞書作成
imgdic = {'Baby Dragon': 'baby_dragon.png', 'Goblin Gang': 'goblin_gang.png', 'Minions': 'minion.png"', 'Balloon': 'chr_balloon.png', 'Goblin Barrel': r': 'mirror.png', 'Heal': 'heal.png'} #一部省略
# 一致する画像ファイルを取得
a = imgdic[df.iloc[0,0][0]]
b = imgdic[df.iloc[0,0][1]]
c = imgdic[df.iloc[0,0][2]]
d = imgdic[df.iloc[0,0][3]]
e = imgdic[df.iloc[0,0][4]]
f = imgdic[df.iloc[0,0][5]]
g = imgdic[df.iloc[0,0][6]]
h = imgdic[df.iloc[0,0][7]]
실행할 PC에 이미지 파일을 로드한 후 카드 이름에서 이미지 파일을 꺼낼 수 있도록 사전을 작성해 둡니다. 또, 여기에서는 기재하고 있지 않습니다만 df에는 1열째에 카드 8장이 리스트 형식으로, 2열째에는 승률, 3열째에는 사용률, 4열명에는 덱명이 수납되어 있어, 이들이 승률의 순서로 20 가량 정도 수납되고 있습니다. 이번에는 승률 1위의 카드를 취득하고 싶기 때문에, df.iloc[0,0]로 1열째 1행째의 리스트를 취득해, 리스트내의 1번째의 요소를 a에, 2번째를 b 에 ... 넣어.
# 2.8枚の画像を縦2×横4に結合
# 画像データを読み込み
im1 = Image.open(a)
im2 = Image.open(b)
im3 = Image.open(c)
im4 = Image.open(d)
im5 = Image.open(e)
im6 = Image.open(f)
im7 = Image.open(g)
im8 = Image.open(h)
# 8つの画像を2×4で結合する関数の作成
def get_concat_42(im1,im2,im3,im4,im5,im6,im7,im8):
dst = Image.new('RGB', (im1.width + im2.width + im3.width + im4.width+6, im1.height + im5.height+2),"white")
dst.paste(im1,(0,0))
dst.paste(im2,(im1.width+2,0))
dst.paste(im3,(im1.width+im2.width+4,0))
dst.paste(im4,(im1.width+im2.width+im3.width+6,0))
dst.paste(im5,(0,im1.height+2))
dst.paste(im6,(im5.width+2,im1.height+2))
dst.paste(im7,(im5.width+im6.width+4,im1.height+2))
dst.paste(im8,(im5.width+im6.width+im7.width+6,im1.height+2))
return dst
# 関数を実行し、新しい画像ファイル(fortwitter.png)を作成し保存
get_concat_42(im1,im2,im3,im4,im5,im6,im7,im8).save('fortwitter.png')
여기도 써 있는 대로입니다. 또한 멋지게 보이는 작품으로 배경을 흰색으로 만들어 카드를
결합할 때 조금만 틈을 열도록 해 보았습니다. (그렇게 보기가 좋아지지 않을지도...)
이렇게 이런 느낌으로 이미지가 생겼습니다.
빨리 이것을 트위터에 게시해 보겠습니다.
TwitterAPI의 취득 등에 대해서는 생략하고 있습니다.
♯ 3.twitterAPIを用いて2で作成した画像と文章を投稿
# アクセストークンを記載
CK = "your key" #(API key)
CS = "your key" #(API secret key)
AT = "your key" #(Access token)
AS = "your key" #(Access token secret)
# Twitterオブジェクトの生成
auth = tweepy.OAuthHandler(CK, CS)
auth.set_access_token(AT, AS)
api = tweepy.API(auth)
# 勝率、使用率、デッキ名をdfから取得
winrate = df.iloc[0,1]
userate = df.iloc[0,2]
deckname = df.iloc[0,3]
# ツイートを実行
api.update_with_media(status = '【マルチ勝率1位デッキ】\n \n ■deck:%s \n ■Win rate:%s \n ■Use rate:%s ' % ( deckname,winrate,userate ), filename = 'fortwitter.png')
이렇게 실행 한 트윗이 여기
【멀티 승률 1위 덱】 ■deck:Giant Prince EDrag ■Win rate:53.2% ■Use rate:0.5% 피 c. 라고 r. 이 m / z6 오 Gl 아 H — 클라로와 데이터 분석 (@crdatabot) 2019년 5월 31일
참고로 한 기사
#0.必要なライブラリのインストール
import tweepy
from PIL import Image
import pandas as pd
# 1.画像データをもとに8枚のカード画像を取得
♯ カード名と画像ファイルの辞書作成
imgdic = {'Baby Dragon': 'baby_dragon.png', 'Goblin Gang': 'goblin_gang.png', 'Minions': 'minion.png"', 'Balloon': 'chr_balloon.png', 'Goblin Barrel': r': 'mirror.png', 'Heal': 'heal.png'} #一部省略
# 一致する画像ファイルを取得
a = imgdic[df.iloc[0,0][0]]
b = imgdic[df.iloc[0,0][1]]
c = imgdic[df.iloc[0,0][2]]
d = imgdic[df.iloc[0,0][3]]
e = imgdic[df.iloc[0,0][4]]
f = imgdic[df.iloc[0,0][5]]
g = imgdic[df.iloc[0,0][6]]
h = imgdic[df.iloc[0,0][7]]
# 2.8枚の画像を縦2×横4に結合
# 画像データを読み込み
im1 = Image.open(a)
im2 = Image.open(b)
im3 = Image.open(c)
im4 = Image.open(d)
im5 = Image.open(e)
im6 = Image.open(f)
im7 = Image.open(g)
im8 = Image.open(h)
# 8つの画像を2×4で結合する関数の作成
def get_concat_42(im1,im2,im3,im4,im5,im6,im7,im8):
dst = Image.new('RGB', (im1.width + im2.width + im3.width + im4.width+6, im1.height + im5.height+2),"white")
dst.paste(im1,(0,0))
dst.paste(im2,(im1.width+2,0))
dst.paste(im3,(im1.width+im2.width+4,0))
dst.paste(im4,(im1.width+im2.width+im3.width+6,0))
dst.paste(im5,(0,im1.height+2))
dst.paste(im6,(im5.width+2,im1.height+2))
dst.paste(im7,(im5.width+im6.width+4,im1.height+2))
dst.paste(im8,(im5.width+im6.width+im7.width+6,im1.height+2))
return dst
# 関数を実行し、新しい画像ファイル(fortwitter.png)を作成し保存
get_concat_42(im1,im2,im3,im4,im5,im6,im7,im8).save('fortwitter.png')
♯ 3.twitterAPIを用いて2で作成した画像と文章を投稿
# アクセストークンを記載
CK = "your key" #(API key)
CS = "your key" #(API secret key)
AT = "your key" #(Access token)
AS = "your key" #(Access token secret)
# Twitterオブジェクトの生成
auth = tweepy.OAuthHandler(CK, CS)
auth.set_access_token(AT, AS)
api = tweepy.API(auth)
# 勝率、使用率、デッキ名をdfから取得
winrate = df.iloc[0,1]
userate = df.iloc[0,2]
deckname = df.iloc[0,3]
# ツイートを実行
api.update_with_media(status = '【マルチ勝率1位デッキ】\n \n ■deck:%s \n ■Win rate:%s \n ■Use rate:%s ' % ( deckname,winrate,userate ), filename = 'fortwitter.png')
이미지 결합 정보→
htps : //에서. 응 kmk. 메 / py 텐 - 핏 w
TwitterAPI 취득에 대해 →
htps : // m / kn gsym 2018 / ms / 2524d21455 오 c111c
이미지가 포함된 트윗 게시물에 대해 →
htps : // m / kd mgs 110 / ms / d4 5에서 0187f25d1d6f7
읽어 주신 여러분, 기사를 참고로 해 주신 여러분, 감사합니다.
Reference
이 문제에 관하여(이미지를 결합하고 이미지 트윗을 자동 게시했습니다.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/maototanabe/items/338296a9e988edca4c0b텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)