Giter VIP home page Giter VIP logo

spotify-playlist-archive's Introduction

spotify-playlist-archive Workflow status Save the Children

Daily snapshots of public Spotify playlists

Motivation

Spotify's playlists are great. I like that they're updated once in a while - change is good! I don't like, however, that it's impossible to see older versions. How am I supposed to remember the name of that song I really liked? Apparently, I'm not alone...

Click for examples
  1. Find Songs of old versions of Spotify Playlists (Dec 15, 2014)
  2. A playlist was modified. Can I get the old songs back? (Dec 21, 2014)
  3. Today's top hits -- old songs (Dec 29, 2014)
  4. Looking for last weeks "Fresh Finds" playlist (Mar 16, 2016)
  5. Seeing an old version of a playlist (Apr 2, 2016)
  6. Old "New Music Friday" playlists (May 20, 2016)
  7. 88 Keys playlist changed - need to find old songs (May 31, 2016)
  8. Old Brain Food Playlist Song (Sep 18, 2017)
  9. The Replacement Peace Playlist (Oct 2, 2017)
  10. Archive of Morning Commute playlist from February 2017? (Jan 17, 2018)
  11. Spotify Changed Playlist Content and I would like the old songs (Jan 24, 2018)
  12. View previous versions of playlists (Feb 28, 2018)
  13. Spotify changes playlists? (Jun 15, 2018)
  14. Archive Spotify managed Playlists (Aug 24, 2018)
  15. Recover list of past Release Radar playlists (Nov 14, 2018)
  16. Is there any way to recover previous versions of a playlist? (Apr 13, 2019)
  17. Throwback Thursday Archive (May 23, 2019)
  18. Former Perfect Concentration playlist songs? (Oct 20, 2019)
  19. Recover old version of a Spotify-created playlist? (Feb 1, 2020)
  20. How to get an old version of a playlist (Nov 24, 2020)
  21. Recover previous version of Spotify playlist "Rainy Day" (Nov 30, 2020)
  22. POLLEN - Viewing songs that have been taken off the playlist (Dec 3, 2020)
  23. Recover Official Spotify Playlist (Dec 10, 2020)
  24. Spotify archive playlists (May 25, 2021)
  25. Release radar old songs (Jul 30, 2021)
  26. Option to Enable Version History for Playlists (May 20, 2023)

Since Spotify won't take snapshots of our favorite playlists, let's do it ourselves!

How it works

This repository uses a Python script to scrape Spotify playlists and publish them back to the repo. The script is run daily via GitHub Actions. The script determines which playlists to scrape by looking at the file names in playlists/registry. Files get regenerated as follows: an up-to-date version of each playlist gets dumped in playlists/pretty, new tracks are added to the files in playlists/cumulative, and a plaintext version of each playlist is written to playlists/plain. The plain version is sorted alphabetically, rather than by track number, so that it only changes when tracks are added or removed, making Git History a nice way to visualize how the playlist evolves over time.

FAQ

How do I browse the archive?

There are two options for browsing the archive:

  1. Use the website: https://spotifyplaylistarchive.com/
  2. Browse the files on GitHub: playlists/index.md

How do I add a playlist to the archive?

See these instructions.

How do I recreate an old version of a playlist?

  1. Use https://spotifyplaylistarchive.com/ to find the snapshot you want
  2. Use the "Copy track URLs" button to copy the URLs to your clipboard
  3. Paste them into a Spotify playlist via the Spotify web or desktop app

Why does the archive contain the wrong songs?

Many Spotify playlists are now personalized. The archive contains the content that a logged-out user would see.

Why does the archive contain the wrong playlist names?

Some playlist names have been manually overridden via their registry files. Additionally, when two or more playlists share the same name, the archive automatically appends a suffix like "(2)" to avoid duplicates.

spotify-playlist-archive's People

Contributors

andreoda avatar apoclyps avatar bananabeer19 avatar catzs avatar choonchew avatar cleoni avatar curtisjk avatar danceder avatar evaaaaaaaaaaaaaaaaaaan avatar fortytwo102 avatar github-actions[bot] avatar haydenelza avatar jesse27 avatar kairixir avatar litebrick204 avatar maciejpedzich avatar mackorone avatar mackorone-bot avatar mixgrill924 avatar mjmawins avatar officiallskillstreet avatar prillan avatar robbycuenot avatar romiljain23 avatar searching2020 avatar sv3a avatar ttrnwcz avatar twomilesblue avatar wanniethecharacter avatar wlritchi avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

spotify-playlist-archive's Issues

Add Mellow Bars

touch playlists/plain/<37i9dQZF1DWT6MhXz0jw61?si=11r4mfddTBK67WL5RNQ10Q&dl_branch=1>

Error while cloning using GitHub Desktop

I'm getting the following error when cloning using GitHub Desktop

