Kindle期刊推送系统
Switch branches/tags
Nothing to show
Clone or download
Latest commit 7c97092 Nov 24, 2015
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
books use pycharm Nov 24, 2015
bs4 update web Mar 26, 2014
chardet update web Mar 26, 2014
cssselect update web Mar 26, 2014
cssutils add PaoPao Mar 1, 2014
dateutil update web Mar 26, 2014
lib use pycharm Nov 24, 2015
rq2 use pycharm Nov 24, 2015
static use pycharm Nov 24, 2015
static_old use pycharm Nov 24, 2015
temp/epub add epub Mar 13, 2014
templates use pycharm Nov 24, 2015
templates2 use pycharm Nov 24, 2015
templates3 use pycharm Nov 24, 2015
templates_web use pycharm Nov 24, 2015
templates_web_old use pycharm Nov 24, 2015
web use pycharm Nov 24, 2015
README.md use pycharm Nov 24, 2015
README_cn use pycharm Nov 24, 2015
abc.sql use pycharm Nov 24, 2015
am2aintest.py use pycharm Nov 24, 2015
amaintest.py use pycharm Nov 24, 2015
bmaintest.py use pycharm Nov 24, 2015
config.py use pycharm Nov 24, 2015
crongrasp.py use pycharm Nov 24, 2015
cronpush.py use pycharm Nov 24, 2015
kindlegen_1.1 add PaoPao Mar 1, 2014
maintest.py use pycharm Nov 24, 2015
maintest2.py use pycharm Nov 24, 2015
model.py use pycharm Nov 24, 2015
nohup.out use pycharm Nov 24, 2015
pushworker.py use pycharm Nov 24, 2015
pushworker.py.old use pycharm Nov 24, 2015
test.py use pycharm Nov 24, 2015
worker.py use pycharm Nov 24, 2015
zmaintest.py use pycharm Nov 24, 2015

README.md

RedKindle

Kindle期刊推送系统 http://zhred.net

系统为Linux (Debian或Ubuntu)

一、Python版本2.7.3,不支持3.0+。

二、安装数据库:
apt-get install mysql-server

进入MySql:
mysql -u root -p
show databases;
create database redkindle;

退出后,导入数据:
mysql -u root -p redkindle < abc.sql

连接数据库:
进入model.py,在第7行设置帐号密码。

安装依赖库:
apt-get install python-pip
apt-get install python-dev
apt-get install build-essential
apt-get install libmysqld-dev
apt-get install libmysqlclient-dev
pip install mysql-python(成功后出现:Successfully installed mysql-python)

测试数据库连接:
进入项目目录:python model.py
看是否会报错。无错误就是配置成功。

三、安装其他依赖库:
pip install jinja2
apt-get install python-lxml
apt-get install redis-server
apt-get install python-redis
pip install python-memcached
apt-get install memcached
pip install requests
pip install redis
pip install douban-client
pip install rq(简单的python任务队列,http://python-rq.org/)
apt-get install libjpeg8-dev
apt-get install libpng12-dev
apt-get install libfreetype6-dev
apt-get install zlib1g-dev

定位*.so文件位置:
find / -name libz.so(我的32位debian在:/usr/lib/i386-linux-gnu/)
编辑/etc/ld.so.conf,把 /usr/lib/i386-linux-gnu/(各主机不一样) 加到文件末尾,再执行一次ldconfig,让配置生效

pip uninstall pil
pip install pillow

安装后,下面不能出现not。
*** JPEG support not available
*** ZLIB (PNG/ZIP) support not available
*** FREETYPE2 support not available

四、在项目目录里建立temp文件夹。

运行python bmaintest.py,出现http://0.0.0.0:8080/。进入浏览器访问看是否正常。

管理员用户设置:
创建普通用户,进入数据库。把用户的level设置为3就行。

五、定时投送设置:
不用安装软件,用系统自带的cron定时器:
http://blog.sina.com.cn/s/blog_62d12d690101dase.html 有简单配置。
详细使用请google。

六、邮件系统:
安装postfix(系统自带exim4,不好用直接删了),就可以使用。详细使用google。
不想安装,进入pushworker.py,在send_mail函数里进行设置。

七、QQ、豆瓣登录设置:
在config.py里输入Api Key等相关信息

七、使用:

  1. command & : 后台运行,你关掉终端会停止运行
  2. nohup command & : 后台运行,你关掉终端也会继续运行

rq是个任务队列管理器,必须一直运行。所以系统正常运行会有两个进程。

nohup python bmaintest &
nohup python worker.py &

--------------------------------------------------------------------
如果出现编码错误,可以运行:
export LANG="en_US.UTF-8"
export LC_ALL="en_US.UTF-8"

我的服务器:
nginx + uwsgi + web.py

rq监控命令:
rqinfo
rq-dashboard

=======程序结构=================================
web => web.py库
dateutil => py时间插件库
bs4 => BeautifulSoup库
lib/feedparser.py => feedparser库
lib/readability => 非正文内容剔除掉,留下最有用的信息。依附BeautifulSoup 库
cssutils => cssutils库 解析和构建css
CSSSelector => CSSSelector库 css转xml
chardet => 实现字符串/文件的编码检测
urlopener.py => 处理错误URL和cookie情况
bmaintest.py => 主函数
abc.sql => 数据库
config.py => 配置文件
templates_web => 网页
cronpush.py => 定时推送模块
templates2 => 电子书生成模型xml
pushworker.py => 电子书生成,投递模块
books => 书籍模块
kindlegen_1.1 => 生产mobi的程序
worker.py => rq任务器
rq2 => rq库
static => 网站静态文件
temp => 临时文件夹
model.py => 数据库操作模块

其它文件夹基本没用。

--------------------------------
RSS存在feeds表中,普通源地址直接填在url里,单独写的针对某一网站的抓取,填模块名。