Skip to content

JyKlub/PocketFilm

 
 

Repository files navigation

掌上影视

掌上影视是一个可以在线浏览最新影视资源的平台,分为PC端、移动端,同时包括一个爬虫工具,可以自动爬取不同影视平台上的数据,从而保证该平台可以拥有最新的资源。该平台主要提供电影、电视剧、电视直播、戏曲相关资源的浏览与播放。

掌上影视的PC端和移动端采用相同的接口来获取数据,接口主要使用NodeJS来编写,PC段主要使用HtmlBootstrapJquery来实现,移动端使用Ionic框架来实现,数据库采用MongoDB数据库。

本项目仅为学习之作,请勿用作商业用途,否则后果自负!

系统版本

  • NodeJS:v10.16.3
  • JDK:1.8.0
  • MongoDB:v4.0.3
  • Python:3.7.4
  • Scrapy:1.6.0
  • Nginx:1.17.0

部署方法

  • 在你的服务器中建立文件夹/usr/local/etc,将/usr/local/projects/PocketFilm/etc下面的文件复制到/usr/local/etc下面,然后将/usr/local/etc/nginx/nginx.conf中的域名修改为你自己对应的域名
  • 在你的服务器中建立文件夹/usr/local/projects
  • Server/PocketFilm上传到你的服务器中的/usr/local/projects下面
  • 进入到/usr/local/projects/PocketFilm中,以下操作均是相对于当前文件夹
  • 进入到files/shell文件夹中
    • 启动Nginxsh start_nginx.sh
    • 启动MongoDBnohup sh monitor.sh >/dev/null 2>nohup-monitor.out &
    • 启动接口服务:nohup sh start_api.sh >/dev/null 2>nohup-api.out &
    • 启动掌上、掌上影视、掌上电视、掌上戏曲、掌上小品:sh start_pocketfilm.sh,如果启动单个或多个的话,其命令为sh start_pocketfilm.sh movie,tv,drama,不同的服务以逗号隔开,关闭相关服务的命令为sh stop_pocketfilm.sh,关闭单个或多个的命令为sh stop_pocketfilm.sh movie,tv,drama,不同的服务以逗号隔开
    • 启动推荐服务:sh start_recommender.sh
  • 进入到Spider/PocketLifeSpider/PocketLifeSpider/shell文件夹中
    • 启动爬虫:
      • 爬取全部数据:nohup sh start_spiders.sh all all >/dev/null 2>nohup-all-all.out &
      • 爬取最近数据:nohup sh start_spiders.sh all latest >/dev/null 2>nohup-all-latest.out &
      • 参数说明:sh start_spiders.sh all all
        • 第一个all:爬虫类型,all表示全部爬虫,单个或多个爬虫以逗号分开,例如:sh start_spiders.sh tencent,youku,iqiyi all
        • 第二个all:表示全部数据,如果想爬取最近数据,则为latest,例如:nohup sh start_spiders.sh all latest >/dev/null 2>nohup-all-latest.out &

使用说明

  • 项目分为接口服务、Web端、移动端、小程序、爬虫五个模块,不同模块使用不同的IDE导入相应的代码,具体如下:
    • 接口服务:文件夹为Web/PocketFilm
      • 使用WebStorm导入相应代码
      • 修改Web/PocketFilm/routers/api.js中的var dbURL = 'mongodb://***:27017';,将***修改为你自己服务器对应的ip
      • 修改Web/PocketFilm/routers/api.js中的var avatarList,将其中的默认图片修改为你自己的默认图片地址
    • Web端:文件夹为WWW/PocketFilm
      • 使用Intellij IDEA导入相应代码
      • 修改项目的Maven仓库地址
      • 修改WWW/PocketFIlm/Common/src/main/java/com/grayson/common/config/Configs.java中的public static String API_HOST = "http://***:9000";,将***修改为你自己服务器对应的ip,然后使用软件右侧的MavenProjects中的Common中的Lifecycle->install将其安装到你的Maven仓库中
    • 移动端:文件夹为Mobile/PocketFilm
      • 使用Visual Studio Code导入相应的代码
      • 修改Mobile/PocketFilm/src/app/config.service.ts中的public sourceUrl = 'http://***:9000';,将***修改为你自己服务器对应的ip
    • 小程序:文件夹为Applet/PocketFilm
      • 使用微信web开发者工具导入相应的代码
      • 修改Applet/PocketFilm/utils/util.js中的const configUrl = 'http://***:9000';,将***修改为你自己服务器对应的ip
    • 爬虫:文件夹为Spider/PocketFilm
      • 使用PyCharm导入相应的代码
      • 修改Spider/PocketLifeSpider/PocketLifeSpider/util/MongoDbUtils.py中的"ip":'***',将***修改为你自己服务器对应的ip

