Ruby × RMagick에서 트위터 팔로워 아이콘을 늘어놓은 빙고 스타일 이미지 만들기
18653 단어 트위터빙고TwitterAPIRMagick루비
이 절차로 할 수있는 일
팔로워 씨의 아이콘을 5x5-1(가운데를 제외하기 위해-1)에 늘어놓은 빙고 이미지를 자동 생성할 수 있다.
・실행마다 줄지어 있는 사람은 바뀐다(완전 랜덤. 아무 데이터도 고려하지 않는다)
・중심에는 항상 자신의 화상이 표시된다
「얽힌 계기 만들기」에 부디.
이름은 병기하지 않기 때문에, 우선은 「아이콘과 이름을 일치시키는 곳으로부터」라고 해도 좋지만, 그것은 조금 엄격한 인용으로, 이름의 리스트를 텍스트로 출력하도록(듯이) 하고 있다.
개요도
대상 독자
환경 구축이 어느 정도 아는 사람용(각종 설치·등록 순서 생략을 위해)
※개별로의 문의 대응은 가능
필요한 것
· Twitter 계정
・개발용 PC
(Windows는, RMmagick로 손잡이 같기 때문에, Mac나 Linux를 추천)
· 원하는 텍스트 편집기 또는 통합 개발 환경
・영문의 읽고 쓰기에 견딜 수 있는 멘탈(Twitter Developer 등록이 아직의 경우)
0.환경 구축
다음을 설치합니다. 절차는 할애. 기본은 apt라든가 brew라든지 yum, gem으로 갈 수 있을 것이다. Ruby는, 앞으로도 사용한다면, rbenv라든지 rvm로 넣는 것이 좋을지도.
・Ruby
・Twitter Gem
・RMagick
※[참고]필자 환경(MacOS X 10.10.5/Ruby 2.4.1/Twitter Gem 6.2.0/RMagick 2.16.0)
· SSL 인증서 작성 또는 설치
자신의 증명서를 만들 필요가 있지만, 조금 시험하고 싶은 것 뿐이라면, 일단 CA certificates extracted from Mozilla 의 cacert.pem 를 보존해 사용하는 것도 있다.
1.Twitter Developer 등록
TwitterAPI를 사용하려면 개발자 등록이 필요합니다.
등록되지 않은 사람은 Twitter Developer Platform 에서 등록을.
Twitter 계정으로 로그인하여 오른쪽 상단의 "Apply"로.
돈은 들지 않고, 개인정보도 쓰지 않기 때문에, 부담없이 등록해도 좋다고 생각한다.
영어로 어떤 일을 하고 싶은지의 설명이 요구되므로, Google 번역을 사용해 노력하자.
또는, 제 적당 영어를 그대로 부디.
I want to makes a follower's bingo image from Twitter APIs. It is used to increase communication opportunities between us and followers by reply, like and retweet.Since followers are chosen randomly, we will have opportunities to communica
번역 : 내가 트위터 API에서 팔로워의 빙고 이미지를 생성하고 싶은 쿠포. 이것은 립이나 좋아, 리트윗에 의해, 우리와 팔로워씨의 교류 기회를 늘리기 위해서 사용되는 쿠포야. 팔로워 씨는 랜덤으로 선택되기 때문에 다양한 팔로워 씨와의 교류 기회가 늘어나는 쿠포네.
2.Twitter 응용 프로그램 만들기
「Twitter Developer 등록」이 끝나면,
사용자 이름 옆의 화살표에서 "Apps"를 선택하고 "Create an App"에서 새 응용 프로그램을 만듭니다.
작성이 끝나면, 어플리케이션의 Detail의 화면에서 「Keys and tokens」탭을 선택해, 거기에 기재되어 있는 「Consumer API keys」를 2종류 어딘가에 메모해 둔다.
프로그램에서 API를 이용하는 경우에는 Access token이 필요하므로 "Access token & access token secret"의 "Create"버튼을 누른다.
그러면 token과 secret이 표시되므로 이쪽도 「Consumer API keys」와 같이 어딘가에 메모해 둔다.
3. 프로그램 작성
다음의 코드를 작성한다. twitterID, 각종token, token secret 는 자신용으로 바꾸는 것.
make_follower_bingo.rbrequire "twitter"
require 'rmagick'
### 設定ここから ###
# SSL証明書へのパス
ENV["SSL_CERT_FILE"] = "SSL証明書へのパスを記載"
# 自身のTwitterID
MY_TWITTER_ID = "Twitter IDを記載"
# 各種Token/Secret
CONSUMER_KEY = "メモしたCONSUMER_KEYを記載"
CONSUMER_SECRET = "メモしたCONSUMER_SECRETを記載"
ACCESS_TOKEN = "メモしたACCESS_TOKENを記載"
ACCESS_TOKEN_SECRET = "メモしたACCESS_TOKEN_SECRETを記載"
### 設定ここまで ###
class TwitterClient
NUMBER_OF_COL = 5
NUMBER_OF_ROW = 5
DEFAULT_FILE_NAME = "bingo.jpg"
def initialize(consumer_key, consumer_secret, access_token, access_token_secret, my_twitter_id)
@client = Twitter::REST::Client.new do |config|
config.consumer_key = consumer_key
config.consumer_secret = consumer_secret
config.access_token = access_token
config.access_token_secret = access_token_secret
end
@my_twitter_id = my_twitter_id
@number_of_followers = @client.user(@my_twitter_id).followers_count
end
def choice_followers(count)
puts "Error: Number of follower is less than #{count}." if @number_of_followers < count
@chosen_followers_indexes = []
index = -1
count.times do
loop do
index = rand(@number_of_followers)
break if !@chosen_followers_indexes.include?(index)
end
@chosen_followers_indexes << index
end
@chosen_followers_indexes
end
def get_followers
is_success = false
@chosen_follower_ids = []
@client.follower_ids(@my_twitter_id).each_with_index do |follower, index|
@chosen_follower_ids << follower if @chosen_followers_indexes.include?(index)
# 全員見つかった
if @chosen_follower_ids.size >= @chosen_followers_indexes.size
is_success = true
break
end
end
is_success
end
def generate_image(output_name = DEFAULT_FILE_NAME)
image_urls = []
names = []
@chosen_follower_ids.each_with_index do |follower_id, index|
user = @client.user(follower_id)
puts user.name
puts user.profile_image_uri
image_urls << user.profile_image_uri
names << user.name
end
# 真ん中に自分の画像を差し込む
image_urls.insert((NUMBER_OF_COL * NUMBER_OF_ROW) / 2, @client.user(@my_twitter_id).profile_image_url)
names.insert((NUMBER_OF_COL * NUMBER_OF_ROW) / 2, "★")
# 対象者名をテキストに出力
File.open(output_name + "_names.txt", "w") do |text|
names.each_with_index do |name, index|
text.write(name)
if (index + 1) % NUMBER_OF_COL == 0
text.write("\n") # 改行
else
text.write(" | ")
end
end
end
# 1行分の画像を行の数だけ生成
images = []
NUMBER_OF_ROW.times do |row_index|
image = Magick::ImageList.new
NUMBER_OF_COL.times do |col_index|
image.read(image_urls[row_index * NUMBER_OF_COL + col_index])
end
image = image.append(false)
images << image
end
# 行毎の画像を結合
joined_image = Magick::ImageList.new
images.each_with_index do |image, index|
joined_image.from_blob(image.to_blob)
end
joined_image = joined_image.append(true)
joined_image.write(output_name)
end
end
client = TwitterClient.new(CONSUMER_KEY, CONSUMER_SECRET, ACCESS_TOKEN, ACCESS_TOKEN_SECRET, MY_TWITTER_ID)
3.times do
client.choice_followers(TwitterClient::NUMBER_OF_COL * TwitterClient::NUMBER_OF_ROW - 1)
break if client.get_followers
# フォロワー数の減少により、chosen_indexesの値がindexを超えてしまったら、再抽選
puts "retrying..."
end
client.generate_image
[참고]
The Twitter Ruby Gem
RMagick 2.12.0 User's Guide and Reference#ImageList
4. 실행
Mac, Linux라면 소스 코드에 실행 권한을 붙여 실행한다.
$ chmod +x make_follower_bingo.rb
위는 처음에만 OK.
$ ruby make_follower_bingo.rb
실행 디렉토리에 "bingo.jpg""bingo_names.txt"라는 파일이 있으면 성공!
Reference
이 문제에 관하여(Ruby × RMagick에서 트위터 팔로워 아이콘을 늘어놓은 빙고 스타일 이미지 만들기), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/tsukitoro0505/items/f42a03166bdcdf3e5fcb
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
환경 구축이 어느 정도 아는 사람용(각종 설치·등록 순서 생략을 위해)
※개별로의 문의 대응은 가능
필요한 것
· Twitter 계정
・개발용 PC
(Windows는, RMmagick로 손잡이 같기 때문에, Mac나 Linux를 추천)
· 원하는 텍스트 편집기 또는 통합 개발 환경
・영문의 읽고 쓰기에 견딜 수 있는 멘탈(Twitter Developer 등록이 아직의 경우)
0.환경 구축
다음을 설치합니다. 절차는 할애. 기본은 apt라든가 brew라든지 yum, gem으로 갈 수 있을 것이다. Ruby는, 앞으로도 사용한다면, rbenv라든지 rvm로 넣는 것이 좋을지도.
・Ruby
・Twitter Gem
・RMagick
※[참고]필자 환경(MacOS X 10.10.5/Ruby 2.4.1/Twitter Gem 6.2.0/RMagick 2.16.0)
· SSL 인증서 작성 또는 설치
자신의 증명서를 만들 필요가 있지만, 조금 시험하고 싶은 것 뿐이라면, 일단 CA certificates extracted from Mozilla 의 cacert.pem 를 보존해 사용하는 것도 있다.
1.Twitter Developer 등록
TwitterAPI를 사용하려면 개발자 등록이 필요합니다.
등록되지 않은 사람은 Twitter Developer Platform 에서 등록을.
Twitter 계정으로 로그인하여 오른쪽 상단의 "Apply"로.
돈은 들지 않고, 개인정보도 쓰지 않기 때문에, 부담없이 등록해도 좋다고 생각한다.
영어로 어떤 일을 하고 싶은지의 설명이 요구되므로, Google 번역을 사용해 노력하자.
또는, 제 적당 영어를 그대로 부디.
I want to makes a follower's bingo image from Twitter APIs. It is used to increase communication opportunities between us and followers by reply, like and retweet.Since followers are chosen randomly, we will have opportunities to communica
번역 : 내가 트위터 API에서 팔로워의 빙고 이미지를 생성하고 싶은 쿠포. 이것은 립이나 좋아, 리트윗에 의해, 우리와 팔로워씨의 교류 기회를 늘리기 위해서 사용되는 쿠포야. 팔로워 씨는 랜덤으로 선택되기 때문에 다양한 팔로워 씨와의 교류 기회가 늘어나는 쿠포네.
2.Twitter 응용 프로그램 만들기
「Twitter Developer 등록」이 끝나면,
사용자 이름 옆의 화살표에서 "Apps"를 선택하고 "Create an App"에서 새 응용 프로그램을 만듭니다.
작성이 끝나면, 어플리케이션의 Detail의 화면에서 「Keys and tokens」탭을 선택해, 거기에 기재되어 있는 「Consumer API keys」를 2종류 어딘가에 메모해 둔다.
프로그램에서 API를 이용하는 경우에는 Access token이 필요하므로 "Access token & access token secret"의 "Create"버튼을 누른다.
그러면 token과 secret이 표시되므로 이쪽도 「Consumer API keys」와 같이 어딘가에 메모해 둔다.
3. 프로그램 작성
다음의 코드를 작성한다. twitterID, 각종token, token secret 는 자신용으로 바꾸는 것.
make_follower_bingo.rbrequire "twitter"
require 'rmagick'
### 設定ここから ###
# SSL証明書へのパス
ENV["SSL_CERT_FILE"] = "SSL証明書へのパスを記載"
# 自身のTwitterID
MY_TWITTER_ID = "Twitter IDを記載"
# 各種Token/Secret
CONSUMER_KEY = "メモしたCONSUMER_KEYを記載"
CONSUMER_SECRET = "メモしたCONSUMER_SECRETを記載"
ACCESS_TOKEN = "メモしたACCESS_TOKENを記載"
ACCESS_TOKEN_SECRET = "メモしたACCESS_TOKEN_SECRETを記載"
### 設定ここまで ###
class TwitterClient
NUMBER_OF_COL = 5
NUMBER_OF_ROW = 5
DEFAULT_FILE_NAME = "bingo.jpg"
def initialize(consumer_key, consumer_secret, access_token, access_token_secret, my_twitter_id)
@client = Twitter::REST::Client.new do |config|
config.consumer_key = consumer_key
config.consumer_secret = consumer_secret
config.access_token = access_token
config.access_token_secret = access_token_secret
end
@my_twitter_id = my_twitter_id
@number_of_followers = @client.user(@my_twitter_id).followers_count
end
def choice_followers(count)
puts "Error: Number of follower is less than #{count}." if @number_of_followers < count
@chosen_followers_indexes = []
index = -1
count.times do
loop do
index = rand(@number_of_followers)
break if !@chosen_followers_indexes.include?(index)
end
@chosen_followers_indexes << index
end
@chosen_followers_indexes
end
def get_followers
is_success = false
@chosen_follower_ids = []
@client.follower_ids(@my_twitter_id).each_with_index do |follower, index|
@chosen_follower_ids << follower if @chosen_followers_indexes.include?(index)
# 全員見つかった
if @chosen_follower_ids.size >= @chosen_followers_indexes.size
is_success = true
break
end
end
is_success
end
def generate_image(output_name = DEFAULT_FILE_NAME)
image_urls = []
names = []
@chosen_follower_ids.each_with_index do |follower_id, index|
user = @client.user(follower_id)
puts user.name
puts user.profile_image_uri
image_urls << user.profile_image_uri
names << user.name
end
# 真ん中に自分の画像を差し込む
image_urls.insert((NUMBER_OF_COL * NUMBER_OF_ROW) / 2, @client.user(@my_twitter_id).profile_image_url)
names.insert((NUMBER_OF_COL * NUMBER_OF_ROW) / 2, "★")
# 対象者名をテキストに出力
File.open(output_name + "_names.txt", "w") do |text|
names.each_with_index do |name, index|
text.write(name)
if (index + 1) % NUMBER_OF_COL == 0
text.write("\n") # 改行
else
text.write(" | ")
end
end
end
# 1行分の画像を行の数だけ生成
images = []
NUMBER_OF_ROW.times do |row_index|
image = Magick::ImageList.new
NUMBER_OF_COL.times do |col_index|
image.read(image_urls[row_index * NUMBER_OF_COL + col_index])
end
image = image.append(false)
images << image
end
# 行毎の画像を結合
joined_image = Magick::ImageList.new
images.each_with_index do |image, index|
joined_image.from_blob(image.to_blob)
end
joined_image = joined_image.append(true)
joined_image.write(output_name)
end
end
client = TwitterClient.new(CONSUMER_KEY, CONSUMER_SECRET, ACCESS_TOKEN, ACCESS_TOKEN_SECRET, MY_TWITTER_ID)
3.times do
client.choice_followers(TwitterClient::NUMBER_OF_COL * TwitterClient::NUMBER_OF_ROW - 1)
break if client.get_followers
# フォロワー数の減少により、chosen_indexesの値がindexを超えてしまったら、再抽選
puts "retrying..."
end
client.generate_image
[참고]
The Twitter Ruby Gem
RMagick 2.12.0 User's Guide and Reference#ImageList
4. 실행
Mac, Linux라면 소스 코드에 실행 권한을 붙여 실행한다.
$ chmod +x make_follower_bingo.rb
위는 처음에만 OK.
$ ruby make_follower_bingo.rb
실행 디렉토리에 "bingo.jpg""bingo_names.txt"라는 파일이 있으면 성공!
Reference
이 문제에 관하여(Ruby × RMagick에서 트위터 팔로워 아이콘을 늘어놓은 빙고 스타일 이미지 만들기), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/tsukitoro0505/items/f42a03166bdcdf3e5fcb
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
다음을 설치합니다. 절차는 할애. 기본은 apt라든가 brew라든지 yum, gem으로 갈 수 있을 것이다. Ruby는, 앞으로도 사용한다면, rbenv라든지 rvm로 넣는 것이 좋을지도.
・Ruby
・Twitter Gem
・RMagick
※[참고]필자 환경(MacOS X 10.10.5/Ruby 2.4.1/Twitter Gem 6.2.0/RMagick 2.16.0)
· SSL 인증서 작성 또는 설치
자신의 증명서를 만들 필요가 있지만, 조금 시험하고 싶은 것 뿐이라면, 일단 CA certificates extracted from Mozilla 의 cacert.pem 를 보존해 사용하는 것도 있다.
1.Twitter Developer 등록
TwitterAPI를 사용하려면 개발자 등록이 필요합니다.
등록되지 않은 사람은 Twitter Developer Platform 에서 등록을.
Twitter 계정으로 로그인하여 오른쪽 상단의 "Apply"로.
돈은 들지 않고, 개인정보도 쓰지 않기 때문에, 부담없이 등록해도 좋다고 생각한다.
영어로 어떤 일을 하고 싶은지의 설명이 요구되므로, Google 번역을 사용해 노력하자.
또는, 제 적당 영어를 그대로 부디.
I want to makes a follower's bingo image from Twitter APIs. It is used to increase communication opportunities between us and followers by reply, like and retweet.Since followers are chosen randomly, we will have opportunities to communica
번역 : 내가 트위터 API에서 팔로워의 빙고 이미지를 생성하고 싶은 쿠포. 이것은 립이나 좋아, 리트윗에 의해, 우리와 팔로워씨의 교류 기회를 늘리기 위해서 사용되는 쿠포야. 팔로워 씨는 랜덤으로 선택되기 때문에 다양한 팔로워 씨와의 교류 기회가 늘어나는 쿠포네.
2.Twitter 응용 프로그램 만들기
「Twitter Developer 등록」이 끝나면,
사용자 이름 옆의 화살표에서 "Apps"를 선택하고 "Create an App"에서 새 응용 프로그램을 만듭니다.
작성이 끝나면, 어플리케이션의 Detail의 화면에서 「Keys and tokens」탭을 선택해, 거기에 기재되어 있는 「Consumer API keys」를 2종류 어딘가에 메모해 둔다.
프로그램에서 API를 이용하는 경우에는 Access token이 필요하므로 "Access token & access token secret"의 "Create"버튼을 누른다.
그러면 token과 secret이 표시되므로 이쪽도 「Consumer API keys」와 같이 어딘가에 메모해 둔다.
3. 프로그램 작성
다음의 코드를 작성한다. twitterID, 각종token, token secret 는 자신용으로 바꾸는 것.
make_follower_bingo.rbrequire "twitter"
require 'rmagick'
### 設定ここから ###
# SSL証明書へのパス
ENV["SSL_CERT_FILE"] = "SSL証明書へのパスを記載"
# 自身のTwitterID
MY_TWITTER_ID = "Twitter IDを記載"
# 各種Token/Secret
CONSUMER_KEY = "メモしたCONSUMER_KEYを記載"
CONSUMER_SECRET = "メモしたCONSUMER_SECRETを記載"
ACCESS_TOKEN = "メモしたACCESS_TOKENを記載"
ACCESS_TOKEN_SECRET = "メモしたACCESS_TOKEN_SECRETを記載"
### 設定ここまで ###
class TwitterClient
NUMBER_OF_COL = 5
NUMBER_OF_ROW = 5
DEFAULT_FILE_NAME = "bingo.jpg"
def initialize(consumer_key, consumer_secret, access_token, access_token_secret, my_twitter_id)
@client = Twitter::REST::Client.new do |config|
config.consumer_key = consumer_key
config.consumer_secret = consumer_secret
config.access_token = access_token
config.access_token_secret = access_token_secret
end
@my_twitter_id = my_twitter_id
@number_of_followers = @client.user(@my_twitter_id).followers_count
end
def choice_followers(count)
puts "Error: Number of follower is less than #{count}." if @number_of_followers < count
@chosen_followers_indexes = []
index = -1
count.times do
loop do
index = rand(@number_of_followers)
break if !@chosen_followers_indexes.include?(index)
end
@chosen_followers_indexes << index
end
@chosen_followers_indexes
end
def get_followers
is_success = false
@chosen_follower_ids = []
@client.follower_ids(@my_twitter_id).each_with_index do |follower, index|
@chosen_follower_ids << follower if @chosen_followers_indexes.include?(index)
# 全員見つかった
if @chosen_follower_ids.size >= @chosen_followers_indexes.size
is_success = true
break
end
end
is_success
end
def generate_image(output_name = DEFAULT_FILE_NAME)
image_urls = []
names = []
@chosen_follower_ids.each_with_index do |follower_id, index|
user = @client.user(follower_id)
puts user.name
puts user.profile_image_uri
image_urls << user.profile_image_uri
names << user.name
end
# 真ん中に自分の画像を差し込む
image_urls.insert((NUMBER_OF_COL * NUMBER_OF_ROW) / 2, @client.user(@my_twitter_id).profile_image_url)
names.insert((NUMBER_OF_COL * NUMBER_OF_ROW) / 2, "★")
# 対象者名をテキストに出力
File.open(output_name + "_names.txt", "w") do |text|
names.each_with_index do |name, index|
text.write(name)
if (index + 1) % NUMBER_OF_COL == 0
text.write("\n") # 改行
else
text.write(" | ")
end
end
end
# 1行分の画像を行の数だけ生成
images = []
NUMBER_OF_ROW.times do |row_index|
image = Magick::ImageList.new
NUMBER_OF_COL.times do |col_index|
image.read(image_urls[row_index * NUMBER_OF_COL + col_index])
end
image = image.append(false)
images << image
end
# 行毎の画像を結合
joined_image = Magick::ImageList.new
images.each_with_index do |image, index|
joined_image.from_blob(image.to_blob)
end
joined_image = joined_image.append(true)
joined_image.write(output_name)
end
end
client = TwitterClient.new(CONSUMER_KEY, CONSUMER_SECRET, ACCESS_TOKEN, ACCESS_TOKEN_SECRET, MY_TWITTER_ID)
3.times do
client.choice_followers(TwitterClient::NUMBER_OF_COL * TwitterClient::NUMBER_OF_ROW - 1)
break if client.get_followers
# フォロワー数の減少により、chosen_indexesの値がindexを超えてしまったら、再抽選
puts "retrying..."
end
client.generate_image
[참고]
The Twitter Ruby Gem
RMagick 2.12.0 User's Guide and Reference#ImageList
4. 실행
Mac, Linux라면 소스 코드에 실행 권한을 붙여 실행한다.
$ chmod +x make_follower_bingo.rb
위는 처음에만 OK.
$ ruby make_follower_bingo.rb
실행 디렉토리에 "bingo.jpg""bingo_names.txt"라는 파일이 있으면 성공!
Reference
이 문제에 관하여(Ruby × RMagick에서 트위터 팔로워 아이콘을 늘어놓은 빙고 스타일 이미지 만들기), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/tsukitoro0505/items/f42a03166bdcdf3e5fcb
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
「Twitter Developer 등록」이 끝나면,
사용자 이름 옆의 화살표에서 "Apps"를 선택하고 "Create an App"에서 새 응용 프로그램을 만듭니다.
작성이 끝나면, 어플리케이션의 Detail의 화면에서 「Keys and tokens」탭을 선택해, 거기에 기재되어 있는 「Consumer API keys」를 2종류 어딘가에 메모해 둔다.
프로그램에서 API를 이용하는 경우에는 Access token이 필요하므로 "Access token & access token secret"의 "Create"버튼을 누른다.
그러면 token과 secret이 표시되므로 이쪽도 「Consumer API keys」와 같이 어딘가에 메모해 둔다.
3. 프로그램 작성
다음의 코드를 작성한다. twitterID, 각종token, token secret 는 자신용으로 바꾸는 것.
make_follower_bingo.rbrequire "twitter"
require 'rmagick'
### 設定ここから ###
# SSL証明書へのパス
ENV["SSL_CERT_FILE"] = "SSL証明書へのパスを記載"
# 自身のTwitterID
MY_TWITTER_ID = "Twitter IDを記載"
# 各種Token/Secret
CONSUMER_KEY = "メモしたCONSUMER_KEYを記載"
CONSUMER_SECRET = "メモしたCONSUMER_SECRETを記載"
ACCESS_TOKEN = "メモしたACCESS_TOKENを記載"
ACCESS_TOKEN_SECRET = "メモしたACCESS_TOKEN_SECRETを記載"
### 設定ここまで ###
class TwitterClient
NUMBER_OF_COL = 5
NUMBER_OF_ROW = 5
DEFAULT_FILE_NAME = "bingo.jpg"
def initialize(consumer_key, consumer_secret, access_token, access_token_secret, my_twitter_id)
@client = Twitter::REST::Client.new do |config|
config.consumer_key = consumer_key
config.consumer_secret = consumer_secret
config.access_token = access_token
config.access_token_secret = access_token_secret
end
@my_twitter_id = my_twitter_id
@number_of_followers = @client.user(@my_twitter_id).followers_count
end
def choice_followers(count)
puts "Error: Number of follower is less than #{count}." if @number_of_followers < count
@chosen_followers_indexes = []
index = -1
count.times do
loop do
index = rand(@number_of_followers)
break if !@chosen_followers_indexes.include?(index)
end
@chosen_followers_indexes << index
end
@chosen_followers_indexes
end
def get_followers
is_success = false
@chosen_follower_ids = []
@client.follower_ids(@my_twitter_id).each_with_index do |follower, index|
@chosen_follower_ids << follower if @chosen_followers_indexes.include?(index)
# 全員見つかった
if @chosen_follower_ids.size >= @chosen_followers_indexes.size
is_success = true
break
end
end
is_success
end
def generate_image(output_name = DEFAULT_FILE_NAME)
image_urls = []
names = []
@chosen_follower_ids.each_with_index do |follower_id, index|
user = @client.user(follower_id)
puts user.name
puts user.profile_image_uri
image_urls << user.profile_image_uri
names << user.name
end
# 真ん中に自分の画像を差し込む
image_urls.insert((NUMBER_OF_COL * NUMBER_OF_ROW) / 2, @client.user(@my_twitter_id).profile_image_url)
names.insert((NUMBER_OF_COL * NUMBER_OF_ROW) / 2, "★")
# 対象者名をテキストに出力
File.open(output_name + "_names.txt", "w") do |text|
names.each_with_index do |name, index|
text.write(name)
if (index + 1) % NUMBER_OF_COL == 0
text.write("\n") # 改行
else
text.write(" | ")
end
end
end
# 1行分の画像を行の数だけ生成
images = []
NUMBER_OF_ROW.times do |row_index|
image = Magick::ImageList.new
NUMBER_OF_COL.times do |col_index|
image.read(image_urls[row_index * NUMBER_OF_COL + col_index])
end
image = image.append(false)
images << image
end
# 行毎の画像を結合
joined_image = Magick::ImageList.new
images.each_with_index do |image, index|
joined_image.from_blob(image.to_blob)
end
joined_image = joined_image.append(true)
joined_image.write(output_name)
end
end
client = TwitterClient.new(CONSUMER_KEY, CONSUMER_SECRET, ACCESS_TOKEN, ACCESS_TOKEN_SECRET, MY_TWITTER_ID)
3.times do
client.choice_followers(TwitterClient::NUMBER_OF_COL * TwitterClient::NUMBER_OF_ROW - 1)
break if client.get_followers
# フォロワー数の減少により、chosen_indexesの値がindexを超えてしまったら、再抽選
puts "retrying..."
end
client.generate_image
[참고]
The Twitter Ruby Gem
RMagick 2.12.0 User's Guide and Reference#ImageList
4. 실행
Mac, Linux라면 소스 코드에 실행 권한을 붙여 실행한다.
$ chmod +x make_follower_bingo.rb
위는 처음에만 OK.
$ ruby make_follower_bingo.rb
실행 디렉토리에 "bingo.jpg""bingo_names.txt"라는 파일이 있으면 성공!
Reference
이 문제에 관하여(Ruby × RMagick에서 트위터 팔로워 아이콘을 늘어놓은 빙고 스타일 이미지 만들기), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/tsukitoro0505/items/f42a03166bdcdf3e5fcb
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
require "twitter"
require 'rmagick'
### 設定ここから ###
# SSL証明書へのパス
ENV["SSL_CERT_FILE"] = "SSL証明書へのパスを記載"
# 自身のTwitterID
MY_TWITTER_ID = "Twitter IDを記載"
# 各種Token/Secret
CONSUMER_KEY = "メモしたCONSUMER_KEYを記載"
CONSUMER_SECRET = "メモしたCONSUMER_SECRETを記載"
ACCESS_TOKEN = "メモしたACCESS_TOKENを記載"
ACCESS_TOKEN_SECRET = "メモしたACCESS_TOKEN_SECRETを記載"
### 設定ここまで ###
class TwitterClient
NUMBER_OF_COL = 5
NUMBER_OF_ROW = 5
DEFAULT_FILE_NAME = "bingo.jpg"
def initialize(consumer_key, consumer_secret, access_token, access_token_secret, my_twitter_id)
@client = Twitter::REST::Client.new do |config|
config.consumer_key = consumer_key
config.consumer_secret = consumer_secret
config.access_token = access_token
config.access_token_secret = access_token_secret
end
@my_twitter_id = my_twitter_id
@number_of_followers = @client.user(@my_twitter_id).followers_count
end
def choice_followers(count)
puts "Error: Number of follower is less than #{count}." if @number_of_followers < count
@chosen_followers_indexes = []
index = -1
count.times do
loop do
index = rand(@number_of_followers)
break if !@chosen_followers_indexes.include?(index)
end
@chosen_followers_indexes << index
end
@chosen_followers_indexes
end
def get_followers
is_success = false
@chosen_follower_ids = []
@client.follower_ids(@my_twitter_id).each_with_index do |follower, index|
@chosen_follower_ids << follower if @chosen_followers_indexes.include?(index)
# 全員見つかった
if @chosen_follower_ids.size >= @chosen_followers_indexes.size
is_success = true
break
end
end
is_success
end
def generate_image(output_name = DEFAULT_FILE_NAME)
image_urls = []
names = []
@chosen_follower_ids.each_with_index do |follower_id, index|
user = @client.user(follower_id)
puts user.name
puts user.profile_image_uri
image_urls << user.profile_image_uri
names << user.name
end
# 真ん中に自分の画像を差し込む
image_urls.insert((NUMBER_OF_COL * NUMBER_OF_ROW) / 2, @client.user(@my_twitter_id).profile_image_url)
names.insert((NUMBER_OF_COL * NUMBER_OF_ROW) / 2, "★")
# 対象者名をテキストに出力
File.open(output_name + "_names.txt", "w") do |text|
names.each_with_index do |name, index|
text.write(name)
if (index + 1) % NUMBER_OF_COL == 0
text.write("\n") # 改行
else
text.write(" | ")
end
end
end
# 1行分の画像を行の数だけ生成
images = []
NUMBER_OF_ROW.times do |row_index|
image = Magick::ImageList.new
NUMBER_OF_COL.times do |col_index|
image.read(image_urls[row_index * NUMBER_OF_COL + col_index])
end
image = image.append(false)
images << image
end
# 行毎の画像を結合
joined_image = Magick::ImageList.new
images.each_with_index do |image, index|
joined_image.from_blob(image.to_blob)
end
joined_image = joined_image.append(true)
joined_image.write(output_name)
end
end
client = TwitterClient.new(CONSUMER_KEY, CONSUMER_SECRET, ACCESS_TOKEN, ACCESS_TOKEN_SECRET, MY_TWITTER_ID)
3.times do
client.choice_followers(TwitterClient::NUMBER_OF_COL * TwitterClient::NUMBER_OF_ROW - 1)
break if client.get_followers
# フォロワー数の減少により、chosen_indexesの値がindexを超えてしまったら、再抽選
puts "retrying..."
end
client.generate_image
Mac, Linux라면 소스 코드에 실행 권한을 붙여 실행한다.
$ chmod +x make_follower_bingo.rb
위는 처음에만 OK.
$ ruby make_follower_bingo.rb
실행 디렉토리에 "bingo.jpg""bingo_names.txt"라는 파일이 있으면 성공!
Reference
이 문제에 관하여(Ruby × RMagick에서 트위터 팔로워 아이콘을 늘어놓은 빙고 스타일 이미지 만들기), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/tsukitoro0505/items/f42a03166bdcdf3e5fcb텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)