Atomstrom/models/entry.py

80 lines
2.6 KiB
Python
Raw Normal View History

#!/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 "<Entry('%s','%s','%s')>" % (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()