Уведомления

Jabber-конференция сообщества: pythonua@conference.jabber.ru

#1 Фев. 28, 2007 13:30:09

cleg
От:
Зарегистрирован: 2006-11-09
Сообщения: 153
Репутация: +  0  -
Профиль   Отправить e-mail  

"Сделай сам" RSS-читалку

Решил я стало быть для своих нужд, а так же в целях изучаний Пайтона сделать RSS-читалку.
Заодно и с библиотеками разберусь, и делу опять-таки польза.

От сначала что за 3 часа разборок с либами вышло.

структура данных:

from sqlobject import *
from datetime import datetime

sqlhub.processConnection = connectionForURI('sqlite:/C|/projects/test.sqldb')

class FeedsList(SQLObject):
feed_name = StringCol()
feed_url = StringCol()
lastmod = DateTimeCol()

class FeedEntry(SQLObject):
feed_id = ForeignKey('FeedsList')
post_title=UnicodeCol()
post_summary = UnicodeCol()
post_url = UnicodeCol(unique=True)
post_date = DateTimeCol(default=datetime.now())

if __name__== "__main__":
FeedsList.createTable(ifNotExists = True)
FeedEntry.createTable(ifNotExists = True)
“перегружалка” новостей

import feedparser
from sqlobject import *
from datastruct import *
from datetime import datetime
from pysqlite2.dbapi2 import IntegrityError

for feed in FeedsList.select():
my_pars = feedparser.parse(feed.feed_url)
print feed.feed_name
count = 0
for entry in my_pars.entries:
try:
FeedEntry(feed_id=feed.id, post_title=entry.title,
post_summary=entry.description, post_url=entry.link)
count = count + 1
except IntegrityError:
pass
print count
возникает несколько вопросов
1. такая обработка эксепшена как у меня - это приемлемо или это полная кака допускать которйю нельзя? (добиться обработки modified или etag уверенной - я не смог)
2. как лучше обеспечить всему этому “веб-интерфейс” - прикрутить Django/TG или сделать “руками” - найдя шаблонный движок и т.п.
3. в каком формате вообще задается datetime???



Офлайн

#2 Фев. 28, 2007 15:25:23

cleg
От:
Зарегистрирован: 2006-11-09
Сообщения: 153
Репутация: +  0  -
Профиль   Отправить e-mail  

"Сделай сам" RSS-читалку

уже переписываю. с удовольствием бы посмотрел исходники, но увы доступа в SVN нету :-(



Офлайн

#3 Фев. 28, 2007 16:02:13

j2a
От:
Зарегистрирован: 2006-06-29
Сообщения: 869
Репутация: +  1  -
Профиль   Отправить e-mail  

Офлайн

#4 Фев. 28, 2007 16:56:07

cleg
От:
Зарегистрирован: 2006-11-09
Сообщения: 153
Репутация: +  0  -
Профиль   Отправить e-mail  

"Сделай сам" RSS-читалку

j2a
спасибо :/



Офлайн

#5 Март 1, 2007 06:15:53

pythonwin
От:
Зарегистрирован: 2006-07-18
Сообщения: 1294
Репутация: +  0  -
Профиль   Отправить e-mail  

"Сделай сам" RSS-читалку

cleg
from sqlobject import * from datastruct import *
cleg
from sqlobject import *
лучше вместо импортирования всего из пакета sqlobject, лучше напиши
sqlobject.main.SQLObject

##from sqlobject import *
##from sqlobject.col import BLOBCol, UnicodeCol, IntCol, TimeCol, DateTimeCol, ForeignKey, StringCol, PickleCol
import sqlobject
from datetime import datetime
sqlhub.processConnection = connectionForURI('sqlite:/C|/projects/test.sqldb')
class FeedsList(sqlobject.main.SQLObject):
    feed_name = sqlobject.col.StringCol()
    feed_url = sqlobject.col.StringCol()
    lastmod = sqlobject.col.DateTimeCol()
class FeedEntry(sqlobject.main.SQLObject):
    feed_id = sqlobject.col.ForeignKey('FeedsList')
    post_title=sqlobject.col.UnicodeCol()
    post_summary = sqlobject.col.UnicodeCol()
    post_url = sqlobject.col.UnicodeCol(unique=True)
    post_date = sqlobject.col.DateTimeCol(default=datetime.now())
if __name__== "__main__":
    FeedsList.createTable(ifNotExists = True)
    FeedEntry.createTable(ifNotExists = True)
import feedparser
##from sqlobject import *
import sqlobject ## хотя не понимаю зачем он здесь...
from datastruct import * ## это что за модуль?
from datetime import datetime
from pysqlite2.dbapi2 import IntegrityError
for feed in FeedsList.select():
    my_pars = feedparser.parse(feed.feed_url)
    print feed.feed_name
    count = 0
    for entry in my_pars.entries:
        try:
            FeedEntry(feed_id=feed.id, post_title=entry.title, 
                    post_summary=entry.description, post_url=entry.link)
    count = count + 1
        except IntegrityError:
            pass
    print count



Офлайн

#6 Март 1, 2007 17:52:09

dvs
От:
Зарегистрирован: 2006-05-22
Сообщения: 176
Репутация: +  3  -
Профиль   Отправить e-mail  

"Сделай сам" RSS-читалку

cleg, можно ещё посмотреть исходники feedjack http://www.feedjack.org/download/Feedjack-0.9.9.tar.gz



Офлайн

#7 Март 2, 2007 10:07:53

cleg
От:
Зарегистрирован: 2006-11-09
Сообщения: 153
Репутация: +  0  -
Профиль   Отправить e-mail  

"Сделай сам" RSS-читалку

pythonwin
import sqlobject ## хотя не понимаю зачем он здесь…
“останки” :-)

pythonwin
from datastruct import * ## это что за модуль?
а это просто первый модуль, в котором структура данных описана :-)

dvs
спасибо :-) видимо “сделай сам” у меня уже не выйдет :-)



Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version