हर साल, Spotify उपयोगकर्ता बेसब्री से Spotify Wrapped के रिलीज़ होने का इंतजार करते हैं, जो उनके सबसे अधिक सुने जाने वाले गीतों, कलाकारों और शैलियों को प्रदर्शित करने वाला एक व्यक्तिगत वर्ष-दर-समीक्षा है। क्या होगा अगर मैंने आपसे कहा कि आधिकारिक रिलीज से पहले आपके Spotify आंकड़ों पर एक नज़र डालने का एक तरीका है?
इस गाइड में, मैं आपको Spotify रैप्ड हैक के बारे में बताऊंगा जो आपको अपने Spotify स्ट्रीमिंग डेटा का उपयोग करके अपने स्वयं के वैयक्तिकृत आँकड़े बनाने की अनुमति देता है। इस तरह आपको Spotify Wrapped के लिए प्रतीक्षा करने की आवश्यकता नहीं होगी, और आप ऐसे आँकड़े भी बनाने में सक्षम होंगे जो Spotify आपको नहीं दिखाएगा।
मेरी पिछली परियोजनाओं में से एक के समान, हम इसके लिए ज्यूपिटर नोटबुक का उपयोग करेंगे। यह प्रयोग करने और डेटा के साथ काम करने के लिए एक बेहतरीन टूल है।
यदि आपने अभी तक ज्यूपिटर नोटबुक स्थापित नहीं किया है, तो उनकी आधिकारिक वेबसाइट पर दिए गए निर्देशों का पालन करें। एक बार इंस्टॉल हो जाने पर, आप एक नया ज्यूपिटर नोटबुक बना सकते हैं और अपने Spotify आँकड़ों में गोता लगाने के लिए तैयार हो सकते हैं।
आरंभ करने के लिए, आपको अपने Spotify स्ट्रीमिंग डेटा का अनुरोध करना होगा। आप इसे यहां कर सकते हैं (सुनिश्चित करें कि आप "विस्तारित स्ट्रीमिंग इतिहास" का अनुरोध करते हैं)। Spotify को आपको आपका डेटा भेजने में कुछ समय लगेगा। केवल "खाता डेटा" का अनुरोध करना तेज़ होगा और आपको पिछले साल का स्ट्रीमिंग इतिहास भी देगा। हालाँकि, यह बहुत कम विस्तृत है और आपको कोड को अनुकूलित करना होगा।
एक बार आपके पास डेटा आ जाए, तो हम उसे आयात कर सकते हैं। आपको अनेक JSON फ़ाइलें मिलेंगी. प्रत्येक फ़ाइल में ऑब्जेक्ट की एक श्रृंखला होती है जिसमें बजाए गए गाने या पॉडकास्ट एपिसोड के बारे में जानकारी होती है:
{ "ts": "2023-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 }
यह आपको न केवल यह पता लगाने की अनुमति देता है कि आपने कब और किस डिवाइस पर गाना सुना, बल्कि यह भी जानकारी देता है कि आपने इसे कब और कब छोड़ा।
हम बस उन सभी को एक एकल पांडा डेटा फ्रेम में मर्ज कर देंगे:
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()
आइए आपके सर्वकालिक पसंदीदा गीतों की खोज करके शुरुआत करें। हम आपके स्ट्रीमिंग इतिहास के आधार पर आसानी से अपने शीर्ष ट्रैक का अनावरण कर सकते हैं:
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 के शीर्ष गीतों को प्रकट करने के लिए कर सकते हैं:
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)
वह पहले से ही बहुत अच्छा काम करता है, लेकिन उसके लिए समझौता क्यों करें? हम यूआई तत्वों का उपयोग करके प्रश्नों को अनुकूलित करने के लिए इंटरैक्टिव विजेट का उपयोग कर सकते हैं। यह हमें किसी भी विशिष्ट समय सीमा में आपके शीर्ष गीतों को सहजता से ढूंढने की अनुमति देता है:
@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)
अब जब हम अपने शीर्ष गीतों, शीर्ष कलाकारों और शीर्ष एल्बमों को जानते हैं, तो हम थोड़ा और आगे बढ़ सकते हैं। उदाहरण के लिए, यह पता लगाना कि हम 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 आँकड़ों में गोता लगाने के लिए तैयार हैं? अपने सुनने के आंकड़ों का पता लगाने के लिए और भी अधिक फ़ंक्शन सहित सभी कोड ढूंढने के लिए मेरी GitHub रिपॉजिटरी देखें।
आधिकारिक रिलीज़ से पहले अपने Spotify आँकड़े बनाना न केवल मनोरंजन का तत्व जोड़ता है, बल्कि आपकी अद्वितीय सुनने की आदतों के बारे में जानकारी भी प्रदान करता है। जैसा कि हम उत्सुकता से Spotify Wrapped का इंतजार कर रहे हैं, तो क्यों न आप अपने संगीत विश्लेषण साहसिक कार्य पर एक शुरुआत करें?
अपने वैयक्तिकृत Spotify रैप्ड अनुभव में शामिल होने के लिए तैयार हो जाइए!