Latest posts on "Сделай сам" RSS-читалку topichttp://python.su/forum/topic/506/2007-03-02T10:07:53+02:00Общий :: Python для экспертов :: "Сделай сам" RSS-читалку
2007-03-02T10:07:53+02:00cleg3583<blockquote><em>pythonwin</em><br/>import sqlobject ## хотя не понимаю зачем он здесь…</blockquote>“останки” :-)<br/><br/><blockquote><em>pythonwin</em><br/>from datastruct import * ## это что за модуль?</blockquote>а это просто первый модуль, в котором структура данных описана :-)<br/><br/><strong>dvs</strong><br/>спасибо :-) видимо “сделай сам” у меня уже не выйдет :-)
Общий :: Python для экспертов :: "Сделай сам" RSS-читалку
2007-03-01T17:52:09+02:00dvs3569<strong>cleg</strong>, можно ещё посмотреть исходники feedjack <a href="http://www.feedjack.org/download/Feedjack-0.9.9.tar.gz">http://www.feedjack.org/download/Feedjack-0.9.9.tar.gz</a>
Общий :: Python для экспертов :: "Сделай сам" RSS-читалку
2007-03-01T06:15:53+02:00pythonwin3541<blockquote><em>cleg</em><br/>from sqlobject import * from datastruct import *</blockquote><blockquote><em>cleg</em><br/>from sqlobject import *</blockquote>лучше вместо импортирования всего из пакета sqlobject, лучше напиши<br/>sqlobject.main.SQLObject<br/><br/><div class="code"><pre><span class="c">##from sqlobject import *</span>
<span class="c">##from sqlobject.col import BLOBCol, UnicodeCol, IntCol, TimeCol, DateTimeCol, ForeignKey, StringCol, PickleCol</span>
<span class="kn">import</span> <span class="nn">sqlobject</span>
<span class="kn">from</span> <span class="nn">datetime</span> <span class="kn">import</span> <span class="n">datetime</span>
<span class="n">sqlhub</span><span class="o">.</span><span class="n">processConnection</span> <span class="o">=</span> <span class="n">connectionForURI</span><span class="p">(</span><span class="s">'sqlite:/C|/projects/test.sqldb'</span><span class="p">)</span>
<span class="k">class</span> <span class="nc">FeedsList</span><span class="p">(</span><span class="n">sqlobject</span><span class="o">.</span><span class="n">main</span><span class="o">.</span><span class="n">SQLObject</span><span class="p">):</span>
<span class="n">feed_name</span> <span class="o">=</span> <span class="n">sqlobject</span><span class="o">.</span><span class="n">col</span><span class="o">.</span><span class="n">StringCol</span><span class="p">()</span>
<span class="n">feed_url</span> <span class="o">=</span> <span class="n">sqlobject</span><span class="o">.</span><span class="n">col</span><span class="o">.</span><span class="n">StringCol</span><span class="p">()</span>
<span class="n">lastmod</span> <span class="o">=</span> <span class="n">sqlobject</span><span class="o">.</span><span class="n">col</span><span class="o">.</span><span class="n">DateTimeCol</span><span class="p">()</span>
<span class="k">class</span> <span class="nc">FeedEntry</span><span class="p">(</span><span class="n">sqlobject</span><span class="o">.</span><span class="n">main</span><span class="o">.</span><span class="n">SQLObject</span><span class="p">):</span>
<span class="n">feed_id</span> <span class="o">=</span> <span class="n">sqlobject</span><span class="o">.</span><span class="n">col</span><span class="o">.</span><span class="n">ForeignKey</span><span class="p">(</span><span class="s">'FeedsList'</span><span class="p">)</span>
<span class="n">post_title</span><span class="o">=</span><span class="n">sqlobject</span><span class="o">.</span><span class="n">col</span><span class="o">.</span><span class="n">UnicodeCol</span><span class="p">()</span>
<span class="n">post_summary</span> <span class="o">=</span> <span class="n">sqlobject</span><span class="o">.</span><span class="n">col</span><span class="o">.</span><span class="n">UnicodeCol</span><span class="p">()</span>
<span class="n">post_url</span> <span class="o">=</span> <span class="n">sqlobject</span><span class="o">.</span><span class="n">col</span><span class="o">.</span><span class="n">UnicodeCol</span><span class="p">(</span><span class="n">unique</span><span class="o">=</span><span class="bp">True</span><span class="p">)</span>
<span class="n">post_date</span> <span class="o">=</span> <span class="n">sqlobject</span><span class="o">.</span><span class="n">col</span><span class="o">.</span><span class="n">DateTimeCol</span><span class="p">(</span><span class="n">default</span><span class="o">=</span><span class="n">datetime</span><span class="o">.</span><span class="n">now</span><span class="p">())</span>
<span class="k">if</span> <span class="n">__name__</span><span class="o">==</span> <span class="s">"__main__"</span><span class="p">:</span>
<span class="n">FeedsList</span><span class="o">.</span><span class="n">createTable</span><span class="p">(</span><span class="n">ifNotExists</span> <span class="o">=</span> <span class="bp">True</span><span class="p">)</span>
<span class="n">FeedEntry</span><span class="o">.</span><span class="n">createTable</span><span class="p">(</span><span class="n">ifNotExists</span> <span class="o">=</span> <span class="bp">True</span><span class="p">)</span>
<span class="kn">import</span> <span class="nn">feedparser</span>
<span class="c">##from sqlobject import *</span>
<span class="kn">import</span> <span class="nn">sqlobject</span> <span class="c">## хотя не понимаю зачем он здесь...</span>
<span class="kn">from</span> <span class="nn">datastruct</span> <span class="kn">import</span> <span class="o">*</span> <span class="c">## это что за модуль?</span>
<span class="kn">from</span> <span class="nn">datetime</span> <span class="kn">import</span> <span class="n">datetime</span>
<span class="kn">from</span> <span class="nn">pysqlite2.dbapi2</span> <span class="kn">import</span> <span class="n">IntegrityError</span>
<span class="k">for</span> <span class="n">feed</span> <span class="ow">in</span> <span class="n">FeedsList</span><span class="o">.</span><span class="n">select</span><span class="p">():</span>
<span class="n">my_pars</span> <span class="o">=</span> <span class="n">feedparser</span><span class="o">.</span><span class="n">parse</span><span class="p">(</span><span class="n">feed</span><span class="o">.</span><span class="n">feed_url</span><span class="p">)</span>
<span class="k">print</span> <span class="n">feed</span><span class="o">.</span><span class="n">feed_name</span>
<span class="n">count</span> <span class="o">=</span> <span class="mi">0</span>
<span class="k">for</span> <span class="n">entry</span> <span class="ow">in</span> <span class="n">my_pars</span><span class="o">.</span><span class="n">entries</span><span class="p">:</span>
<span class="k">try</span><span class="p">:</span>
<span class="n">FeedEntry</span><span class="p">(</span><span class="n">feed_id</span><span class="o">=</span><span class="n">feed</span><span class="o">.</span><span class="n">id</span><span class="p">,</span> <span class="n">post_title</span><span class="o">=</span><span class="n">entry</span><span class="o">.</span><span class="n">title</span><span class="p">,</span>
<span class="n">post_summary</span><span class="o">=</span><span class="n">entry</span><span class="o">.</span><span class="n">description</span><span class="p">,</span> <span class="n">post_url</span><span class="o">=</span><span class="n">entry</span><span class="o">.</span><span class="n">link</span><span class="p">)</span>
<span class="n">count</span> <span class="o">=</span> <span class="n">count</span> <span class="o">+</span> <span class="mi">1</span>
<span class="k">except</span> <span class="n">IntegrityError</span><span class="p">:</span>
<span class="k">pass</span>
<span class="k">print</span> <span class="n">count</span>
</pre></div>
Общий :: Python для экспертов :: "Сделай сам" RSS-читалку
2007-02-28T16:56:07+02:00cleg3532<strong>j2a</strong><br/>спасибо :/
Общий :: Python для экспертов :: "Сделай сам" RSS-читалку
2007-02-28T16:02:13+02:00j2a3529<a href="http://code.djangoproject.com/browser/djangoproject.com/django_website/apps/aggregator">http://code.djangoproject.com/browser/djangoproject.com/django_website/apps/aggregator</a>
Общий :: Python для экспертов :: "Сделай сам" RSS-читалку
2007-02-28T15:25:23+02:00cleg3527уже переписываю. с удовольствием бы посмотрел исходники, но увы доступа в SVN нету :-(
Общий :: Python для экспертов :: "Сделай сам" RSS-читалку
2007-02-28T13:30:09+02:00cleg3522Решил я стало быть для своих нужд, а так же в целях изучаний Пайтона сделать RSS-читалку.<br/>Заодно и с библиотеками разберусь, и делу опять-таки польза.<br/><br/>От сначала что за 3 часа разборок с либами вышло.<br/><br/>структура данных:<br/><br/><div class="code"><pre>from sqlobject import *<br/>from datetime import datetime<br/><br/>sqlhub.processConnection = connectionForURI('sqlite:/C|/projects/test.sqldb')<br/><br/>class FeedsList(SQLObject):<br/> feed_name = StringCol()<br/> feed_url = StringCol()<br/> lastmod = DateTimeCol()<br/><br/>class FeedEntry(SQLObject):<br/> feed_id = ForeignKey('FeedsList')<br/> post_title=UnicodeCol()<br/> post_summary = UnicodeCol()<br/> post_url = UnicodeCol(unique=True)<br/> post_date = DateTimeCol(default=datetime.now())<br/><br/>if __name__== "__main__":<br/> FeedsList.createTable(ifNotExists = True)<br/> FeedEntry.createTable(ifNotExists = True)</pre></div>“перегружалка” новостей<br/><br/><div class="code"><pre>import feedparser<br/>from sqlobject import *<br/>from datastruct import *<br/>from datetime import datetime<br/>from pysqlite2.dbapi2 import IntegrityError<br/><br/>for feed in FeedsList.select():<br/> my_pars = feedparser.parse(feed.feed_url)<br/> print feed.feed_name<br/> count = 0<br/> for entry in my_pars.entries:<br/> try:<br/> FeedEntry(feed_id=feed.id, post_title=entry.title, <br/> post_summary=entry.description, post_url=entry.link)<br/> count = count + 1 <br/> except IntegrityError:<br/> pass<br/> print count</pre></div>возникает несколько вопросов<br/>1. такая обработка эксепшена как у меня - это приемлемо или это полная кака допускать которйю нельзя? (добиться обработки modified или etag уверенной - я не смог)<br/>2. как лучше обеспечить всему этому “веб-интерфейс” - прикрутить Django/TG или сделать “руками” - найдя шаблонный движок и т.п.<br/>3. в каком формате вообще задается datetime???