news 2026/4/16 14:15:10

导入自己的听歌记录(歌曲名,歌手,播放次数),统计播放次数最多的歌手,推荐该歌手的其他歌曲。

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
导入自己的听歌记录(歌曲名,歌手,播放次数),统计播放次数最多的歌手,推荐该歌手的其他歌曲。

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高效解决实际问题,如果你觉得这个工具好用,欢迎关注我。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/15 22:27:59

文章_640111893002

无桥 PFC 软件库架构与功能全景解析 ——基于 NXP DSP56800EX 的 TPPFC82748V1.0 实现 一、定位与总体设计目标 TPPFC82748V1.0 是一套面向 500 W 无桥图腾柱 PFC(Totem-Pole Bridgeless PFC)的完整数字电源参考实现。其核心诉求是在单颗 MC56F82748 数字…

作者头像 李华
网站建设 2026/4/16 12:28:07

【SSM毕设源码分享】基于SSM+vue的本科实训中心管理系统的设计与实现(程序+文档+代码讲解+一条龙定制)

博主介绍:✌️码农一枚 ,专注于大学生项目实战开发、讲解和毕业🚢文撰写修改等。全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围:&am…

作者头像 李华
网站建设 2026/4/16 11:07:58

用豆包写论文的同学看过来,4款降AI工具实测推荐

用豆包写论文的同学看过来,4款降AI工具实测推荐 TL;DR:豆包写论文确实快,但AI率通常在70%-80%,直接交肯定过不了。豆包自带的润色功能只能优化流畅度,降不了多少AI率。想要真正降到安全线以下,必须用专业工…

作者头像 李华
网站建设 2026/4/15 16:17:57

研究生写论文必备的3款降AI工具,导师都说自然

研究生写论文必备的3款降AI工具,导师都说自然 TL;DR:研究生论文对学术规范和表达自然度要求更高,普通降AI工具容易改出「机翻味」。本文推荐3款导师认可的降AI工具:嘎嘎降AI(学术味保留好,达标率99.26%&…

作者头像 李华
网站建设 2026/4/16 10:44:30

6.4 Cross-Attention机制:视觉与语言如何深度融合

6.4 Cross-Attention机制:视觉与语言如何深度融合 引言 在前三节中,我们学习了视觉问答(VQA)、视觉定位(Grounding)以及DETR和GLIP等新一代目标检测技术。这些技术的核心都依赖于一个关键机制——跨模态注意力(Cross-Attention),它使得视觉和语言模态能够进行深层次…

作者头像 李华