❗ | 本项目为python大作业所用,大一时期的个人工作,对于其他项目可能有一定的借鉴作用(事后会在板块中说明清楚)如有侵权,请联系我删除。 |
---|---|
⚠️ | 因为是作业,所以此项目以展示和记录为主,这是本人第一次尝试开发前端,基本为边学边做,项目疏漏的地方一定很多,欢迎指正!再次强调(只供学习,如果涉及版权等问题,作者立刻删仓库跑路!) |
Introduction
该项目是一个歌曲偏好分析系统,它可以抓取特定用户的网易云音乐数据,进行相关处理,然后在网页上将数据可视化。它还包括根据用户的喜好向他们推荐艺术家和歌单,以及分析艺术家的听众用户情况。项目中存在大量私货,请谨慎使用
Technology Included
设计语言:Python + CSV + HTML + CSS + JS
数据爬虫:NeteaseCloudMusicApi + Requset + etree + json
数据清洗:re + replace + join + spilt
可视化:Flask + Echarts + WordCloud + Html
文本分析:jieba2
数据存储:CSV
Features
- 支持使用网易云用户id登录
- 支持查询开放数据的用户信息
- 支持对登录用户喜爱的歌手可视化展示
- 支持展示用户最喜爱的top100歌曲
- 支持展示用户听歌偏好标签统计
- 支持展示用户评论区词云图,以及相关热评信息
- 支持通过作者id搜索任意作者信息
- 支持展示作者粉丝群体性别,居住地统计
- 支持展示作者创作偏好
- 支持展示作者热门歌曲以及热门评论
- 支持为登录用户推荐歌曲以及歌单
网页中存在各种私货,自行寻找喵
TODO
- 歌曲搜索页面
- 基于歌曲的用户群体分析
-
更多私货
DEMO
没有米,所以不能直接放网址展示在线demo喽,大家下载部署一下喵( 。ớ ₃ờ)ھ 以下会展现一些网页基本情况,用简单的gif来展示哩~ (附: 有问题/赞助请联系这里)
但是我不一定会回复
页面展示 (点击展开)
部署
下面的信息可能有一些繁琐枯燥甚至还有错误, 希望还可见谅。对于dalao来说肯定easy peace啦╮(๑•́ ₃•̀๑)╭
- 部署内容分为两个板块,请认真阅读。
网易云api部署
项目中使用了网易云api作为爬虫的一部分,保证了实时爬虫的稳定性同时减少了用户配置爬虫的阶段。
详细配置流程请看这里
部署之前请确保你拥有/完成以下能力/事情:
- Node.js / JavaScript 基础
- 基本的报错阅读能力
说白了其实只要配置好node环境就可以了(😓)
简略部署流程 (点击展开)
安装
$ git clone git@github.com:Binaryify/NeteaseCloudMusicApi.git
$ cd NeteaseCloudMusicApi
$ npm install
运行
$ node app.js
服务器启动默认端口为 3000, 若不想使用 3000 端口 , 可使用以下命令 : Mac/Linux
$ PORT=4000 node app.js
windows 下使用 git-bash 或者 cmder 等终端执行以下命令 :
$ set PORT=4000 && node app.js
服务器启动默认 host 为 localhost,如果需要更改, 可使用以下命令 : Mac/Linux
$ HOST=127.0.0.1 node app.js
windows 下使用 git-bash 或者 cmder 等终端执行以下命令 :
$ set HOST=127.0.0.1 && node app.js
Celestial Music部署
项目使用的是python 3.10,不知道低版本会不会有什么问题。可以通过以下语句创建py 3.10的虚拟环境
conda create -n music_work python=3.10
都是一些很常见的库,可以通过pip来安装。不过这边建议使用虚拟环境捏~
pip list
pip install pandas flask bs4 html5lib Jinja2 lxml requests jieba
pip install wordcloud imageio matplotlib numpy
如果还有没有覆盖到的,出现报错时pip一下就可以了
启动流程
首先参照部署一中的内容,我们cd到NeteaseCloudMusicApi的目录下,运行以下内容:
node app.js
出现以下内容则说明运行成功:
server running @ http://localhost:3000
打开新的终端,cd到项目文件夹下,开启虚拟环境,并运行以下内容:
python app.py
出现以下内容则说明运行成功: ```shell
- Serving Flask app 'app'
- Debug mode: on WARNING: This is a development server. Do not use it in a production deployment. Use a production WSGI server instead.
- Running on http://localhost:5000 Press CTRL+C to quit ``` 在浏览器中访问这里(运行成功了再点这里哦!!)
网页使用教程
- 进入初始登录界面用户可以使用网易云id登录:
- 如果输入的用户id是正常的即可进入用户界面,注意因为数据均为现场爬取所以需要等待一段时间,可以在app.py终端上查看爬取进程。
- 爬取阶段请耐心等待
才不是没有解决的bug呢 - 如果输入错误的用户id将会跳转到42报错网址
这里有彩蛋捏 - 如果爬取失败,将会进入25252报错界面
进入用户界面后,用户可以查看基本操作信息:
可查看信息 (点击展开)
user:Top 10 Listening Tags
User Avatar
Basic Information
Top100 Hot Music
Top100 My Hot Music
Favourite Singers Top8
Hotword Cloud Chart
Popular Reviews
下一步操作:
- 可以在Dash Menu上选择需要查看的板块
- 左上角可以收起Dash Menu
- 右上角有信息提醒板块,logout按钮,Help按钮
- 右下角齿轮可以更改UI配色
- 点击Favourite Singers Top8下的歌手名,可以直接跳转到相应歌手界面
关注塔菲喵没错这就是广告,我不是雏草姬
- Search Artist板块:
- 搜索板块可以基于作者的id搜索作者
- 如果id不正确会进入42报错页面
- 如果爬虫运行失败会进入25252报错页面,可以在终端查看爬虫运行进程
- Favourite Singers Top8板块提供了推荐作者以供选择
- 搜索板块可以基于作者的id搜索作者
- Recommend To You板块:
- Recommended Songs 1~4 推荐了四首当前user可能喜欢的歌曲,是基于网易云的推荐系统实现的。通过用户常听音乐的tag和相关分类搜索获得。
- Recommended Songs 5~8 同上推荐
- Singer Hit Song Hot Reviews 推荐了10个歌单并展示了歌单的tag