<div dir="ltr">Scusate, ho questa funzione che uso per popolare il DB di articoli presi da feed di vario tipo (atom, rss..) con l'aiuto di feedparser:<div><br></div><div><div>def check_feed(feedk, e=0):</div><div> feed = feedk.get()</div>
<div> parsed = fetch_feed(feed.feed)</div><div> if parsed:</div><div> try:</div><div> entry = parsed['items'][e]</div><div> while unicode(feed.last_id) != unicode(entry['link']):</div>
<div style> scrivineldb()</div><div> e += 1</div><div> entry = parsed['items'][e]</div><div> feed.last_id = unicode(parsed['items'][0]['link'])</div>
<div> feed.put()</div><div> except:</div><div> pass</div></div><div><br></div><div style>Oltre al try/except/pass che non mi piace ho un problema nel 'while' che ha il compito di scrivineldb() finché non raggiunge l'ultimo articolo del processo precendente (feed.last_id).</div>
<div style><br></div><div style>Il problema è che anche quando "feed.last_id" e "entry['link']" sono uguali la funziona li identifica come diversi. Ho pensato che dipenda dalla codifica - che non conosco abbastanza - ma non riesco a risolvere:</div>
<div style>feed.last_id è una StringProperty di appengine che la documentazione dice essere unicode. Lo uso come un cursore, salvando l'ultimo "item" in modo che nel prossimo task la funzione si fermi quando lo raggiunge evitando duplicati.<br>
</div><div style>entry['link'] è anche una stringa unicode come dice la documentazione di feedparser ed è l'oggeto che comparo col 'cursore'.<br></div><div style>Entrambe sono degli url in unicode tipo: u'<a href="http://esempio.it/post/123">http://esempio.it/post/123</a>'</div>
<div style><br></div><div style>La comparazione nel while dovrebbe funzionare anche senza esplicitare l' unicode() ma niente continua a consumare risorse processando tutti gli articoli nel feed.</div><div style><br></div>
<div style>idee..</div></div>