paint-brush
Spotify Wrapped Hack:在即日起发表以后新建您个人的统数值数据表格 路过@lukaskrimphove
10,148 讀數
10,148 讀數

Spotify Wrapped Hack:在正式发布之前创建您自己的统计数据

要经过 Lukas Krimphove5m2023/11/27
Read on Terminal Reader

太長; 讀書

这是在 Spotify Wrapped 正式发布之前预览 Spotify 统计数据的一种方式。了解如何使用您的流媒体历史记录来发现您最常听的歌曲、艺术家和专辑。
featured image - Spotify Wrapped Hack:在正式发布之前创建您自己的统计数据
Lukas Krimphove HackerNoon profile picture
0-item

介绍

今年,Spotify 我们都殷切地等待时间 Spotify Wrapped 的正是发布信息,这都是份个性设计化的财政年度回首过去,表现了顾客最经常听的曲子、音乐美工和派别。假如我告诉过您有种方案能能在正是正是发布信息前几天先睹为快您的 Spotify 调查统筛选据,您会如何进行?


在本规范中,我将教育引导您成功 Spotify Wrapped hack,它允许的您选择 Spotify 流动态核算资料新建您自已的特色化核算动态核算资料。其实您不也可以等着 Spotify Wrapped,又很您还也可以新建 Spotify 不要向您提示 的核算动态核算资料。

先决条件

我之前的一个项目类似,我们将使用 Jupyter Notebook 来完成这个项目。它是实验和处理数据的绝佳工具。


如果您暂未怎么布置 Jupyter Notebook,按照照其上的说明怎么写对其进行操作流程。怎么布置后,您可撰写一款 新的 Jupyter Notebook 并提供好开展调研熟知 您的 Spotify 调查统计数器据。

收集和清理数据

第一,您必须要 postajax恳求 Spotify 流网络新闻数据信息源库。您可来执行此操作的(为了确保您postajax恳求“加密流网络新闻发展记录时间耗时”)。 Spotify 必须要 一下耗时方能向您群发数据信息源库。仅postajax恳求“银行账户数据信息源库”会快速,还有还是会为您展示2018的流网络新闻发展记录时间耗时。因为,它不太图解,您必须要懂得调整码。


得到数据报告后,.我就能否导出来它。您将得到若干 JSON zip文件目录。每一位zip文件目录由四组目标分解成,在这其中蕴含光于手机播放的歌或播客电视剧情的资料:
 { "ts": "2024-01-30T16:36:40Z", "username": "", "platform": "linux", "ms_played": 239538, "conn_country": "DE", "ip_addr_decrypted": "", "user_agent_decrypted": "", "master_metadata_track_name": "Wonderwall - Remastered", "master_metadata_album_artist_name": "Oasis", "master_metadata_album_album_name": "(What's The Story) Morning Glory? (Deluxe Remastered Edition)", "spotify_track_uri": "spotify:track:7ygpwy2qP3NbrxVkHvUhXY", "episode_name": null, "episode_show_name": null, "spotify_episode_uri": null, "reason_start": "remote", "reason_end": "remote", "shuffle": false, "skipped": false, "offline": false, "offline_timestamp": 0, "incognito_mode": false }
这这不仅不错让您弄非常清楚楚您啥时候并且在什么设备上收看了歌,还不错为您保证某种意义能不能并且啥时候关掉这首词歌等资料。


.我将比较简单地将他们基本合并为到1个 Pandas 数据信息框中:
 path_to_json = 'my_spotify_data/' frames = [] for file_name in [file for file in os.listdir(path_to_json) if file.endswith('.json')]: frames.append(pd.read_json(path_to_json + file_name)) df = pd.concat(frames)


然后,当我们将完成删出播客、过滤装置掉短点击连续时段并将时段戳改换为更易读的格试来对其实现彻底清除:
 # drop all rows containing podcasts df = df[df['spotify_track_uri'].notna()] # drop all songs which were playing less than 15 seconds df = df[df['ms_played'] > 15000] # convert ts from string to datetime df['ts'] = pd.to_datetime(df['ts'], utc=False) df['date'] = df['ts'].dt.date # drop all columns which are not needed columns_to_keep = [ 'ts', 'date', 'ms_played', 'platform', 'conn_country', 'master_metadata_track_name', 'master_metadata_album_artist_name', 'master_metadata_album_album_name', 'spotify_track_uri' ] df = df[columns_to_keep] df = df.sort_values(by=['ts']) songs_df = df.copy()

