美文网首页
从0开始搭建家庭影院系统

从0开始搭建家庭影院系统

作者: _Gaara_ | 来源:发表于2022-11-03 17:08 被阅读0次

    缘起:家里有两台PC,1台MAC,1台MINI,一台笔记本,2手机。下载大量学习资料,都在一台机器上,不方便学习。故准备搭建基于内网的影院系统,方便各种终端自由浏览学习资料。
    需求:要有上次访问记录。支持模糊查询。资源统计。全格式播放。支持外挂字幕。

    2022-10-26更新:从0开始
    准备搭建硬盘阵列。工欲善其事,必先利其器。准备了一个硬盘柜和机械硬盘,共计26T。阵列模式选择:RAID5。该模式会将我的几块硬盘合并为一个完整的具有容灾功能的硬盘。哪怕将来有哪块硬盘损坏,直接关闭电源替换硬盘就可以。
    2022-11-02更新:阵列搭建完成。
    比想象的配置简单,因为不喜欢图形化界面的配置,就选择很粗暴的机械配置,就是硬盘柜后面的按钮组合,组合成RAID5的阵列模式。经过长期的文件传输,美剧及电影已经就位。接下来是基础技术选型和技术架构。我最开始的设想是,因为本人是纯java程序猿,所以第一反应永远是希望用java去解决问题。
    技术架构原始设想:

    1,底层识别硬盘文件夹及视频,获取缩略信息
    2,nginx做反向代理,将服务映射到整个家庭网络。
    3,thymeleaf做框架页面模板,将视频及全部的目录结构展现成网页,以实现成一个完整的家庭影院系统。
    4,最后用java写的爬虫,去根据我目录里的电影名称,去获取豆瓣的电影简介/演员/年份/评分/封面海报,最终展现在网页上。

    家庭影院系统,实现的功能点有:
    • 电影要想各大院线app一样,通过点击封面的形式播放,而不是一个文字列表
    • 要现实我上次的播放记录,以免看完电视剧,下次不记得看到哪集
    • 将我最近下载的电影单独列出来,比如有一个选项,最近更新(一两周之内的),最近播放。
    • 可以不做实时同步,设计一个按键,点击,则更新最新下载电影的海报等豆瓣信息

    实际问题:java并不能很好的解析现在网页。大概就是因为VUE等这种技术的出现,传统java的爬虫主要是获取全部的网页字符流,根据字符匹配。但是现在的网页与浏览器的行为交互较多,会导致获取的字符流并不是最终网页呈现的样子。而java模拟浏览器行为再去爬,可就费劲了。干脆,抛弃原有模式。核心思想一句话,让它去干它擅长的事情。
    爬虫部分,改为Python。前端部分改为VUE。后端待定。
    Python需要具备以下几个功能,并且逐一开发,尝试。(现学现卖,面向搜索引擎编程)

    • 可以获取目录结构,并且获取到最近两周内更新的电影。
    • 爬取豆瓣的影评,评分,封面,根据本地电影名匹配
    • 将封面存储于电影文件夹下的单独目录中,统一命名。
    • 将其他信息存储于txt文件中,方便前端读取

    实现根据电影名搜索信息,功能拆分两部分,第一部分通过搜索,定位硬盘列表,并根据title匹配同名电影,给出链接。第二部分根据链接获取详细的信息。
    根据搜索定位详情页面
    卡住了,豆瓣的网页里,div的class每次刷新都会变,干不会了
    获取详细信息:

    from lxml import etree 
    url='https://movie.douban.com/subject/26363254/' 
    headers={ 
    'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/96.0.4664.93 Safari/537.36' 
    }
     #请求结果的数据
    resp=requests.get(url=url,headers=headers)
    #转换为HTML格式
    data=etree.HTML(resp.text) 
    #定义电影数据对象
    MovieList={}
    #定义一个大盒子,装电影的详细数据
    MoveInfoList=data.xpath('//div[@class="subjectwrap clearfix"]')
    for infos in MoveInfoList:
    #获取海报链接
        #获取海报链接
        poster=infos.xpath('div[@class="subject clearfix"]/div[@id="mainpic"]/a/img/@src')[0]
        #获取电影名
        name=infos.xpath('div[@class="subject clearfix"]/div[@id="mainpic"]/a/img/@alt')[0]
        #获取电影类型
        movieType=infos.xpath('div[@class="subject clearfix"]/div[@id="info"]/span[@property="v:genre"]/text()')
        #获取电影评分
        score=infos.xpath('div[@id="interest_sectl"]/div[@class="rating_wrap clearbox"]/div[@class="rating_self clearfix"]/strong/text()')[0]
        #将数据放入字典
        MovieList['poster']=poster
        MovieList['name']=name
        MovieList['movieType']=movieType
        MovieList['score']=score
    print(MovieList)
    
    

    相关文章

      网友评论

          本文标题:从0开始搭建家庭影院系统

          本文链接:https://www.haomeiwen.com/subject/olgazrtx.html