OSDN Git Service

each code in rss
authornomeu <nomeu@users.sourceforge.jp>
Mon, 4 Jul 2011 05:02:45 +0000 (14:02 +0900)
committernomeu <nomeu@users.sourceforge.jp>
Mon, 4 Jul 2011 05:02:45 +0000 (14:02 +0900)
bin/load-arcs-bowl.rb
bin/mmdbowl-idx.rb
lib/bowl.rb

index 3a2e73c..8abe02d 100644 (file)
@@ -11,12 +11,10 @@ require 'bowl'
 
 location = Location.find_by_code('mmdbowl')
 
-for number in 135..416
-  code = "dl#{number}"
+Bowl.each_code_in_rss do |code|
   bowl = Bowl.new(code)
   bowl.load
   next if bowl.removed?
-  next unless bowl.tabs.include?('MikuMikuDance')
 
   name = bowl.name
   summary = bowl.summary
index 3d5d466..e8a2039 100644 (file)
@@ -5,29 +5,9 @@
 $LOAD_PATH.unshift File.expand_path(File.dirname(__FILE__) + '/../lib')
 require 'bowl'
 
-require 'net/http'
-require 'rss'
+Bowl.save_rss
 
-def read_atom
-  body = ''
-  http = Net::HTTP.new('bowlroll.net')
-  http.start do
-    http.request_get('/Php/upRssAtom.php?feed=ATOM&count=20&tab=MikuMikuDance') do |response|
-      body = response.body
-    end
-  end
-  body
-end
-
-def each_code
-  feed = RSS::Parser.parse(read_atom)
-  feed.items.each do |item|
-    code = /(dl\d+)\z/.match(item.link.href)[1]
-    yield code
-  end
-end
-
-each_code do |code|
+Bowl.each_code_in_rss do |code|
   bowl = Bowl.new(code)
   if bowl.save_src
     puts "saved src #{code}"
index a77e955..6b0a1ff 100644 (file)
@@ -1,8 +1,32 @@
 require 'net/http'
+require 'rss'
 
 class Bowl
   attr_reader :code
 
+  def self.rss_path
+    "/Volumes/uploader/src/mmdbowl/bowlroll.atom"
+  end
+
+  def self.save_rss
+    http = Net::HTTP.new('bowlroll.net')
+    http.start do
+      http.request_get('/Php/upRssAtom.php?feed=ATOM&count=20&tab=MikuMikuDance') do |response|
+        open(rss_path, 'wb') { |f|
+          response.read_body { |buf| f.write buf }
+        }
+      end
+    end
+  end
+
+  def self.each_code_in_rss
+    feed = RSS::Parser.parse(IO.read(rss_path))
+    feed.items.each do |item|
+      code = /(dl\d+)\z/.match(item.link.href)[1]
+      yield code
+    end
+  end
+
   def src_path
     "/Volumes/uploader/src/mmdbowl/#{code}.html"
   end