分析和可视化您的 Spotify 统计数据

有史以来最热门的歌曲

我会们从挑战您一只来说最喜好的歌曲试听开启吧。人们公司是可以基于您的流新闻媒介厉史的记录便捷公布人们公司的最火歌曲曲目:
 df = songs_df.copy() df = df.groupby(['spotify_track_uri']).size().reset_index().rename(columns={0: 'count'}) df = df.sort_values(by=['count'], ascending=False).reset_index() df = df.merge(songs_df.drop_duplicates(subset='spotify_track_uri')) df = df[['master_metadata_track_name', 'master_metadata_album_artist_name', 'master_metadata_album_album_name', 'count']] df.head(20)

2023 年热门歌曲

对就在今年的音樂浪潮心存惊奇吗?我都可以运用这样的函数公式来论述 2023 年的最受欢迎歌词:
 def top_songs_in_year(year): df = songs_df.copy() df['year'] = df['ts'].dt.year df = df.loc[(df['year'] == year)] print(f"Time listened in {year}: {datetime.timedelta(milliseconds=int(df['ms_played'].sum()))}") df = df.groupby(['spotify_track_uri']).size().reset_index().rename(columns={0: 'count'}) df = df.sort_values(by=['count'], ascending=False).reset_index() df = df.merge(songs_df.drop_duplicates(subset='spotify_track_uri')) df = df[['master_metadata_track_name', 'master_metadata_album_artist_name', 'master_metadata_album_album_name', 'count']] return df.head(20) 

我的热门歌曲 2023

与小部件的交互

这现在已经很很好的了,但为任何人要要求在这里呢?我门公司是可以采用的交互设计式小控制部件来采用的 UI 原素自理解在线查询。这使我门公司才可以随意找自己您在任何人对应时段范围内内的最赚钱流行歌曲:
 @interact def top_songs(date_range=date_range_slider): df = songs_df.copy() time_range_start = pd.Timestamp(date_range[0]) time_range_end = pd.Timestamp(date_range[1]) df = df.loc[(df['date'] >= time_range_start.date()) & (df['date'] <= time_range_end.date())] df = df.groupby(['spotify_track_uri']).size().reset_index().rename(columns={0: 'count'}) df = df.sort_values(by=['count'], ascending=False).reset_index() df = df.merge(songs_df.drop_duplicates(subset='spotify_track_uri')) df = df[['master_metadata_track_name', 'master_metadata_album_artist_name', 'master_metadata_album_album_name', 'count']] return df.head(20) 

过去六个月我最喜欢的歌曲

时间和工作日分布

现今大家的都都清楚了大家的都的热们推荐歌、热们推荐艺术性家和热们推荐音乐专辑,大家的都应该更进这一步。举个例子,打磨1周中的哪三天大家的都在 Spotify 上最活跃性:
 def plot_weekday_distribution(): df = songs_df.copy() df['year'] = df['ts'].dt.year df['weekday'] = df['ts'].dt.weekday df = df.groupby(['year', 'weekday']).size().reset_index(name='count') fig, ax = plt.subplots(figsize=(12, 8)) for year, data in df.groupby('year'): ax.plot(data['weekday'], data['count'], label=str(year)) weekdays_order = ['Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday', 'Sunday'] plt.xticks(range(7), weekdays_order) plt.title('Weekday Distribution of Played Tracks Over Years') plt.xlabel('Weekday') plt.ylabel('Number of Played Tracks') plt.legend(title='Year') plt.show() 

我的工作日分布

如何自己做

备好好深入学习介绍您我们的 Spotify 汇总汇总数值没有?看我的以查寻其它编号,还有更加在不断探索听力方面汇总汇总数值的涵数。

结论

在劳动合同制发布信息前一天創建您的 Spotify 统计表数据源不止增长了趣事,还还能够深入群众掌握您独有的在线收听的习惯。如同人们全自动制袋机感触 Spotify Wrapped 都一样,为哪个不肯开启您的音乐下载定性分析冒险者呢?


备好好获得您的品质化化 Spotify Wrapped 休验!
바카라사이트 바카라사이트 온라인바카라