Exemplo n.º 1
0
 def __init__(self, name, server=None):
     try:
         self.group = Group.objects.get(name=name)
         additional_regex = [filter.re for filter in PostFilter.objects.all()]
         self.filter_regex = Composite([NZB_REGEX]+additional_regex)
     except Group.DoesNotExist:
         group = Group()
         group.name = name
         group.save()
         self.group = group
     
     self.server = server if server else get_server()
Exemplo n.º 2
0
 def parse(self, all=False):
     """ parses group starting with the first post """
     server = get_server()
     iterator = server.get_group(self.name)
     parser = Parser(self.name, server)
     
     if all:
         last = parser._parse(iterator)
     else:
         last = parser._parse(iterator)
         
     # create history of what was just parsed, then consolidate it with
     # existing parse histories
     self.consolidate_histories()
Exemplo n.º 3
0
 def parse_new(self):
     """ parses group starting with the newest post """
     server = get_server()
     iterator = server.get_group(self.name)
     parser = Parser(self.name, server)
     last = self.get_last()
     
     if last == None:
         print '%s Parsing all posts' % (self.name)
         last = parser._parse(iterator)
     else:
         start = last+1
         print '%s Parsing starting with: %s ' % (self.name, start)
         last = parser._parse(iterator[start-iterator.first:])
         
     # create history of what was just parsed, then consolidate it with
     # existing parse histories
     self.consolidate_histories()
Exemplo n.º 4
0
 def get_nzb(self):
     """
     Fetches the nzb post from usenet, decoding it.  This will cache the
     post if needed
     """
     if not self.nzb_id:
         # no nzb id, use find related to build an nzb for the file this
         # post is for.  Only works if find_related() returns posts
         related = self.find_related()
         if related:
             return NZB(related).to_xml()
         return None
     if self._nzb:
         return self._nzb
     
     server = get_server()
     self._nzb = server.get_file(self.nzb_id)
     return self._nzb
Exemplo n.º 5
0
 def reverse_parse(self, all=False):
     """
     Parses group starting from the newest post.  This is used for building
     the index with the most recent content first.  Useful for when you are
     concerned with something recent, and don't want to spend the time
     indexing from the beginning (for instance giganews retains 600 days)
     """
     server = get_server()
     iterator = server.get_group(self.name)
     parser = Parser(self.name, server)
     
     
     end = iterator.last
     first = iterator.first
     count = iterator.count
     INTERVAL = 100000
     print 'reverse parse: first=%s   end=%s  count=%s' % (first, end, count)
     while end > first:
         parser._parse(iterator[end-INTERVAL-first:end-first])
         end -= INTERVAL
Exemplo n.º 6
0
 def get_nfo(self):
     """
     Fetches the nfo post from usenet, decoding it.  This will cache the
     post if needed
     """
     if not self.nfo_id:
         # no nfo id, try and get it from the nzb if we have it
         if self.nzb_id:
             nzb = self.nzb
             match = NZB_NFO_REGEX.search(self.nzb)
             if match:
                 # resolve the nfo_id and save it
                 self.nfo_id = '<%s>' % match.groups()[1]
                 self.save()
                 return self.get_nfo()
         return None
         
     if self._nfo:
         return self._nfo
     
     server = get_server()
     self._nfo = server.get_file(self.nfo_id)
     return self._nfo