コード例 #1
0
ファイル: services.py プロジェクト: mshafrir/Junkscast
    def segments(query=None, limit=MAX_RESULTS, grouped_by=None, min_date=None, max_date=None, randomize=False, compact=False, is_ajax=False):
        def segment_comparator(s1, s2):
            return s1['epoch_time'] > s2['epoch_time'] and -1 or 1

        segments = Segment.cache()
        if query and len(query):
            filtered_segments = [segment for segment in segments if segment['description'].lower().find(query.lower()) != -1]
        else:
            filtered_segments = segments

        min_date_secs = int(time.mktime(min_date.timetuple())) if min_date else -1
        max_date_secs = int(time.mktime(max_date.timetuple())) if max_date else sys.maxint
        filtered_segments = [seg_props for seg_props in filtered_segments \
                                if min_date_secs <= seg_props.get('epoch_time', 0) < max_date_secs]

        if limit > -1:
            filtered_segments = filtered_segments[:limit]
        filtered_segments.sort(segment_comparator)

        if is_ajax:
            for segment in filtered_segments:
                del segment['date']

        if compact:
            # date_format = "%B %d, %Y"

            for segment in filtered_segments:
                pass

        if randomize and len(filtered_segments):
            return random.choice(filtered_segments)
        else:
            return filtered_segments
コード例 #2
0
ファイル: sandbox.py プロジェクト: mshafrir/Junkscast
    def get(self):
        self.response.headers['Content-Type'] = 'text/plain'
        self.response.out.write("Repeat segments\n")

        url_segs = defaultdict(list)
        for segment in Segment.cache():
            url_segs[segment['u']].append(segment)

        for url, segments in url_segs.items():
            if len(segments) > 1:
                self.response.out.write("\n\n%s" % url)
                for seg in segments:
                    self.response.out.write("\n\t%s" % seg)
コード例 #3
0
ファイル: cron.py プロジェクト: mshafrir/Junkscast
    def get(self):
        self.response.headers['Content-Type'] = 'text/plain'
        url_segs = defaultdict(list)
        for segment in Segment.cache():
            url_segs[segment['url']].append(segment)

        keys_to_del = []
        for url, segments in url_segs.items():
            if len(segments) > 1:
                control_segment = segments[0]
                for segment in segments[1:]:
                    if segment['description'] == control_segment['description']:
                        keys_to_del.append(segment['key'])

        self.response.out.write("Keys to delete: %s\n" % keys_to_del)
        segs_to_del = [seg for seg in Segment.get(keys_to_del) if seg is not None]
        self.response.out.write("Segments to delete: %s\n" % segs_to_del)
        if len(segs_to_del):
            db.delete(segs_to_del)
            Segment.cache(True)
            self.response.out.write("\nDeleted marked segments and reset cache.")
        else:
            self.response.out.write("\nNo segments were deleted.")
コード例 #4
0
ファイル: services.py プロジェクト: mshafrir/Junkscast
    def get(self):
        self.response.headers['Content-Type'] = 'application/json'

        key = self.request.get('key', '')
        segments = Segment.cache()
        try:
            idx = [segment['key'] for segment in segments].index(key)
        except:
            idx = -1

        try:
            limit = int(self.request.get('limit', MAX_RESULTS))
        except:
            limit = MAX_RESULTS

        if limit < -1:
            limit = len(segments)

        latest_segments = segments[idx + 1:idx + 1 + limit]
        self.response.out.write("%s" % json.dumps({'segments': latest_segments}))
コード例 #5
0
ファイル: services.py プロジェクト: mshafrir/Junkscast
 def get(self):
     segments = Segment.cache()
     logging.debug("segments: %s" % segments)
     self.response.headers['Content-Type'] = 'text/plain'