Python 既然服务已经关闭,我如何制作脚本来恢复Grooveshark播放列表?

Python 既然服务已经关闭,我如何制作脚本来恢复Grooveshark播放列表?,python,backup,playlist,recovery,grooveshark,Python,Backup,Playlist,Recovery,Grooveshark,Grooveshark音乐流媒体服务已在未事先通知的情况下关闭。我有许多播放列表,我想恢复(播放列表,我做了几年) 我有办法找回他们吗?一个脚本或者自动化的东西会很棒 更新[2018-05-11] 三年过去了,因为这个答案被张贴,似乎这个脚本不再工作。如果您仍然需要恢复旧的Grooveshark播放列表,那么这可能不再可能。祝你好运,如果你找到了一个方法,在这里分享吧!我很乐意接受你的回答。:-) 我制作了一个脚本,试图找到用户制作的所有播放列表,并将它们作为CSV文件下载到输出目录中。它是用

Grooveshark音乐流媒体服务已在未事先通知的情况下关闭。我有许多播放列表,我想恢复(播放列表,我做了几年)

我有办法找回他们吗?一个脚本或者自动化的东西会很棒

更新[2018-05-11] 三年过去了,因为这个答案被张贴,似乎这个脚本不再工作。如果您仍然需要恢复旧的Grooveshark播放列表,那么这可能不再可能。祝你好运,如果你找到了一个方法,在这里分享吧!我很乐意接受你的回答。:-)


我制作了一个脚本,试图找到用户制作的所有播放列表,并将它们作为CSV文件下载到输出目录中。它是用Python制作的

  • 您必须将用户名作为参数传递给脚本(即python pysharkbackup.py“我的用户名”)。您的电子邮件地址也应该可以使用(您在Grooveshark中注册时使用的电子邮件地址)
  • 输出目录默认设置为
    /pysharkbackup\u$USERNAME
以下是脚本:

#!/bin/python

import os
import sys
import csv
import argparse
import requests


URI = 'http://playlist.fish/api'

description = 'Download your Grooveshark playlists as CSV.'
parser = argparse.ArgumentParser(description = description)
parser.add_argument('USER', type=str, help='Grooveshar user name')
args = parser.parse_args()
user = args.USER

with requests.Session() as session:
    # Login as user
    data = {'method': 'login', 'params': {'username': user}}
    response = session.post(URI, json=data).json()
    if not response['success']:
        print('Could not login as user "%s"! (%s)' %
              (user, response['result']))
        sys.exit()

    # Get user playlists
    data = {'method': 'getplaylists'}
    response = session.post(URI, json=data).json()
    if not response['success']:
        print('Could not get "%s" playlists! (%s)' %
              (user, response['result']))
        sys.exit()

    # Save to CSV
    playlists = response['result']
    if not playlists:
        print('No playlists found for user %s!' % user)
        sys.exit()
    path = './pysharkbackup_%s' % user
    if not os.path.exists(path):
        os.makedirs(path)
    for p in playlists:
        plid = p['id']
        name = p['n']
        data = {'method': 'getPlaylistSongs', 'params': {'playlistID': plid}}
        response = session.post(URI, json=data).json()
        if not response['success']:
            print('Could not get "%s" songs! (%s)' %
                  (name, response['result']))
            continue
        playlist = response['result']
        f = csv.writer(open(path + '/%s.csv' % name, 'w'))
        f.writerow(['Artist', 'Album', 'Name'])
        for song in playlist:
            f.writerow([song['Artist'], song['Album'], song['Name']])

通过检查localStorage变量,可以访问留在浏览器中的一些信息

  • 请访问grooveshark.com
  • 打开开发工具(右键单击->检查元素)
  • 转到Resources->LocalStorage->grooveshark.com
  • 查找库变量:recentListens、library和storedQueue
  • 解析这些变量以提取歌曲

  • 可能不会提供您的播放列表,但可以帮助检索您的一些收藏。

    查看此网站:如果您不想使用自动方式(害怕或不知道如何运行脚本),则。@kenorb:该技巧不再有效。看看我在上面的评论中发布的链接。你没有要求脚本,你问如何制作脚本,我给了你一个策略。它可能不适用于所有人,但对于编程解决方案来说,这并不是一个真正的问题,因为问题在于该服务将永远停止。很抱歉,我让你失望了,但这可能仍然会帮助别人。@Peque完美!我下载了播放列表,非常感谢,你的脚本做得很好。我想这只是一个带有cookies的http请求,但我对linux类型的命令不太熟悉,你能帮我解释一下吗,这样我就可以使用fiddler发出请求了?@LuisBecerril:我发布了一个新的Python实现。那可能对你有帮助。旧的实现不再工作。@vibhu它不工作了。我更新了答案以记录它。:-)@佩克,谢谢你,伙计。我想我迟到了。如果有人找到了解决方案,请在这里分享。