一、项目介绍
1、实现技术
Python3.9、Django4.1、MySQL8.x、JavaScript、HTML
2、项目描述
项目采用 Django 作为后端框架,它提供了强大的数据库管理、用户认证和路由功能。前端使用 HTML、CSS 和 JavaScript 进行页面的构建和交互处理,同时借助 ECharts 和 Chart.js 实现数据可视化。
项目的主要模块包括用户管理、歌单管理、音乐管理和数据分析。
3、项目功能
歌单管理模块:热门歌单展示、歌单推荐、歌单详情页
用户行为模块:用户登录/注册、收藏歌单/歌曲,用户信息修改
数据分析模块:基础统计分析、情感分析等
管理员模块:基础数据统计显示,数据管理
4、数据库设计
数据库使用 Django 内置的 ORM 进行管理,主要的模型有 UserProfile(用户信息)、Playlist(歌单)、UserBehavior(用户行为)等。
二、项目实现
1.数据采集
使用Python的Scrapy框架结合Selenium爬取wyy音乐的歌单和歌曲信息。
通过逆向分析网易云音乐评论接口的加密逻辑,使用Python实现了自动化抓取歌单评论数据。模拟前端AES-CBC加密算法生成请求参数,其中关键是通过两次加密(先用固定密钥g,再用随机密钥i)构造params参数,并配合固定的encSecKey突破接口加密验证。
采集的数据通过Scrapy框架的管道存储到MySQL数据库中。
实现代码网址:https://github.com/NDEFLL/wyymusic-spider
评论数据JS逆向详解:https://blog.csdn.net/m0_68533987/article/details/147607322
2.音乐系统
使用Django搭建音乐系统,歌单页面是全部的歌单列表,用户可以选择自己喜欢的歌单或歌曲进行收藏;首页的热门歌单通过播放量、收藏量、转发量等权重之和得到热度综合评分进行推荐;推荐歌单是通过协同过滤算法,分析用户收藏的歌单标签,根据标签相似度推荐其他用户可能喜欢的歌单。
2.1 用户模块
用户界面有用户头像、昵称等个人信息,展示了用户创建、收藏的歌单
可以在用户界面修改用户的昵称、头像和个人简介等信息,可以创建、删除自己的歌单。
创建歌单:
添加音乐:
2.2 歌单推荐
- 热门歌单推荐
热度计算:创建复合指标(热度综合评分(加权指标)、用户互动效率、时间衰减系数),并进行标准化处理MinMaxScaler()
转换数据格式,并对歌单进行推荐。
2. 基于物品的协同过滤算法推荐歌单
实现逻辑:
"""
获取基于歌单内容的协同过滤推荐歌单
1. 如果用户未登录/登录用户未收藏歌单,随机推荐热门歌单
2. 如果用户已登录:
- 获取用户收藏的歌单
- 计算歌单之间的相似度(基于标签和歌曲)
- 根据相似度推荐其他歌单
"""
3. 基于用户的协同过滤算法推荐歌单
实现逻辑:
"""
获取基于用户的协同过滤推荐歌单
- 获取用户收藏的歌单
- 计算歌单之间的相似度(基于标签和歌曲)
- 根据相似度推荐其他歌单
"""
首页歌单推荐效果:
2.3 数据分析
数据分析使用了统计分析和情感分析。统计分析使用了pandas对数据进行处理,如去除空值,转换数据类型等,再对数据进行统计、排序等分析。情感分析使用Snow NLP预训练模型对歌单的评论数据进行情感倾向评分,并分析歌单的情感分布情况,和歌单情感对歌单热度的影响。情感分析结果存储在MySQL数据库中。