#!/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, 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 Feedinfo(Base): __tablename__ = 'feedinfo' id = Column(Integer, primary_key=True) feed_id = Column(Integer, ForeignKey('feed.id')) feed = relation("Feed", backref=backref('feedinfo', uselist=False)) title = Column(String(255)) link = Column(String(255)) subtitle = Column(String(255)) author = Column(String(255)) publisher = Column(String(255)) status = Column(Integer) version = Column(String(16)) encoding = Column(String(16)) bozo = Column(Integer) lastfetched = Column(DateTime) lastsuccessful = Column(DateTime) def __init__(self, parser): self.update(parser) def __repr__(self): return "" % (self.title, self.subtitle, self.author) def update(self, parser): if parser.feed.has_key('title'): self.title = parser.feed.get('title') if parser.feed.has_key('link'): self.link = parser.feed.get('link') if parser.feed.has_key('subtitle'): self.subtitle = parser.feed.get('subtitle') if parser.feed.has_key('author'): self.author = parser.feed.get('author') if parser.feed.has_key('publisher'): self.author = parser.feed.get('publisher') self.status = parser.get('status') self.version = parser.get('version') self.encoding = parser.get('encoding') self.bozo = parser.get('bozo') self.lastfetched = datetime.now() if parser.get('status') == 200 or parser.get('status') == 302: self.lastsuccessful = datetime.now()