model Grabepg # To change this template use File | Settings | File Templates. attr_accessor :channel attr_accessor :data DEFAULT_GrabtvType=["cctv","satellite","digital",] def self.start end #获取网站的频道表 def self.getchannels end def initialize(channel, date) p 'Tvmao grab %s - %s - %s' % [channel._id,channel.name, date.strftime('%F')] count = ::Kfd::TvmaoChannel.count if count == 0 kk = Kanke::Kfd::Grab::TvmaoChannel.new() kk.load_in_database() end tmp_ch = ::Kfd::TvmaoChannel.where(zid:channel._id,enable: true).first if tmp_ch.nil? p 'can not find the %s | %s' % [channel._id,tmp_ch] @request_url = nil else #request_url必须进行处理 w1 ~ w14 t_url = tmp_ch.url regex_url = /http:\/\/www\.tvmao\.com\/program\/.*-w(?=.*\.html)/ _url = regex_url.match(t_url).to_s if date > Date.today.end_of_week _wd = date.wday _wd += 7 _wd += 7 if _wd == 7 else _wd = date.wday _wd = 7 if date.wday == 0 end @request_url = '%s%s.html' % [_url,_wd] end end # 返回数据 def next_schedule #need proxy unless @request_url.nil? all_schedule = get_channel_the_date_show(@request_url) p 'we get %d schedule' % all_schedule.count @enum = all_schedule.each @request_url = nil end #begin if @enum.nil? nil else sch = @enum.next p '%s %s' % [sch['begin_at'].strftime('%F %R'),sch['name']] Kanke::Kfd::Grab::Schedule.new(channel,sch['name'],sch['begin_at'], Kfd::Source::TVMAO) end #rescue StopIteration # nil # end end # 解析频道某天的节目安排 def get_channel_the_date_show(url) p ' request url %s ' % url doc = nil doc = Kanke::Kfd::Grab::Util.get_parse_doc(url) if(doc.nil?) p "doc nil" doc = Kanke::Kfd::Grab::Util.get_parse_doc(url,false) end return [] if(doc.nil?) all_schedule = [] regex_schedule = /name.strip,'begin_at' => the_show_time} rescue Exception =>e p e end } all_schedule end end