File tree Expand file tree Collapse file tree 1 file changed +21
-18
lines changed Expand file tree Collapse file tree 1 file changed +21
-18
lines changed Original file line number Diff line number Diff line change @@ -16,6 +16,26 @@ def safe_open(url)
16
16
end
17
17
end
18
18
19
+ def fetch_rss_items ( url , logger )
20
+ logger . info ( "Fetching RSS → #{ url } " )
21
+ begin
22
+ rss = safe_open ( url )
23
+ feed = RSS ::Parser . parse ( rss , false )
24
+ feed . items . map { |item | item_to_hash ( item ) }
25
+ rescue => e
26
+ logger . warn ( "⚠️ Failed to fetch #{ url } : #{ e . message } " )
27
+ [ ]
28
+ end
29
+ end
30
+
31
+ def item_to_hash ( item )
32
+ {
33
+ 'url' => item . link ,
34
+ 'title' => item . title ,
35
+ 'published_at' => item . pubDate . to_s
36
+ }
37
+ end
38
+
19
39
namespace :news do
20
40
desc 'RSS フィードから最新ニュースを取得し、db/news.yml に書き出す'
21
41
task fetch : :environment do
@@ -45,24 +65,7 @@ namespace :news do
45
65
]
46
66
end
47
67
48
- # RSS 取得&パース
49
- new_items = feed_urls . flat_map do |url |
50
- logger . info ( "Fetching RSS → #{ url } " )
51
- begin
52
- rss = safe_open ( url )
53
- feed = RSS ::Parser . parse ( rss , false )
54
- feed . items . map do |item |
55
- {
56
- 'url' => item . link ,
57
- 'title' => item . title ,
58
- 'published_at' => item . pubDate . to_s
59
- }
60
- end
61
- rescue => e
62
- logger . warn ( "⚠️ Failed to fetch #{ url } : #{ e . message } " )
63
- [ ]
64
- end
65
- end
68
+ new_items = feed_urls . flat_map { |url | fetch_rss_items ( url , logger ) }
66
69
67
70
# 既存データをハッシュに変換(URL をキーに)
68
71
existing_items_hash = existing_news . index_by { |item | item [ 'url' ] }
You can’t perform that action at this time.
0 commit comments