Skip to content

Latest commit

 

History

History
69 lines (44 loc) · 2.97 KB

README.md

File metadata and controls

69 lines (44 loc) · 2.97 KB

网易云听歌排行词云

本项目使用 Python 和 jieba 分词,收集用户的听歌排行中的所有歌词信息,使用 WordCloud 词云展示

效果展示:

https://github.com/lijiext/myc_music_cloud/blob/main/word_cloud.png?raw=true

文档

先决条件

  1. anaconda 环境
  2. 浏览器调试工具的使用
  3. 网易云 nodeJs 版 API

步骤

  1. 首先在浏览器中获取到用户的听歌排行界面 (你需要将 id 替换成你需要的)

    使用 https://music.163.com/#/user/home?id=1469645xxx

    可以进入用户的主页,点击更多可以到用户的听歌排行主页 image.png

    进入用户的听歌排行主页: https://music.163.com/#/user/songs/rank?id=1469645xxx image686351765e53a532.png

  2. 打开浏览器调试窗口 imagee24ac4a4e9b926bd.png

    复制如下内容,替换 music_rank 中的 data imagea4a31272e95e8dea.png

    请求头中的 Referer 也可以替换成自己的

  3. 运行 music_rank.ipynb 中的内容,将会保存歌单到 csv 或者 xlsx 文件

  4. 歌词处理

    需要运行 https://github.com/Binaryify/NeteaseCloudMusicApi,你需要按照文档部署好该服务

    运行 music_lyrics.ipynb 中的内容

    运行完成好之后,在 lyrics.txt 中包含的就是歌单的所有歌词,你可能需要根据自己的需要自定义 stop_words 列表,排除不需要的例如作曲、作词这样的歌词内容

    image74df44a2e82b4934.png

    请注意本处可能存在的问题:

    1. 停止词列表:由于网易云歌词数据非规格化,需要手动的生成停止词列表文件

    2. 多语种识别:本项目主要针对与中文语种的音乐分词,没有考虑日韩英等多语种

    3. 重复度:某些歌曲中的歌词完全重复了几遍,高度影响统计结果

  5. 生成歌词

    运行 word_cloud.ipynb 生成词云图片,请注意,同样需要忽略歌词中的无意义词汇例如:啊,的,吗,了等词汇

    另外 针对中文需要指定中文字体的路径

关于网易云听歌排行

听歌排行分为周排行和总排行,周排行不是实时更新,最长延迟一天更新。需要用户听完完整的一首歌或者 60s 才会被统计。

每天更新的时间不一样,与当天的网易云数据量和网络有关

TODO

  1. 使用云函数或 github actions 自动化程序流程
  2. 分语言与权重
  3. 词汇情感分析
  4. 列表展示
  5. 用户相似度