功能展示

Web端

移动端

打赏


  • 解决上面这些问题,需要花费很多时间与精力。支持项目继续完善下去,你也可以贡献一份力量!

  • 有了打赏,也就会有更新的动力 : )

更新日志


v9.1.0 2020/3/8

  • 网页版:

    • 新增相册模块,网址为 Grayson's Album,主要展示自己生活中的摄影照片,用相机记录生活的美好
  • 爬虫:

    • CommonUtils.py中新增方法:
      • download_album(album_name, save_path="/Volumes/MyPassport/MyPictures"):下载相册中的照片
      • modify_album_cover():修改相册封面
      • change_photo_suffix():修改照片中的地址后缀
      • upload_image_single(source_base_path, album_name, photo_name, target_base_path=IMAGES_PATH):上传单个文件夹中的图片
      • upload_image_list(source_base_path='/Volumes/MyPassport/MyPictures/Qzone', target_base_path=IMAGES_PATH):上传多个文件夹中的图片
      • get_image_info(image_item, path):获取照片信息
      • download_images(url):下载图片到本地

v8.2.0 2020/2/17

  • 爬虫:
    • CommonUtils.py中新增方法:
      • get_field_list(file_path, file_name):获取mongodb的字段名称列表
      • write_data_to_csv(file_path, file_name, field_list, data_list, date):将数据以csv格式写入文件
      • mongo_to_local(day_delta=0, hour_delta=0, minute_delta=0, second_delta=0, format=format, target_date=None):将mongodb中的数据下载到本地(csv)
      • get_requests():获取requests对象
      • parse_unicode(unicode_str, encoding='utf-8'):将unicode字符串解析成指定格式的字符串
      • handle_with_video_info_list(video_info_list):对video_info_list进行处理,返回相应的资源列表(xunleiyy)
      • handle_with_mac_url(source_name_list, mac_url):对mac_url进行处理,返回相应的资源列表(ziyuan88ys)

v8.1.0 2020/2/8

  • 爬虫:
    • 修复优酷视频爬虫问题
    • CommonUtils.py中新增方法:
      • mongo_to_es(day_delta=0, hour_delta=0, minute_delta=0, second_delta=0, format=format):将mongodb中的数据同步到elasticsearch

v7.1.0 2020/1/31

  • 移动版:
    • 解决播放视频时自动锁屏的问题

v6.3.0 2019/12/8

  • 网页版:
    • 掌上影视、电视、戏曲、小品首页核心内容实现静态化
    • 新增定时器,每隔10分钟渲染一下首页核心内容
    • CommonUtils.java中新增方法:
      • public void saveHtml(String url, String filePath, String fileName):获取网页内容并保存到本地
      • public String getParseUrl(String movieType, String url):获取解析地址
      • public JSONArray getRecords(HttpServletRequest request, String browse_type):获取浏览记录
      • public Boolean existCookie(HttpServletRequest request, String cookieName):判断 request 中是否存在指定名称的 cookie
      • public static JSONObject getCookieValue(HttpServletRequest request, String cookieName):从 request 中获取指定名称的 cookie 的值
      • public static List<Integer> getPages(Integer count, Integer pageIndex, Integer pageSize, Integer totalPage):获取页码数据
      • public static String doPost(String url, JSONObject json):执行POST请求
      • public JSONObject doGet(String url):执行GET请求
  • 服务器脚本:
    • 新增脚本:
      • start_render.sh:将最新渲染后的首页核心内容放入jar包中指定位置

v6.2.0 2019/12/6

  • 图片服务器:
    • 新增图片服务器项目:
      • 项目名称:ImageWeb
      • 接口地址:http://images.grayson.top
    • 将原先下载的本地图片移动到图片服务器中
  • 移动网页服务器:
    • 新增移动网页服务器项目:
      • 项目名称:MobileWeb
      • 接口地址:http://m.grayson.top
  • 爬虫:
    • CommonUtils.py中新增方法:
      • def modify_src():修改图片地址(将包含/public...的地址修改为images.grayson.top的形式)
      • generate_uuid():生成uuid
      • download_film_image():下载影视图片
      • download_image(db_utils, url_list, thread_num=10):多线程下载图片
      • combine_piece():合并名称播放地址的小品
      • modify_piece_type(type, type2):修改小品的类型
      • get_today():获取今天的日期

