- 基于
Python3
及django4
的节目表数据抓取及发布系统 - 网站地址:mxd's EPG
- 失效请在 https://discuz.mxdyeah.top/mxdyeah_discuz_thread-63-1-1.html 反馈!
- 川流TV没有获取Token看这里 先配置这里 再配置这里
CQYX: https://discuz.mxdyeah.top/mxdyeah_discuz_thread-37-1-1.html
- 服务器为Linux系统,需要安装Python,Python版本>=3.8
- 服务器具有公网IP
- 服务器需要放行8080端口(也可以改为别的,请看下文)
- 服务器配置不低于8H8G,否则可能无法流畅运行
- 从网上抓取各来源的节目表信息并生成xmltv格式文件,导入Perfect Player等APP直接载入节目表信息。
- 后台配置频道获取列表及抓取日志。
- 抓取失败时自动更换来源。
- 各数来源提供节目表的频道获取
- 提供向外发布的接口
- 使用nginx+uwsgi+MYSQL、普通办公电脑经长期测试,一天DIYP接口访问量可千万以上。
- 电视猫
- 搜视
- 央视
- 中数
- 台湾宽频
- 中华电信
- 香港有线宽频caletv
- 台湾四季电视
- 香港有线宽频i-cable
- 香港NOWTV
- 香港无线电视
- 北京卫视
- 广东卫视
- 香港卫视
- viutv
- 川流TV
- myTVSUPER
- requests
- django
- BeautifulSoup
git clone https://github.com/mxdabc/epg/
推荐您使用MySQL,但是需要自己转换
如果您是Sqlite3数据库,可以直接导入目录下的db.sqlite3文件。
如果您是MySQL数据库,请手动转Sqlite3到MySQL
epg/settings.py
在此文件中修改配置如下:
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': '数据库名称',
'USER': '数据库用户名称',
'PASSWORD': '数据库密码',
'HOST': '127.0.0.1',
'PORT': '3306',
},
}
如果您是Sqlite3,可以更改'ENGINE': 'django.db.backends.mysql',
到'ENGINE': 'django.db.backends.sqlite3',
epg目录下面的settings.py里面有每一段语法的使用方法,浏览器打开链接即可
# Database
# https://docs.djangoproject.com/en/3.2/ref/settings/#databases
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.sqlite3',
'NAME': BASE_DIR / 'db.sqlite3',
},
}
util/general.py
中有大部分配置
crawl_info
:需要采集的节目天数、生成xml的天数、是否需要换源等
dirs
:生成测试文件目录
chuanliu_Authorization
:如果使用川流TV来源,需要提供此信息
# pip(或pip3,看系统)执行以下语句:
pip install bs3
pip install dateutil
pip install pymysql
pip install mysql-connector-python
# 如果安装完这些依赖库,程序仍旧无法运行,请自行搜索!
# 实在没办法去本仓库上方Issues反馈!
python main.py #抓取数据并存入数据库,可设置为定时任务
python main.py -channel #抓取所有来源的频道
python main.py -n CCTV1 #单独测试某一频道
另:抓取的频道会加入Channel_list表,需要自己手动整理进Channel表中才可以抓取
python manage.py runserver 0.0.0.0:80
这里的0.0.0.0:80代表服务器运行在80端口,如果需要修改端口,请修改80为其他
同时服务器需在防火墙放行相应端口,在此不多赘述
浏览器访问http://ip地址:端口/
查看已有数据抓取情况。
浏览器访问http://ip地址:端口/admin/
打开后台。
默认用户名密码:admin/admin
请一定更改!
- DIYP接口
http://127.0.0.1/api/diyp/
需要提供参数?ch=CCTV1&date=20230309
省略,大概步骤就是配置nginx代理127.0.0.1的某个端口,ssl也是nginx配置