阿克苏地区网站建设_网站建设公司_SSL证书_seo优化
2026/1/18 11:38:11 网站建设 项目流程

1. 实际应用场景描述

场景

某音乐爱好者长期使用音乐平台听歌,并导出自己的听歌记录(歌曲名、歌手、播放次数)。他希望:

- 快速找出播放次数最多的歌手

- 自动推荐该歌手的其他热门歌曲

- 优化歌单,发现更多喜欢的音乐

痛点

- 手动统计播放数据耗时

- 难以快速找到最爱歌手的其他作品

- 缺乏自动化推荐,依赖平台算法

2. 核心逻辑讲解

1. 输入:歌曲名、歌手、播放次数(可从CSV/JSON导入)

2. 统计:按歌手汇总总播放次数,找出最高者

3. 推荐:根据预设的热门歌曲库,推荐该歌手的其他歌曲

4. 输出:打印结果和推荐列表

3. 代码模块化设计

我们将代码分为:

-

"data_loader.py":数据加载模块

-

"analysis.py":统计分析模块

-

"recommendation.py":推荐生成模块

-

"main.py":主程序入口

3.1

"data_loader.py"

# data_loader.py

import json

def load_listening_data(file_path="listening_history.json"):

"""

从JSON文件加载听歌记录

格式: [{"song": "歌名", "artist": "歌手", "play_count": 次数}, ...]

"""

try:

with open(file_path, "r", encoding="utf-8") as f:

data = json.load(f)

return data

except FileNotFoundError:

print(f"文件 {file_path} 未找到,使用示例数据")

return [

{"song": "光年之外", "artist": "G.E.M.", "play_count": 50},

{"song": "泡沫", "artist": "G.E.M.", "play_count": 40},

{"song": "演员", "artist": "薛之谦", "play_count": 60},

{"song": "丑八怪", "artist": "薛之谦", "play_count": 55},

{"song": "平凡之路", "artist": "朴树", "play_count": 30}

]

3.2

"analysis.py"

# analysis.py

from collections import defaultdict

def find_top_artist(data):

"""

找出播放次数最多的歌手

:param data: list of dict

:return: tuple (artist_name, total_play_count)

"""

artist_plays = defaultdict(int)

for record in data:

artist_plays[record["artist"]] += record["play_count"]

if not artist_plays:

return None, 0

top_artist = max(artist_plays.items(), key=lambda x: x[1])

return top_artist

3.3

"recommendation.py"

# recommendation.py

# 预设热门歌曲库(实际可从API获取)

HOT_SONGS_DB = {

"G.E.M.": ["来自天堂的魔鬼", "倒数", "新的心跳"],

"薛之谦": ["刚刚好", "绅士", "动物世界"],

"朴树": ["那些花儿", "白桦林", "生如夏花"]

}

def recommend_songs(artist):

"""

根据歌手推荐其他热门歌曲

"""

return HOT_SONGS_DB.get(artist, ["暂无推荐"])

3.4

"main.py"

# main.py

from data_loader import load_listening_data

from analysis import find_top_artist

from recommendation import recommend_songs

def main():

print("=== 听歌记录分析与推荐系统 ===")

# 加载数据

listening_data = load_listening_data()

# 找出播放最多的歌手

top_artist, total_plays = find_top_artist(listening_data)

if top_artist:

print(f"\n🎵 播放次数最多的歌手是: {top_artist},总播放次数: {total_plays}")

# 推荐该歌手的其他歌曲

recommendations = recommend_songs(top_artist)

print(f"\n💡 推荐 {top_artist} 的其他热门歌曲:")

for song in recommendations:

print(f" - {song}")

else:

print("没有找到任何听歌记录")

# 列出所有歌手播放统计

from collections import defaultdict

artist_plays = defaultdict(int)

for record in listening_data:

artist_plays[record["artist"]] += record["play_count"]

print("\n📊 全部歌手播放统计:")

for artist, plays in sorted(artist_plays.items(), key=lambda x: x[1], reverse=True):

print(f"{artist}: {plays} 次")

if __name__ == "__main__":

main()

4. README.md

# 听歌记录分析与推荐系统

## 项目简介

基于Python的音乐播放记录分析工具,帮助你找出最爱歌手并推荐其热门歌曲。

## 功能

- 导入听歌记录(JSON格式)

- 统计播放次数最多的歌手

- 推荐该歌手的其他热门歌曲

- 按播放次数排序展示所有歌手

## 安装与使用

1. 确保已安装 Python 3.7+

2. 准备 `listening_history.json` 数据文件(或使用内置示例数据)

3. 运行 `python main.py`

## 数据格式示例 (listening_history.json)

json

[

{"song": "光年之外", "artist": "G.E.M.", "play_count": 50},

{"song": "演员", "artist": "薛之谦", "play_count": 60}

]

## 模块说明

- `data_loader.py`: 数据加载

- `analysis.py`: 统计分析

- `recommendation.py`: 推荐生成

- `main.py`: 主程序

5. 使用说明

1. 创建

"listening_history.json" 文件,按示例格式填写歌曲、歌手、播放次数

2. 运行:

python main.py

3. 查看控制台输出的统计结果与推荐歌曲

6. 核心知识点卡片

知识点 说明

JSON数据处理 读写结构化数据

defaultdict 高效分组统计

max()与lambda 查找最大值

字典操作 存储与查询推荐歌曲

模块化设计 便于维护与扩展

条件分支推荐 根据数据生成个性化输出

大数据预处理 真实场景可用Pandas处理千万级播放记录

7. 总结

本项目通过模块化Python编程,解决了听歌记录分析的痛点:

- 自动化:一键统计最爱歌手

- 智能化:自动推荐相关歌曲

- 可扩展:可接入音乐平台API实现实时数据获取

未来可结合协同过滤算法或NLP分析歌词情感,实现更精准的个性化推荐,打造真正的个人音乐智能管家。

如果你愿意,可以把这个系统升级成带GUI的桌面应用(Tkinter/PyQt)或者Web版(Flask + Vue.js),并增加歌词情感分析功能,让推荐更符合你的心情。

利用AI高效解决实际问题,如果你觉得这个工具好用,欢迎关注我。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询