OSDN Git Service

refactored
[tdcgexplorer/nimono-crawlers.git] / app / models / site.rb
1 class Site < ActiveGroonga::Base
2   def code
3     key
4   end
5
6   def locked_path_pattern
7     case self.code
8     when 'mmd', 'mmd3dcu'
9       "upload\\.cgi\\?mode=dl&file=(\\d+)"
10     when 'mmdfile'
11       "\\?mode=pass&idd=(\\d+)"
12     end
13   end
14
15   def locked_path_re
16     @_locked_path_re ||=
17       locked_path_pattern ? Regexp.new(Regexp.escape(url) + locked_path_pattern) : nil
18   end
19
20   def path_pattern
21     case self.code
22     when 'mmd', 'mmd3dcu'
23       "src/(\\w+)"
24     when 'mmdfile'
25       "\\?id=(\\d+)"
26     when 'mmdacc1'
27       "log/(\\w+)"
28     when 'mmdacc2'
29       "src/(\\w+)"
30     when 'mmdbowl'
31       "(dl\\d+)"
32     end
33   end
34
35   def path_re
36     @_path_re ||=
37       path_pattern ? Regexp.new(Regexp.escape(url) + path_pattern) : nil
38   end
39
40   def generate_locked_arc_code(name)
41     case self.code
42     when 'mmd'
43       code = 'up%04d' % name.to_i
44     when 'mmdfile'
45       code = 'file%04d' % name.to_i
46     when 'mmd3dcu'
47       code = 'cu%04d' % name.to_i
48     end
49     code
50   end
51
52   def generate_arc_code_and_extname(name)
53     if md = /\.(.+)\z/.match(name)
54       extname = md[1]
55       code = File.basename(name, '.' + extname)
56     else
57       extname = nil
58       code = name.dup
59     end
60     case self.code
61     when 'mmd'
62       #
63     when 'mmdfile'
64       code = 'file%04d' % code.to_i
65     when 'mmdacc1'
66       code = 'mini%04d' % code.to_i
67     when 'mmdacc2'
68       code = code[3..-1]
69     when 'mmd3dcu'
70       code = 'cu%04d' % code[3..-1].to_i
71     when 'mmdbowl'
72       code = 'bo%04d' % code[2..-1].to_i
73     end
74     [ code, extname ]
75   end
76
77   def create_arc(name, summary, size, date, origname, locked = false)
78     code, extname = generate_arc_code_and_extname(name)
79     arc = Arc.find(code)
80     if arc
81       puts "found code: #{code}"
82       return arc
83     end
84     puts "arcs.create code: #{code}"
85     arc = Arc.create(:site => self.code, :key => code, :extname => extname, :summary => summary, :origname => origname, :locked => !!locked)
86   end
87
88   def update_arc(name, summary, size, date, origname, locked = false)
89     code, extname = generate_arc_code_and_extname(name)
90     arc = Arc.find(code) || Arc.new(:site => self.code, :key => code)
91     puts "arc code: #{code}"
92     arc.update_attributes(:extname => extname, :summary => summary, :origname => origname, :locked => locked)
93   end
94 end