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
$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}"
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