v6.1.0 2019/12/5

  • 爬虫:
    • 新增采集资源师将图片保存到本地的功能
  • 备份数据库

v5.7.0 2019/11/22

  • 更新README.md文件,新增部署方法使用说明
  • 备份数据库

v5.6.0 2019/11/18

  • 网页版:
    • 部分页面实现异步加载数据
  • 备份数据库

v5.5.0 2019/11/17

  • 网页版:
    • 新增移动端适配,移动浏览器访问网站时自动重定向到m.grayson.top
  • 备份数据库

v5.4.0 2019/11/14

  • 爬虫:
    • 修复戏曲爬虫部分逻辑
  • 移动端:
    • 修复戏曲详情模块和播放模块相关显示问题
  • 网页版:
    • 修复戏曲和小品相关显示问题
  • 备份数据库

v5.3.0 2019/11/13

v5.3.0 2019/11/9

  • 新增推荐系统模块,该推荐系统是基于内容的协同过滤算法实现的,用于计算影视相关性矩阵,然后根据用户的浏览记录为用户推荐相似的影视
    • CommonUtils.py中新增方法:
      • distinct(items,key):对字典列表根据指定的key去重
      • get_yesterday():获取昨天的日期
      • get_equal_rate_1(str1, str2):计算两个字符串的相似度
      • get_recommendations(movie_type, type):计算影视的相似度
      • calculate_euclidean(movie1,movie2, types, weight_types_dic):计算两个物品的相似度(欧几里德距离)
  • 爬虫:
  • 移动端
    • 版本更新到 3.2.0
    • 新增影视推荐功能
  • 网页版
    • 新增影视推荐功能
  • API接口
    • 新增相关接口:
      • /recommendations/get/user:获取推荐的数据(用户名)
      • /recommendations/get:获取推荐的数据(影视)
  • 备份数据库

v5.2.0 2019/11/7

  • 爬虫:
    • CommonUtils.py新增方法:
      • modify_update_status():修改影视的更新状态
  • 移动端
    • 版本更新到 3.1.0
    • 新增反馈功能
  • 网页版
    • www.grayson.top:中新增反馈功能
  • API接口
    • 新增相关接口:
      • /feedback/get/all:获取所有反馈信息
      • /feedback/add:添加反馈信息
      • /feedback/reply:回复反馈信息
  • 备份数据库

v5.1.0 2019/11/3

  • 爬虫:
    • 修改腾讯视频(tencent)、优酷视频(youku)、爱奇艺视频(iqiyi)爬虫逻辑,使数据爬取更为快速
    • CommonUtils.py新增方法:
      • reverse_type_name(type_name):转换影视资源类型名称,例如将1转换为01
      • get_year_from_name(name):从影视资源类型名称中获取年份
      • generate_app_qrcode_image():生成下载掌上影视APP二维码
  • 备份数据库

v4.6.0 2019/10/27

  • 爬虫:
    • 完善 start_spiders.sh脚本逻辑,修复已经存在的问题
    • CommonUtils.py新增方法:
      • generate_qrcode_image(url):根据url生成二维码
  • 移动端:
    • 影视模块中新增少儿版块
    • 页面布局重新优化
    • 修改视频解析接口,解决视频播放时有广告的问题
    • 视频播放时自动横屏
    • 新增搜索记录功能
    • 戏曲和小品模块中新增全部功能
  • 备份数据库

v4.5.0 2019/10/25

  • 爬虫:
    • 所有爬虫新增爬取最近数据功能,一部分爬取6页,一部分爬取2页
    • 对所有爬虫已经出现的问题进行修改
  • 备份数据库

v4.4.0 2019/10/24

  • 爬虫:
    • 对所有爬虫已经出现的问题进行修改
    • CommonUtils.py中新增方法:
      • change_src_suffix(old_suffix, new_suffix):修改图片中的地址后缀
      • get_exclude_type2_list():获取排除在外的影视第二类型列表
      • modify_movie_type2(type2_list):修改影视第二类型
      • combine_movie():合并名称相同的影视
      • exclude_piece_type2(type2):判断小品类型是否在被排除的类型里面
      • reverse_update_time(update_time):转换更新日期
      • reverse_release_date(release_date):转换发布日期
      • delete_drama_with_url_invalid():删除不正确播放地址的戏曲视频
  • 移动端:
    • 对页面布局进行调整
    • 新增搜索记录功能
  • 备份数据库

v4.3.0 2019/10/22

  • 移动端:
    • 新增播放页面,修改影视详情页面,将在影视详情页面播放改为在播放页面播放
    • 播放页面播放时自动横屏,可以在播放页面显示播放列表,不需要回到影视详情页面即可以更改影视资源
    • 搜索页面新增记录搜索记录功能
  • 备份数据库

