{"id":15011034,"url":"https://github.com/goktug97/yet-another-spotify-lyrics","last_synced_at":"2025-04-09T19:04:24.959Z","repository":{"id":54743018,"uuid":"196866800","full_name":"goktug97/yet-another-spotify-lyrics","owner":"goktug97","description":"Command Line Spotify Lyrics with Album Cover","archived":false,"fork":false,"pushed_at":"2022-05-17T17:29:09.000Z","size":19061,"stargazers_count":82,"open_issues_count":4,"forks_count":1,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-03-23T21:01:36.110Z","etag":null,"topics":["command-line","conky","dbus","emacs","i3wm","lyrics","python","spotify","spotify-lyrics","terminal","vim-keybindings"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/goktug97.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2019-07-14T17:48:35.000Z","updated_at":"2024-12-19T20:24:46.000Z","dependencies_parsed_at":"2022-08-14T01:21:00.034Z","dependency_job_id":null,"html_url":"https://github.com/goktug97/yet-another-spotify-lyrics","commit_stats":null,"previous_names":[],"tags_count":11,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/goktug97%2Fyet-another-spotify-lyrics","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/goktug97%2Fyet-another-spotify-lyrics/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/goktug97%2Fyet-another-spotify-lyrics/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/goktug97%2Fyet-another-spotify-lyrics/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/goktug97","download_url":"https://codeload.github.com/goktug97/yet-another-spotify-lyrics/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247694878,"owners_count":20980733,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","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":["command-line","conky","dbus","emacs","i3wm","lyrics","python","spotify","spotify-lyrics","terminal","vim-keybindings"],"created_at":"2024-09-24T19:38:33.212Z","updated_at":"2025-04-09T19:04:24.927Z","avatar_url":"https://github.com/goktug97.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"Yet Another Spotify Command Line Lyrics\n==========================================\n\n![Lyrics-Screenshot](https://raw.githubusercontent.com/goktug97/yet-another-spotify-lyrics/master/screenshot.jpg)\n\n## Requirements\n* Linux\n* Python \u003e= 3.6\n* ueberzug\n* dbus-python\n* requests\n* beautifulsoup4\n* lxml\n\n## Install\n\n### From PyPI\n```bash\npip3 install yet-another-spotify-lyrics --user\n```\n\n### From Source\n```bash\ngit clone https://github.com/goktug97/yet-another-spotify-lyrics\ncd yet-another-spotify-lyrics\npython setup.py install --user\n```\n\n## Usage\n![Usage Gif](https://raw.githubusercontent.com/goktug97/yet-another-spotify-lyrics/master/usage.gif)\n\n``` bash\nspotify-lyrics\n```\n\n### Keybindings\n\n| Action              | Keybinding    |\n|:-------------------:|:-------------:|\n| Scroll Up           | \u003ckbd\u003ek\u003c/kbd\u003e  |\n| Scroll Down         | \u003ckbd\u003ej\u003c/kbd\u003e  |\n| Beginning of Lyrics | \u003ckbd\u003egg\u003c/kbd\u003e |\n| End of Lyrics       | \u003ckbd\u003eG\u003c/kbd\u003e  |\n| Edit Lyrics         | \u003ckbd\u003ee\u003c/kbd\u003e  |\n| Refresh             | \u003ckbd\u003er\u003c/kbd\u003e  |\n| Toggle              | \u003ckbd\u003et\u003c/kbd\u003e  |\n| Next                | \u003ckbd\u003en\u003c/kbd\u003e  |\n| Prev                | \u003ckbd\u003ep\u003c/kbd\u003e  |\n| Update Lyrics       | \u003ckbd\u003ed\u003c/kbd\u003e  |\n| Toggle Album Cover  | \u003ckbd\u003ei\u003c/kbd\u003e  |\n| Help                | \u003ckbd\u003eh\u003c/kbd\u003e  |\n| Quit Program        | \u003ckbd\u003eq\u003c/kbd\u003e  |\n\n- Edit Lyrics: Open lyrics in `$EDITOR`.\n- Refresh: Refresh lyrics and song metadata.\n- Toggle: Play or Pause currently playing song.\n- Next: Play next song.\n- Prev: Play previous song.\n- Update Lyrics: Deletes cached lyrics and fetches lyrics from the internet. \n- Help: Show keybindings 5 seconds.\n\n### DBUS\nThe lyrics can be scrolled via dbus.\nScroll the lyrics without changing the focus.\n\n#### Python Example\n\n``` python\nimport dbus\n\nbus = dbus.SessionBus()\nlyrics = bus.get_object('com.spotify_lyrics.line', '/com/spotify_lyrics')\nlyrics.move(1) # Scroll Down\nlyrics.move(-1) # Scroll Up\n```\n\n#### Bash Example\n\n``` bash\n#!/usr/bin/env bash\ndbus-send --print-reply --dest=\"com.spotify_lyrics.line\"\\\n    \"/com/spotify_lyrics\"\\\n    \"com.spotify_lyrics.line.move\"\\\n    int32:$1 \u003e /dev/null\n```\n\nI call this bash script from my i3 config. See below.\n\n### Example Use Case (i3wm)\n```i3\nbindsym $mod+Shift+Home exec st -n Lyrics -e spotify-lyrics\nfor_window [instance=\"Lyrics\"] floating enable; [instance=\"Lyrics\"] move position center\nfor_window [instance=\"Lyrics\"] resize set 644 388\nbindsym $mod+Control+k exec lyrics-move -1\nbindsym $mod+Control+j exec lyrics-move 1\n```\n\n### Example Use Case (Emacs)\nOpen the lyrics in a buffer.\n\n``` emacs-lisp\n(defun spotify-lyrics ()\n  (interactive)\n  (let ((string (shell-command-to-string \"spotify-lyrics-once\")))\n    (get-buffer-create \"lyrics-buffer\")\n    (switch-to-buffer-other-window \"lyrics-buffer\")\n    (with-current-buffer \"lyrics-buffer\"\n      (goto-char (point-max))\n      (erase-buffer)\n      (insert string)\n      (goto-line 1))))\n```\n\n### Example Use Case (Conky)\nYou can use spotify-lyrics-once to output the lyrics to the stdout and exit.\nIf you have program that utilizes stdin, you can use this version.\nAn example for such program is Conky.\n\n``` lua\n#!/usr/bin/lua\nconky.config = {\n\talignment = 'tl',\n\tbackground = true,\n\tcolor2 = '2ECC71',\n\tcpu_avg_samples = 2,\n\tdefault_color = 'FFFFFF',\n\tdouble_buffer = true,\n\tfont = 'Bitstream Vera Sans:size=10',\n\tgap_x = 30,\n\tgap_y = 50,\n\tminimum_width = 200,\n\tno_buffers = true,\n\town_window = true,\n\town_window_type = 'override',\n\town_window_transparent = true,\n\town_window_argb_visual = true,\n\t-- own_window_type = 'desktop',\n\tupdate_interval = 3,\n\tuse_xft = true,\n}\nconky.text = [[\n${voffset 8}$color2${font Bitstream Vera Sans:size=16}${time %A}$font\\\n${voffset -8}$alignr$color${font Bitstream Vera Sans:size=38}${time %e}$font\n$color${voffset -30}$color${font Bitstream Vera Sans:size=18}${time %b}$font\\\n${voffset -3} $color${font Bitstream Vera Sans:size=20}${time %Y}$font$color2$hr\n${execi 5 spotify-lyrics-once}\n]]\n```\n\n## License\nyet-another-spotify-lyrics is licensed under the MIT License.\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgoktug97%2Fyet-another-spotify-lyrics","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fgoktug97%2Fyet-another-spotify-lyrics","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgoktug97%2Fyet-another-spotify-lyrics/lists"}