質問編集履歴

3

コードの訂正

2023/01/19 22:39

投稿

takotthi
takotthi

スコア1

test CHANGED
File without changes
test CHANGED
@@ -84,8 +84,8 @@
84
84
  "duration": "30 second",
85
85
  "method": "https://kron.4ty2.fun/new",
86
86
  "payload":{
87
- "username": "johnDoe",
87
+ "username": "******",
88
- "ID": "3wr12rfcewu"
88
+ "ID": "******"
89
89
  }
90
90
  }
91
91
  ```

2

丁寧にしました。

2023/01/19 22:38

投稿

takotthi
takotthi

スコア1

test CHANGED
File without changes
test CHANGED
@@ -1,6 +1,7 @@
1
1
  rubyをつかって、twitterの地震botを作っているのですが、どうにもエラーが出てしまいます
2
2
  エラーの内容は読み込めてないとわかったのですが、直し方がわかりません。教えてください
3
3
  コードはこんな感じです
4
+ *****の場所は隠してます
4
5
  ```ruby
5
6
  # encoding: utf-8
6
7
  require "open-uri"

1

コードを追加しました

2023/01/19 22:37

投稿

takotthi
takotthi

スコア1

test CHANGED
File without changes
test CHANGED
@@ -1,2 +1,90 @@
1
1
  rubyをつかって、twitterの地震botを作っているのですが、どうにもエラーが出てしまいます
2
2
  エラーの内容は読み込めてないとわかったのですが、直し方がわかりません。教えてください
3
+ コードはこんな感じです
4
+ ```ruby
5
+ # encoding: utf-8
6
+ require "open-uri"
7
+ require "uri"
8
+ require "rubygems"
9
+ require "nokogiri"
10
+ require "twitter"
11
+
12
+ class HttpClient
13
+ User_Agent = "Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; WOW64; Trident/5.0)"
14
+ def self.request(url)
15
+ begin
16
+ response = open(url, "User-Agent" => User_Agent)
17
+ doc = Nokogiri::HTML(response)
18
+ rescue OpenURI::HTTPError => err
19
+ puts err.message
20
+ end
21
+ end
22
+ end
23
+
24
+ class Parser
25
+ def self.parse(doc)
26
+ info = {}
27
+ doc.css(".yjw_table").first.css("tr").each do |tr|
28
+ info_name,info_value = tr.text.split("\n")
29
+ info[info_name] = info_value.strip
30
+ end
31
+ return info
32
+ end
33
+ end
34
+
35
+ class TwitterClient
36
+ require 'openssl'
37
+ # Avoid "SSL_connect returned=1 errno=0 state=SSLv3 read server certificate B: certificate verify failed"
38
+ OpenSSL::SSL::VERIFY_PEER = OpenSSL::SSL::VERIFY_NONE
39
+
40
+ CONSUMER_KEY = '**********'
41
+ CONSUMER_SECRET = '********'
42
+ OAUTH_TOKEN = '*******'
43
+ OAUTH_TOKEN_SECRET = '*******'
44
+
45
+ def self.tweet(message)
46
+ Twitter::Client.new(
47
+ :consumer_key => CONSUMER_KEY,
48
+ :consumer_secret => CONSUMER_SECRET,
49
+ :oauth_token => OAUTH_TOKEN,
50
+ :oauth_token_secret => OAUTH_TOKEN_SECRET
51
+ ).update(message)
52
+ end
53
+ end
54
+
55
+ begin
56
+ info = Parser::parse(HttpClient::request("http://typhoon.yahoo.co.jp/weather/jp/earthquake/"))
57
+
58
+ prev_datetime = nil
59
+
60
+ if (File.exists?("earthquake.log"))
61
+ File.open("earthquake.log", "r") do |file|
62
+ prev_datetime = file.read
63
+ file.close
64
+ end
65
+ end
66
+
67
+ exit if prev_datetime == info["発生時刻"]
68
+
69
+ TwitterClient::tweet(
70
+ info["発生時刻"] + "、地震が発生しました。震源地は" + info["震源地"] + "、マグニチュード" + info["マグニチュード"] + "です。" + info["情報"]
71
+ )
72
+
73
+ File.open("earthquake.log", "w") do |file|
74
+ file.write(info["発生時刻"])
75
+ file.close
76
+ end
77
+ rescue
78
+ puts $!
79
+ end
80
+
81
+ {
82
+ "url": "https://replit.com:/*******?s=app",
83
+ "duration": "30 second",
84
+ "method": "https://kron.4ty2.fun/new",
85
+ "payload":{
86
+ "username": "johnDoe",
87
+ "ID": "3wr12rfcewu"
88
+ }
89
+ }
90
+ ```