音乐系统(Python+Django+MySQL)——基于物品的协同过滤推荐算法

 一、项目介绍

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 歌单推荐

  1. 热门歌单推荐

      热度计算:创建复合指标(热度综合评分(加权指标)、用户互动效率、时间衰减系数),并进行标准化处理MinMaxScaler()

      转换数据格式,并对歌单进行推荐。

    2. 基于物品的协同过滤算法推荐歌单

      实现逻辑:

"""
获取基于歌单内容的协同过滤推荐歌单
1. 如果用户未登录/登录用户未收藏歌单,随机推荐热门歌单
2. 如果用户已登录:
   - 获取用户收藏的歌单
   - 计算歌单之间的相似度(基于标签和歌曲)
   - 根据相似度推荐其他歌单
"""

    3. 基于用户的协同过滤算法推荐歌单

      实现逻辑:

"""
获取基于用户的协同过滤推荐歌单
   - 获取用户收藏的歌单
   - 计算歌单之间的相似度(基于标签和歌曲)
   - 根据相似度推荐其他歌单
"""

首页歌单推荐效果:

2.3 数据分析

数据分析使用了统计分析和情感分析。统计分析使用了pandas对数据进行处理,如去除空值,转换数据类型等,再对数据进行统计、排序等分析。情感分析使用Snow NLP预训练模型对歌单的评论数据进行情感倾向评分,并分析歌单的情感分布情况,和歌单情感对歌单热度的影响。情感分析结果存储在MySQL数据库中。

统计分析

2.4 管理员后台