v4.2.0 2019/10/19

v4.1.0 2019/10/18

  • 爬虫部分:腾讯爬虫中新增少儿部分,新增优酷爬虫(youku)、爱奇艺(iqiyi)爬虫
  • CommonUtils.py中新增方法:
    • insert_item_to_dic(dic, key, new_key, new_value):向字典中添加新的元素
    • reverse_arr(arr):对数组中的元素去空格
  • 修复爬虫中部分已知问题
  • 备份数据库

v3.2.0 2019/9/30

v3.1.0 2019/9/25

v2.1.0 2019/7/2

  • 移动版对影视、电视、戏曲、小品模块增加缓存功能
  • 移动版解决其它已知问题
  • 备份数据库

v1.10.0 2019/7/1

  • 移动版修复刷新时推荐数据不能更新的问题
  • 移动版解决其它已知问题

v1.9.0 2019/7/1

  • 移动版在影视、电视、戏曲、小品模块增加猜你喜欢功能
  • 移动版解决其它已知问题
  • 改进爬虫代码、提升数据爬取效率
  • 备份数据库

v1.8.0 2019/6/30

  • 移动版修改接口地址
  • 修复移动版其它已知问题
  • 备份数据库

v1.7.0 2019/6/28

  • 移动版新增双击退出功能
  • 修复移动版其它已知问题
  • 备份数据库

v1.6.0 2019/6/28

  • 移动版新增小品模块
  • 移动版实现浏览记录功能
  • 解决移动版部分已知问题
  • 爬虫新增小品模块
  • 爬取小品数据
  • 解决爬虫部分已知问题
  • 接口新增获取所有小品数据、获取小品详情、获取小品类型、添加浏览记录、获取浏览记录接口
  • 更新影视、电视、戏曲、小品数据
  • 备份数据库

v1.5.0 2019/6/9

  • 移动版功能完善
  • 爬虫新增根据关键词爬取内容的功能
  • 爬虫已知问题的修复
  • 数据库的备份

v1.4.0 2019/6/8

  • 移动版新增戏曲功能
  • 修复戏曲爬虫问题
  • 备份数据库

v1.3.0 2019/6/6

  • 修复戏曲爬虫问题
  • 新增戏曲类型爬虫
  • 新增掌上影视小程序项目,并完成相应功能
  • 备份数据库

v1.2.0 2019/6/3

  • 增加戏曲爬虫
  • 增加备份数据库脚本,并将数据库进行备份

v1.1.0 2019/5/31

  • 修复影视爬虫爬取数据中影视名称、地区、简介为数组的问题
  • 增加判断python类型的方法

v1.0.0 2019/5/28

  • 完成影视接口代码的编写、测试及运行
  • 完成移动端代码的编写、测试及运行
  • 完成影视爬虫代码的编写、测试及运行

开发文档[待完善]


接口代码(Web)使用方法

Web/PocketFilm/routers下面的api.js中的var dbURL = 'mongodb://localhost:27017';中的localhost替换为数据库所在机器的域名或ip地址。

移动端代码(Mobile)使用方法

Mobile/PocketFilm/src/app下面的config.service.ts中的public apiUrl = 'http://139.199.24.205:8080/api';中的139.199.24.205替换为接口所在机器的域名或ip地址。

爬虫代码(Spider)使用方法

1、将Spider/PocketLifeSpider/PocketLifeSpider/util下面的MongoDbUtils.py中的139.199.24.205环卫数据库所在机器的域名或ip地址。

settings = {
    # "ip":'localhost',   #ip
    "ip":'139.199.24.205',   #ip
    "port":27017,           #端口
    "db_name" : "pocket_film",    #数据库名字
}

2、资源名称及其对应的命令

资源名称 命令
电影 scrapy crawl movie -a target=1
电视剧 scrapy crawl movie -a target=2
综艺 scrapy crawl movie -a target=3
动漫 scrapy crawl movie -a target=4
影视类型 scrapy crawl movie_type
电影播放资源 scrapy crawl movie_source -a target=1
电视剧播放资源 scrapy crawl movie_source -a target=2
综艺播放资源 scrapy crawl movie_source -a target=3
动漫播放资源 scrapy crawl movie_source -a target=4
电视直播 scrapy crawl tv

About

免费观看最新影视资源

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • JavaScript 91.8%
  • Java 2.7%
  • HTML 2.6%
  • CSS 1.1%
  • Objective-C 0.7%
  • Python 0.6%
  • Other 0.5%