{"id":13442643,"url":"https://github.com/ahefner/shuffletron","last_synced_at":"2026-03-12T13:45:04.558Z","repository":{"id":776272,"uuid":"463768","full_name":"ahefner/shuffletron","owner":"ahefner","description":"A music player based on search and tagging, with a terminal UI, for Linux, written in Common Lisp.","archived":false,"fork":false,"pushed_at":"2024-10-23T03:03:23.000Z","size":329,"stargazers_count":52,"open_issues_count":1,"forks_count":10,"subscribers_count":4,"default_branch":"master","last_synced_at":"2025-12-18T12:53:46.424Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"http://vintage-digital.com/hefner/software/shuffletron/","language":"Common Lisp","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/ahefner.png","metadata":{"files":{"readme":"README.md","changelog":"NEWS","contributing":null,"funding":null,"license":"LICENSE","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}},"created_at":"2010-01-08T14:13:26.000Z","updated_at":"2025-10-07T17:22:28.000Z","dependencies_parsed_at":"2025-03-21T14:48:39.587Z","dependency_job_id":null,"html_url":"https://github.com/ahefner/shuffletron","commit_stats":null,"previous_names":[],"tags_count":7,"template":false,"template_full_name":null,"purl":"pkg:github/ahefner/shuffletron","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ahefner%2Fshuffletron","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ahefner%2Fshuffletron/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ahefner%2Fshuffletron/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ahefner%2Fshuffletron/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ahefner","download_url":"https://codeload.github.com/ahefner/shuffletron/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ahefner%2Fshuffletron/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":30427348,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-03-12T12:46:33.731Z","status":"ssl_error","status_checked_at":"2026-03-12T12:42:20.405Z","response_time":114,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: 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":[],"created_at":"2024-07-31T03:01:48.494Z","updated_at":"2026-03-12T13:45:04.536Z","avatar_url":"https://github.com/ahefner.png","language":"Common Lisp","readme":"# Shuffletron is a music player based on search and tagging, with a terminal UI, for Linux, written in Common Lisp.\n\n\nShuffletron is a text-mode music player oriented around search and\ntagging. Its principle of operation is simple: search for songs, then\nplay them.\n\n![](img-search.png)\n\n# Build\n\nFirst make the binary for your Lisp:\n\n    make shuffletron-bin  # sbcl\n    # make shuffletron-ccl\n    # make shuffletron-ccl64\n\nInstall the binary and link the libraries:\n\n    sudo make install\n\nRun it via the script:\n\n    ./shuffletron\n\n## Dependencies\n\nOn Debian, you first need a Lisp implementation. In doubt, install SBCL:\n\n    apt install sbcl\n\nYou need those dependencies for Flac and Ogg support:\n\n     apt install libflac-dev\n     apt install libvorbis-dev\n\nAlternatively you could remove the related mixalot packages in the `shuffletron.asd`:\n\n    :depends-on (:osicat :mixalot :mixalot-mp3 :mixalot-vorbis :mixalot-flac)\n\n# Usage\n\nSearches are performed by typing a `/` followed by the search string.\n\nIf ID3 tags are present, songs after a search are presented in the following form:\n\n    Artist, [Album,] [Track:] Title\n\nIf ID3 information on the artist and title is not available, the\nfilename is printed instead.\n\nIn the  leftmost column is some  subset of the letters  'f', 'a', 'b',\nand 't'.   These indicate  which fields matched  the query  string, as\nfollows:\n\n    f: Filename\n    a: Artist\n    b: Album\n    t: Title\n\nSuccessive searches refine the result of previous searches, and the\nprompt indicates the number of items you're currently searching\nwithin.  If there had been more than 50 matches, they would not be\nprinted by default, but you could use the `show` command at any time\nto print them.\n\nFollowing this is a column of numbers, starting from zero. These allow\nyou to choose  songs to play as comma (or  space) delimited numbers or\nranges of numbers. If the song  is already in the queue, the number is\nhighlighted in bold white text. Here, I decide to play song 8 then 0-3\nby entering this at the prompt:\n\n    9 matches\u003e 8, 0-3\n\nThe currently  playing song is  interrupted, and the chosen  songs are\nadded to  the head of the playback  queue. To see the  contents of the\nqueue, use the 'queue' command:\n\n```\n9 matches\u003e queue\n     (0)  Chromeo, She's In Control, 10: Ah Oui Comme Ca\n     (1)  \"........................\"  1: My And My Man\n     (2)  \"........................\"  2: Needy Girl\n     (3)  \"........................\"  3: You're So Gangsta\n```\n\nNotice that  the prompt changed  from \"library\u003e\" to  \"9 matches\u003e\"\nafter our  initial search. Also note that the `queue` command\ndoesn't disrupt the  current search results (this is  why numbering in\nthe  queue listing is  surrounded with  parentheses, to  indicate that\nentering numbers for playback does not refer to them).\n\nTo  add songs  to the  queue  without interrupting  the current  song,\nprefix the song list with `+` (to append) or `pre` (to prepend).\n\nThe  queue can be  cleared with  the `clear`  command, and  the `skip`\ncommand skips  the current song and  advances to the next  song in the\nqueue.  The `next`  command is  similar, but  differs when  looping is\nenabled: 'next' retains the current song at the end of the queue so it\nwill play again, 'skip' does not.\n\nThe `loop` command toggles looping  mode. In looping mode, songs are\nreturned to  the end of  the queue when  they finish playing,  or when\nthey are bypassed using the 'next' command.\n\nWhen you've  completed a  search, a single  blank line  moves backward\nthrough the search history, eventually returning to the \"library\u003e\"\nprompt.\n\nIf you've  imported a large  library, the ID3  tags may not  have been\nscanned.   In this case,  the program  will suggest  that you  run the\nscanid3 command.   Scanning ID3  tags can be  very time  consuming, as\neach file must be opened  and read from. Once scanned, ID3 information\nis remembered by caching  it in the `~/.shuffletron/id3-cache` file, so\nyou only need to do this the first time you run the program.  ID3 tags\nof new files are scanned  automatically when the program starts unless\nthere are more than 1,000 new files.\n\nAdditional help topics:\n\n    help commands\n    help examples\n    help alarms\n\n# Licence\n\nMIT\n","funding_links":[],"categories":["Common Lisp","Applications"],"sub_categories":["Audio"],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fahefner%2Fshuffletron","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fahefner%2Fshuffletron","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fahefner%2Fshuffletron/lists"}