def get_palimpsest(self,datetime_start,datetime_end): step=timedelta(minutes=minelab*2) for datetimeelab in dates(datetime_start, datetime_end, step): pro=gest_palimpsest(datetimeelab,minelab) for program in pro.get_program(): length=program.show.length if length is None: logging.warning("get_palimpsest: %s legth is None; setting default to 3600 sec",str(program)) length = 3600 pdatetime_start=program.ar_scheduledatetime title=str(program) pdatetime_end=program.ar_scheduledatetime+timedelta(seconds=length) code=program.show.type.code type=program.show.type.type subtype=program.show.type.subtype production=program.show.production note="" if pdatetime_start >= datetime_start and pdatetime_end < datetime_end : self.append(palimpsest(title,pdatetime_start,pdatetime_end, code,type,subtype,production,note)) self.sort() #print "prima:" #for program in self: # print program # timing adjust: # 1) overlay # 2) insert music no stop for interval >15 minutes musicanostop=palimpsests([]) for i in range(len(self)-1): if self[i].datetime_end > self[i+1].datetime_start: self[i].datetime_end=self[i+1].datetime_start elif self[i].datetime_end < self[i+1].datetime_start-timedelta(minutes=15): musicanostop.append(palimpsest("Musica no stop",self[i].datetime_end, self[i+1].datetime_start,code="13f", type="13",subtype="13f",production="autoproduzione",note=None)) for element in musicanostop: self.append(element) self.sort() for i in range(len(self)-1): # 3) chain little interval if self[i].datetime_end != self[i+1].datetime_start: dtmean=self[i].datetime_end+((self[i+1].datetime_start-self[i].datetime_end)/2) self[i].datetime_end=dtmean self[i+1].datetime_start=dtmean # add head and tail: # chain little interval if len(self) > 0 : if self[0].datetime_start != datetime_start : self.insert(0,palimpsest("Musica no stop",datetime_start, self[0].datetime_start,code="13f", type="13",subtype="13f",production="autoproduzione",note=None)) if self[len(self)-1].datetime_end != datetime_end : self.append(palimpsest("Musica no stop",self[len(self)-1].datetime_end, datetime_end,code="13f", type="13",subtype="13f",production="autoproduzione",note=None)) #print "dopo:" #for program in self: # print program # Spots for datetimeelab in dates(datetime_start, datetime_end, step): #print datetimeelab,minelab spots=gest_spot(datetimeelab,minelab,playlistdir) for fascia in spots.get_fasce(genfile=False): length=spots.ar_length #pdatetime_start=spots.ar_emission_done pdatetime_start=spots.ar_scheduledatetime number=spots.ar_spots_in_fascia #title=str(fascia) title="Pubblicità" pdatetime_end=pdatetime_start+timedelta(seconds=length) type="5" subtype="5a" production="" note="%d Spot" % number #if (number <> 0 and pdatetime_start.date() == dateelab): if number <> 0 and pdatetime_start >= datetime_start and pdatetime_end < datetime_end : self.append(palimpsest(title,pdatetime_start,pdatetime_end, type,subtype,production,note)) self.sort() return self
def get_all(self,now=None,genfile=True): # time constants #this is the first and last time that I set the current time if now is None : now=datetime.now() spots=gest_spot(now,minelab,playlistdir) for fascia in spots.get_fasce(genfile): media = spots.ar_url filename = spots.ar_filename scheduledatetime=spots.ar_scheduledatetime length=spots.ar_length emission_done=spots.ar_emission_done number=spots.ar_spots_in_fascia #print scheduledatetime,media,length,number,emission_done if (number <> 0 ): self.append(schedule(fascia,scheduledatetime,media,filename,length,"spot",emission_done,title=str(fascia))) programs=gest_program(now,minelab) for programma in programs.get_program(): media = programma.ar_url filename = programma.ar_filename scheduledatetime=programma.ar_scheduledatetime length=programma.ar_length emission_done=programma.ar_emission_done title=programma.ar_title #print scheduledatetime,media,length,emission_done self.append(schedule(programma,scheduledatetime,media,filename,length,"program",\ emission_done,title=title)) playlists=gest_playlist(now,minelab) for playlist in playlists.get_playlist(): media = playlist.ar_url filename = playlist.ar_filename scheduledatetime=playlist.ar_scheduledatetime length=playlist.ar_length maxlength=playlist.length emission_done=playlist.ar_emission_done shuffle=playlist.ar_shuffle #print scheduledatetime,media,length,emission_done self.append(schedule(playlist,scheduledatetime,media,filename,length,"playlist",\ emission_done,shuffle,maxlength,title=str(playlist))) jingles=gest_jingle(now,minelab) for jingle in jingles.get_jingle(): media = jingle.ar_url filename = jingle.ar_filename scheduledatetime=jingle.ar_scheduledatetime length=jingle.ar_length emission_done=jingle.ar_emission_done #print scheduledatetime,media,length,emission_done self.append(schedule(jingle,scheduledatetime,media,filename,length,"jingle",\ emission_done,title=str(jingle))) return self