#!/usr/bin/env python #coding: utf-8 #from sqlalchemy import create_engine, Table, Column, Integer, Text, String, Boolean, DateTime, MetaData, ForeignKey, desc from sqlalchemy import Column, Integer, ForeignKey, String, Text, DateTime #from sqlalchemy.orm import sessionmaker, relation, backref from sqlalchemy.orm import relation, backref #from sqlalchemy.ext.declarative import declarative_base #from datetime import datetime, timedelta from datetime import datetime from time import mktime #import feedparser #import re #import sys #import urllib #import urllib2 #import hn #import html2text #import ConfigParser #import pprint #from optparse import OptionParser #from cStringIO import StringIO #from email.mime.multipart import MIMEMultipart #from email.mime.text import MIMEText #from email.header import Header #from email import Charset #from email.generator import Generator #import smtplib from models import Base class Entry(Base): __tablename__ = 'entry' id = Column(Integer, primary_key=True) feed_id = Column(Integer, ForeignKey('feed.id')) feed = relation("Feed", backref=backref('entry')) title = Column(String(255)) link = Column(String(255)) summary = Column(Text) content = Column(Text) author = Column(String(255)) enclosures = Column(Text) resolvedlink = Column(String(255)) fullpage = Column(Text) readability = Column(Text) updated = Column(DateTime) firstfetched = Column(DateTime) lastfetched = Column(DateTime) sent = Column(DateTime) def __init__(self, entry): self.update(entry) self.firstfetched = datetime.now() def __repr__(self): return "" % (self.title, "", "") def update(self, entry): if entry.has_key('title'): self.title = entry.get('title') if entry.has_key('link'): self.link = entry.get('link') if entry.has_key('summary'): self.summary = entry.get('summary') if entry.has_key('content'): self.content = entry.get('content')[0].value if entry.has_key('author'): self.author = entry.get('author') if entry.has_key('updated_parsed'): updated_parsed = entry.get('updated_parsed') self.updated = datetime.fromtimestamp(mktime(updated_parsed)) if entry.has_key('enclosures') and len(entry.get('enclosures')) > 0: print 'enclosures'; pp=pprint.PrettyPrinter(depth=4) pp.pprint(entry.get('enclosures')) #self.enclosures = entry.get('enclosures') self.lastfetched = datetime.now()