{"id":49575206,"url":"https://github.com/rollecode/spicetify-lastfm-loved","last_synced_at":"2026-05-03T16:11:02.668Z","repository":{"id":302639129,"uuid":"1013128446","full_name":"rollecode/spicetify-lastfm-loved","owner":"rollecode","description":"A Spicetify extension that adds a Last.fm loved tracks column to Spotify playlists and artist views with clickable heart icons.","archived":false,"fork":false,"pushed_at":"2025-09-27T13:51:20.000Z","size":144,"stargazers_count":9,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"master","last_synced_at":"2026-05-02T13:33:33.370Z","etag":null,"topics":["lastfm","lastfm-api","spicetify","spicetify-extensions","spotify","spotify-api"],"latest_commit_sha":null,"homepage":"","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/rollecode.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2025-07-03T12:00:24.000Z","updated_at":"2026-04-25T11:21:33.000Z","dependencies_parsed_at":"2025-09-22T18:06:20.173Z","dependency_job_id":"3f1e8610-cc6b-466c-96b3-b8c5519532af","html_url":"https://github.com/rollecode/spicetify-lastfm-loved","commit_stats":null,"previous_names":["ronilaukkarinen/spicetify-lastfm-loved","rollecode/spicetify-lastfm-loved"],"tags_count":4,"template":false,"template_full_name":null,"purl":"pkg:github/rollecode/spicetify-lastfm-loved","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rollecode%2Fspicetify-lastfm-loved","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rollecode%2Fspicetify-lastfm-loved/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rollecode%2Fspicetify-lastfm-loved/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rollecode%2Fspicetify-lastfm-loved/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/rollecode","download_url":"https://codeload.github.com/rollecode/spicetify-lastfm-loved/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rollecode%2Fspicetify-lastfm-loved/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32575400,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-03T06:36:36.687Z","status":"ssl_error","status_checked_at":"2026-05-03T06:36:09.306Z","response_time":103,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["lastfm","lastfm-api","spicetify","spicetify-extensions","spotify","spotify-api"],"created_at":"2026-05-03T16:11:01.960Z","updated_at":"2026-05-03T16:11:02.660Z","avatar_url":"https://github.com/rollecode.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# ❤️ Last.fm loved tracks column for Spotify\n\n[![JavaScript](https://img.shields.io/badge/JavaScript-F7DF1E?style=for-the-badge\u0026logo=javascript\u0026logoColor=black)](https://developer.mozilla.org/en-US/docs/Web/JavaScript)\n[![Spotify](https://img.shields.io/badge/Spotify-1ED760?style=for-the-badge\u0026logo=spotify\u0026logoColor=white)](https://spicetify.app/)\n[![Last.fm](https://img.shields.io/badge/Last.fm-D51007?style=for-the-badge\u0026logo=last.fm\u0026logoColor=white)](https://last.fm/) ![Version](https://img.shields.io/badge/version-1.2.2-blue?style=for-the-badge)\n\n[A Spicetify](https://github.com/spicetify) extension that adds a Last.fm loved tracks column to Spotify playlists and artist views with clickable heart icons.\n\n![image](https://github.com/user-attachments/assets/f8e4182c-4f5f-47de-b280-5aa0327cfe3e)\n\n## Features\n\n- **Heart Icon Column**: Adds a clickable heart column to playlist and artist views\n- **Real-time Status**: Shows current loved status from your Last.fm account\n- **One-click Love/Unlove**: Toggle track love status directly from Spotify\n- **Visual Feedback**: Green hearts for loved tracks, gray for unloved\n- **Seamless Integration**: Matches Spotify's native design language\n- **Auto-refresh**: Automatically updates when navigating between views\n\n## Requirements\n\n- [Spicetify](https://spicetify.app/) installed and running\n- [Last.fm account](https://last.fm/) with API access\n- Last.fm API key and session key\n\n## Setup\n\n### 1. Get Last.fm API Credentials\n\n#### Step 1: Get your API Key\n\n1. Go to [Last.fm API account creation](https://www.last.fm/api/account/create)\n2. Fill in the form:\n   - **Application name**: `Spicetify LastFM Loved` (or any name you prefer)\n   - **Application description**: `Spicetify extension for Last.fm loved tracks`\n   - **Application homepage URL**: `https://github.com/ronilaukkarinen/spicetify-lastfm-loved`\n   - **Callback URL**: Leave empty or use `http://localhost`\n3. Submit the form and note your **API Key** and **Shared Secret**\n\n#### Step 2: Get your Session Key (Authentication)\n\n1. Replace `YOUR_API_KEY` in this URL with your actual API key:\n   ```\n   https://www.last.fm/api/auth/?api_key=YOUR_API_KEY\u0026cb=http://localhost\n   ```\n2. Open this URL in your browser and authorize the application\n3. After authorization, you'll be redirected to a page with a token in the URL like:\n   ```\n   http://localhost/?token=SOME_TOKEN_HERE\n   ```\n4. Copy the token from the URL\n5. Create an API signature using this command (replace the values):\n   ```bash\n   echo -n \"api_keyYOUR_API_KEYmethodauth.getSessiontokenYOUR_TOKENYOUR_SHARED_SECRET\" | md5sum | cut -d' ' -f1\n   ```\n6. Make a GET request to:\n   ```\n   https://ws.audioscrobbler.com/2.0/?method=auth.getSession\u0026api_key=YOUR_API_KEY\u0026token=YOUR_TOKEN\u0026api_sig=YOUR_MD5_HASH\u0026format=json\n   ```\n7. The response will contain your session key in the `key` field\n\n#### What you'll need for configuration:\n\n- **API Key**: From step 1\n- **Username**: Your Last.fm username  \n- **Session Key**: From authentication process above\n\n### 2. Install the extension\n\n#### Manual installation\n\nOn Windows make sure you have lastfmLoved.js in `C:\\Users\\YourUsername\\AppData\\Roaming\\spicetify\\Extensions`. On Linux/Mac:\n\n```bash\ncd $HOME/.config/spicetify/Extensions\ngit clone https://github.com/ronilaukkarinen/spicetify-lastfm-loved.git\ncd spicetify-lastfm-loved\ncp lastfmLoved.js ..\ncd ..\n```\n\nApply:\n```\nspicetify config extensions lastfmLoved.js\nspicetify apply\n```\n\n### 3. Configure the Extension\n\n1. Open Spotify with Spicetify\n2. Right-click anywhere → **\"Last.fm Loved Config\"**\n3. Enter your credentials (from Step 1):\n   - **API Key**: Your Last.fm API key (from the API account creation)\n   - **Username**: Your Last.fm username (your profile name)\n   - **Session Key**: Your authenticated session key (from the authentication process)\n4. Click **Save**\n\n**Note**: All three fields are required. The extension won't work without a valid session key.\n\n## Usage\n\nOnce configured, you'll see a heart column (♥) in your playlists and artist views:\n\n- **Gray heart**: Track is not loved on Last.fm\n- **Green heart**: Track is loved on Last.fm\n- **Click heart**: Toggle love/unlove status\n\nThe extension automatically syncs with your Last.fm account and updates the display in real-time.\n\n## Troubleshooting\n\n### Hearts not appearing\n\n- Ensure you have the latest version of Spicetify installed\n- Check that the extension is properly loaded in Spicetify settings\n- Verify your Last.fm credentials in the configuration\n\n### API errors\n\n- Double-check your API key and session key\n- Ensure your Last.fm account has proper API access\n- Try refreshing the Spotify page\n\n### Column not showing\n\n- The extension works with playlist and artist views\n- Try navigating to a different playlist and back\n- Restart Spotify if the column doesn't appear\n\n## Privacy\n\nThis extension:\n\n- **Does**: Connect to Last.fm API to fetch and update loved track status\n- **Does**: Store your API credentials locally in browser storage\n- **Does Not**: Send your data to any third parties\n- **Does Not**: Track your listening habits beyond Last.fm integration\n\nYour Last.fm credentials are stored locally and only used for API communication with Last.fm servers.\n\n## Development\n\n### Setup\n\n```bash\ngit clone https://github.com/ronilaukkarinen/spicetify-lastfm-loved.git\ncd spicetify-lastfm-loved\n```\n\n### Local development\n\n```bash\n# Link to Spicetify extensions directory\nln -s $(pwd)/lastfmLoved.js ~/.config/spicetify/Extensions/\nspicetify config extensions lastfmLoved.js\nspicetify apply\n```\n\n### Debugging\n\n- Open Spotify Developer Tools (Ctrl+Shift+I) (you need to `spicetify enable-devtools` first)\n- Check console for any Last.fm API errors\n- Verify network requests to Last.fm API endpoints\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frollecode%2Fspicetify-lastfm-loved","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Frollecode%2Fspicetify-lastfm-loved","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frollecode%2Fspicetify-lastfm-loved/lists"}