Cloning into 'D:\Ciaran\Dev\spotify-playlist-archive'...
remote: Enumerating objects: 93894, done.        
remote: Counting objects: 100% (11294/11294), done.        
remote: Compressing objects: 100% (816/816), done.        
remote: Total 93894 (delta 10529), reused 11234 (delta 10474), pack-reused 82600        
Receiving objects: 100% (93894/93894), 140.86 MiB | 4.10 MiB/s, done.
Resolving deltas: 100% (88800/88800), done.
error: invalid path 'playlists/cumulative/Acoustic Hits: Oldies but Goodies.md'
fatal: unable to checkout working tree
warning: Clone succeeded, but checkout failed.
You can inspect what was checked out with 'git status'
and retry with 'git restore --source=HEAD :/'

Recreate cumulative playlists

My God. This probably saved me an incredible amount of time and frustration. Many thanks, @mackorone!

Is there a way to copy track URLs from the cumulative lists?

Old additions don't become irrelevant as Spotify updates the playlist with new songs!

Add Altar?

Requesting you add Altar to your archive. Thanks.

[Idea]: Bot that automatically verifies PRs which add new playlist(s) to the registry

Hey Mack! I'm toying with an idea of writing a bot that, as the title suggests, would verify new registry entries' validity (if there are any in a pull request). It would follow this algorithm for each file:

flowchart TD
    A((START))
    A --> B
    B{File name contains query parameters?}
    B -->|Yes| C
    C[Let Q be the file name without the parameters]
    C --> E
    B ---->|No| D
    D[Let Q be the original file name]
    D --> E
    E{Playlist with an ID equal to Q exists?}
    E --> |Yes| F
    F{Q equals the file name?}
    F --> |Yes| Z
    F --> |No| G
    G[/Request file name change/]
    G --> Z
        E --> |No| G
    Z((END))

Note: By file name with query parameters I mean a file name like 2vpAyuy9HOTPjygPl63QuH?si=3f7d3884baa44c0e.

I guess there are some other edge cases I didn't handle in that flow chart and I can't think of any as we speak, but I believe this graph outlines a decent concept for validating all new entries. Not really sure if I'll have the bandwidth to write such bot myself, given that I've started grinding away for my finals in May next year. But once I do find some time, I'll at least try looking into appropriate resources.

What do you think of this idea? By offloading the chore of verifying and integrating new entries into the archive onto such bot, you'll certainly speed up the entire process by enabling users to react to change requests (if issued) about a minute or so after opening their PRs. Manual review would serve as a fallback mechanism if automated checks were to fail for whatever reason.

Githistory with track positions

When I click on any of the options other than "pretty", it will give me an alphabetical ordering of the songs (by song name). But if I wanted to know what the order of the playlist was in a specific week in the past, I am not able to tell. Is there an easy way to enable this?

Help

I'm searching for the New Music Friday Switzerland Playlist Archive. Do you know how I can get it?

Manually add older songs to a spotify-playlist-archive cumulative playlist ?

Thanks for spotify-playlist-archive, love it.
I have a question/issue:
I know of a number of songs that were on my fav list before it got added to spotify-playlist-archive .
Is there a way to manually add songs to the cumulative list?
(Perhaps by e.g. just adding them by hand to the cumulative playlist file and submitting a PR?)
Thanks, J

Spotify Playlist Archive Wrapped 2023

Since Spotify Wrapped 2023 is out now, I thought I'd prepare a similar stats rundown for this repository.

Pull requests

  • Opened: 133
  • Merged: 105
  • Merge rate: 79%

Playlists in the registry

  • Jan 1: 5383
  • Nov 29: 7073
  • Delta: 1690

Commits

  • Jan 1: 1954
  • Nov 29: 2463
  • Delta: 509

@mackorone, thank you so much for creating this repository!

json export

I found your project today. impressive.
would it be possible to export a specific state of a playlist to json with

  • track
  • artist
  • album
  • uri

really important is only the uri.
the reason is if you want to create a playlist from a specific state you need the uris. nobody clicks every link and a thats to playlist.

Proposal for generating a registry.json file

Hey Mack!

I've just noticed that you've started displaying the total number of playlist entries in the archive in README.md. The aforementioned search engine relies on the ## Playlists header to remain unchanged in order to extract the list of playlist links, to then process it to extract every playlist's name and perform a fuzzy search.

Since the README no longer contains the exact ## Playlists string, the list can't get extracted using this approach. I've implemented a short-term fix (see my comment below), where I use RegEx instead of a hardcoded string.

But in the long term, perhaps you could generate something like a registry.json file that would contain an array of objects with name and id fields of each playlist. That way, I wouldn't have to rely on any hacky solutions to generate a similar list myself, but instead just grab that file and perform the search pretty much immediately.

Oh, and sorry for not notifying you about that search engine implementation in the first place. This was literally the only way for me to obtain a list of all the available playlists, since GitHub's code search returned many false positives, because I couldn't use token characters like ", or : in order to look for "title": "searchQueryHere" substring.

History for "The Other List" Playlist?

Hi there, I came across this project while searching for a song (I can't remember the title of) that was on The Other List in July 2020. I just want to say this is incredible, I personally have no idea how any of it works (new to code!) but much respect to you! Is it possible that you could add The Other List to the lineup of Spotify playlists to track its updates and history? Or, is there a way for me to look up the playlist history myself? Thanks!

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.