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
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
|
# File 'lib/command/mail.rb', line 42
def execute(argv)
super
send_all = false
device = Narou.get_device
database = Database.instance
begin
mailer = Mailer.create
rescue Mailer::SettingNotFound
install_mailer_setting
return
rescue Mailer::SettingUncompleteError => e
error e.message
exit Narou::EXIT_ERROR_CODE
end
if argv.empty?
send_all = true
database.each_key do |id|
next if Narou.novel_frozen?(id)
argv << id
end
end
tagname_to_ids(argv)
argv.each do |target|
if target == "hotentry"
ebook_path = Update.get_newest_hotentry_file_path(device)
display_target = "hotentry"
else
ebook_path = Narou.get_ebook_file_path(target, device ? device.ebook_file_ext : ".epub")
data = Downloader.get_data_by_target(target)
if send_all && !@options["force"]
new_arrivals_date = data["new_arrivals_date"] || Time.now
if data["last_mail_date"] && new_arrivals_date < data["last_mail_date"]
next
end
end
end
unless ebook_path
error "#{target} は存在しません" unless send_all
next
end
unless File.exist?(ebook_path)
error "まだファイル(#{File.basename(ebook_path)})が無いようです" unless send_all
next
end
if target != "hotentry"
id = data["id"]
title = data["title"]
display_target = "ID:#{id} #{TermColorLight.escape(title)}"
end
puts "<bold><green>#{display_target}</green></bold>".termcolor
print "メールを送信しています"
exit_mail = false
mail_result = nil
Thread.new do
mail_result = mailer.send(File.basename(ebook_path), ebook_path)
exit_mail = true
end
until exit_mail
print "."
sleep(0.5)
end
puts
if mail_result
puts File.basename(ebook_path) + " をメールで送信しました"
database[id]["last_mail_date"] = Time.now if target != "hotentry"
else
error "#{mailer.error_message}"
exit Narou::EXIT_ERROR_CODE
end
end
rescue Interrupt
puts "メール送信を中断しました"
exit Narou::EXIT_INTERRUPT
ensure
database.save_database if database
end
|