Ejemplo n.º 1
0
def main():
    categories = Categorie.objects.all().order_by("volgorde").iterator()
    for categorie in categories:
        rank = 0
        print categorie.id, categorie.naam
        AukArtikelCategorie.objects.filter(cat=categorie).update(rank=None, total_weight=None)
        artikelcategories = AukArtikelCategorie.objects.filter(cat=categorie).iterator()
        rankedartikelcategories = []
        for artikelcategorie in artikelcategories:
            interval = datetime.now() - artikelcategorie.art.pubdate
            interval = float(interval.days * (3600 * 24) + interval.seconds) / (24 * 3600)
            artikelcategorie.total_weight = (
                nvl(artikelcategorie.calculated_weight, 0)
                + float(categorie.cloud_factor) * nvl(artikelcategorie.cloud_weight, 0)
                - float(categorie.aging_factor) * interval
            )
            rankedartikelcategories.append(artikelcategorie)

        rankedartikelcategories = sorted(
            rankedartikelcategories, key=lambda artikelcategorie: artikelcategorie.total_weight, reverse=True
        )[:50]

        for idx, rankedartikelcategorie in enumerate(rankedartikelcategories):
            rank = idx + 1
            try:
                print rank, rankedartikelcategorie.total_weight, rankedartikelcategorie.art.id, rankedartikelcategorie.art.uniek
            except:
                printExceptionInfo()
                continue

            articlecategorie, created = AukArtikelCategorie.objects.get_or_create(
                art=rankedartikelcategorie.art, cat=rankedartikelcategorie.cat
            )
            articlecategorie.total_weight = rankedartikelcategorie.total_weight
            articlecategorie.rank = rank
            articlecategorie.save()
Ejemplo n.º 2
0
def main() :
  i = 0
  aukrubrieken = Rubriek.objects.all()
  for aukrubriek in aukrubrieken :
    krant = Krant.objects.get(id=aukrubriek.krt_id)
    if aukrubriek.actief == 'Y' :
      try : 
       
       for event, elem in iterparse(urllib2.urlopen(aukrubriek.url)):
         if elem.tag == "item":
           i = i + 1
           print i
           title = elem.findtext("title")
           if title.find('#') == 0 :
             title = title[title.find(':') + 2:]
           pubdate = elem.findtext("pubDate")
           pubdate = pubdate[5:25]
            
           pubdateAsDate = datetime.strptime(pubdate, '%d %b %Y %H:%M:%S')
           pubdate = pubdateAsDate.strftime('%Y-%m-%d')
           uniek = title + "#date#" + pubdate
           
           pubdate = pubdateAsDate.strftime('%Y-%m-%d %H:%M:%S')
  
           url = elem.findtext("link")
           rssfeeddescription = elem.findtext("description")
           

           try :
             AukArtikel.objects.get(uniek = uniek)
           except ObjectDoesNotExist :   
             
             article = urllib2.urlopen(url).read()
             
             xslt_dir = settings.PROJECT_DIR + '/aggregator/xslt'
           
             # volkskrant trouw
             if krant.naam == 'volkskrant' or krant.naam == 'trouw' : 
                xslt_file = 'volkstrant_trouw.xslt'
    
             # nrc
             elif krant.naam == 'nrc' :
                xslt_file = 'nrc.xslt'
  
             xslt = xslt_dir + '/' + xslt_file
                        
             html = etree.HTML(article)
             transform = etree.XSLT(etree.XML(open(xslt).read()))
             article = transform(html)           
             
             body = str(article)
  
             # TODO dit beter maken           
             #  body_clean = re.match("<[^>]+>", body.lower())
             body_clean = body.lower()
 
           # omdat get_or_create niet werkt zoals verwacht
           # nu maar met deze try continue oplossing
           try :
             AukArtikel.objects.get(uniek = uniek)
           except ObjectDoesNotExist :   
             # save artikel
             artikel, created = AukArtikel.objects.get_or_create(
                uniek              = uniek
              , titel              = title
              , pubdate            = pubdate
              , url                = url
              , rssfeeddescription = rssfeeddescription
              , body               = body
              , body_clean         = body_clean
             )
           
           # deze regel is nodig omdat nog verkeerde sequence wordt gebruikt
           # als goede sequence wordt gebruikt is deze regel waarschijnlijk niet meer nodig
           artikel = AukArtikel.objects.get(uniek = uniek)
  
           # save artikelPublicatie
           artikelPublicatie, created = AukArtikelPublicatie.objects.get_or_create(
             art = artikel,
             rbk = aukrubriek
           )
  
         
      except :
       printExceptionInfo()
       continue