我该如何制作一个脚本来恢复我的Grooveshark播放列表,现在该服务已经关闭了?

4

Grooveshark音乐流媒体服务已经被关闭,没有事先通知。我有很多播放列表需要恢复(这些播放列表是我在几年中创建的)。

有没有办法可以恢复它们?一个脚本或自动化工具会非常好。


3
请访问此网站:Groove Backup - kenorb
如果您不想使用自动方式(害怕或不知道如何运行脚本),那么也有手动恢复播放列表的方法 - Peque
@kenorb:那个技巧已经不再适用了。请看一下我在上面评论中发布的链接。 - Peque
2个回答

17

更新 [2018-05-11]

自从发布此答案以来已经过去了三年,似乎这个脚本不再起作用了。如果您仍然需要恢复旧的Grooveshark播放列表,可能已经不可能了。祝你好运,如果你找到了一种方法,请在这里分享!我将很乐意接受您的答案。:-)


我制作了一个脚本,可以尝试查找用户创建的所有播放列表,并将它们下载为 CSV 文件存储在输出目录中。该脚本是用 Python 编写的。

  • 您只需将您的用户名作为参数传递给脚本(例如:python pysharkbackup.py "my_user_name")。您注册 Grooveshark 时使用的电子邮件地址也应该可以。
  • 输出目录默认设置为./pysharkbackup_$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']])

1
@Peque 很完美!我已经下载了播放列表,非常感谢你的帮助,你的脚本做得很好。 - Nico
我认为这只是一个带有一些 cookies 的 HTTP 请求,但我对 Linux 类型的命令还很陌生,你能否为我详细解释一下,以便我可以使用 Fiddler 发送请求? - luisgepeto
@LuisBecerril:我在Python中发布了一个新的实现。这可能会对你有所帮助。旧的实现已经无法使用了。 - Peque
@vibhu 不是这样的。我已经更新了答案来说明这一点。 :-) - Peque
@Peque,谢谢伙计。我想我来晚了。如果有人找到解决方案,请在这里分享。 - vibhu

5

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

  1. 进入grooveshark.com
  2. 打开开发者工具(右键单击 -> 检查元素)
  3. 进入资源 -> LocalStorage -> grooveshark.com
  4. 查找library变量:recentListens,library和storedQueue
  5. 解析这些变量以提取您的歌曲

可能无法提供播放列表,但可以帮助检索您的一部分收藏。


2
你并没有要求一个脚本,而是询问如何自己制作一个,我给了你一个策略。这个策略可能并不适用于每个人,但这并不是一个可以通过编程解决的问题,因为该服务已经永久关闭。很抱歉让你失望了,但这仍然可能对某些人有所帮助。 - Anoyz

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接