This repository has been archived by the owner on Mar 22, 2022. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathjoya_no_kane_with_108_stars.rb
69 lines (56 loc) · 2.61 KB
/
joya_no_kane_with_108_stars.rb
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
require 'twitter'
require 'csv'
require './twitter_api_config.rb'
class JoyaNoKaneWith108Stars
include TwitterApiConfig
HITTING_STATUS_FILENAME = File.expand_path('../hitting_status', __FILE__)
STARS_NAME_CSV_FILENAME = File.expand_path('../108_stars_name.csv', __FILE__)
BEGIN_DATETIME = "2016-12-31 22:11:59"
FINISH_DATETIME = "2017-01-01 00:01:59"
TO_HIT_TIMES = 108
OPENING_TWEET = "ただいまより108星除夜の鐘を撞き始めたいと存じます / キャラの登場作品順は、「幻水I / 幻水II / 幻水III / 幻水IV / 幻水V/ 幻水TK / 幻水紡時」という順となります"
FINISH_TWEET = "108星の願いとともに! / 2017年もよろしくお願いいたします"
# CSV の最終行からツイートを開始し、一行ずつ上の行に進んでいく
# HACK: マジックナンバーの撤廃
TWEET_CONTENT = "108星除夜の鐘(#{@hitting_times + 1} 回目): [#{@stars_name_array[107 - @hitting_times][0]}] : #{@stars_name_array[107 - @hitting_times][1]} / #{@stars_name_array[107 - @hitting_times][2]} / #{@stars_name_array[107 - @hitting_times][3]} / #{@stars_name_array[107 - @hitting_times][4]} / #{@stars_name_array[107 - @hitting_times][5]} / #{@stars_name_array[107 - @hitting_times][6]} / #{@stars_name_array[107 - @hitting_times][7]}"
def main
create_hitting_status_file unless File.exist?(HITTING_STATUS_FILENAME)
judge_to_hit
import_stars_name
twitter_api_config
if @hitting_times == 0
tweet_content = OPENING_TWEET
elsif @hitting_times == (TO_HIT_TIMES - 1)
tweet_content = FINISH_TWEET
else
tweet_content = TWEET_CONTENT
end
@client.update(tweet_content)
update_hitting_status
end
# 最初から撞き直したい場合は hitting_status ファイルを削除する
def create_hitting_status_file
File.open(HITTING_STATUS_FILENAME, "w") do |file|
file.puts "0" # 撞いた回数
end
@hitting_times = 0
end
def update_hitting_status
@hitting_times += 1
File.open(HITTING_STATUS_FILENAME, "r+") do |file|
file.puts "#{updated_status}"
end
end
def judge_to_hit
begin_datetime = Time.parse(BEGIN_DATETIME)
finish_datetime = Time.parse(FINISH_DATETIME)
now_datetime = Time.now
exit(0) if (begin_datetime - now_datetime <= 0) && (now_datetime - finish_datetime >= 0) # HACK: ここは初期化処理のような部分でやるべき
exit(0) if @hitting_times > TO_HIT_TIMES
end
def import_stars_name
@stars_name_array = CSV.read(STARS_NAME_CSV_FILENAME, headers: false)
end
end
joya_no_kane = JoyaNoKaneWith108Stars.new
joya_no_kane.main