{"id":13443296,"url":"https://github.com/mihaiolteanu/vuiet","last_synced_at":"2026-01-28T04:35:58.803Z","repository":{"id":46074044,"uuid":"236380572","full_name":"mihaiolteanu/vuiet","owner":"mihaiolteanu","description":"The music player and explorer for Emacs","archived":false,"fork":false,"pushed_at":"2023-12-31T10:53:33.000Z","size":111,"stargazers_count":292,"open_issues_count":1,"forks_count":13,"subscribers_count":9,"default_branch":"master","last_synced_at":"2025-10-10T15:07:21.807Z","etag":null,"topics":["lastfm","music-explorer","music-player"],"latest_commit_sha":null,"homepage":"https://mihaiolteanu.me/vuiet","language":"Emacs Lisp","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/mihaiolteanu.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,"governance":null,"roadmap":null,"authors":null,"dei":null}},"created_at":"2020-01-26T21:45:00.000Z","updated_at":"2025-09-16T03:32:47.000Z","dependencies_parsed_at":"2023-12-31T11:38:39.876Z","dependency_job_id":"bfbd7ccc-6666-42f9-9904-e4a3eb864590","html_url":"https://github.com/mihaiolteanu/vuiet","commit_stats":null,"previous_names":[],"tags_count":1,"template":false,"template_full_name":null,"purl":"pkg:github/mihaiolteanu/vuiet","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mihaiolteanu%2Fvuiet","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mihaiolteanu%2Fvuiet/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mihaiolteanu%2Fvuiet/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mihaiolteanu%2Fvuiet/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/mihaiolteanu","download_url":"https://codeload.github.com/mihaiolteanu/vuiet/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mihaiolteanu%2Fvuiet/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28838488,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-28T02:10:51.810Z","status":"ssl_error","status_checked_at":"2026-01-28T02:10:50.806Z","response_time":57,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6: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":["lastfm","music-explorer","music-player"],"created_at":"2024-07-31T03:01:58.776Z","updated_at":"2026-01-28T04:35:58.771Z","avatar_url":"https://github.com/mihaiolteanu.png","language":"Emacs Lisp","funding_links":[],"categories":["Emacs Lisp"],"sub_categories":[],"readme":"# Vuiet\n\n![melpa](https://melpa.org/packages/vuiet-badge.svg)\n\nVuiet is a music player and explorer for Emacs users. It is similar in scope to\n[lastfm](https://last.fm) on which it is based. All tracks are played from\nyoutube using mpv in the background and music info taken from last.fm. Vuiet\nsupports the \"discovery mode\", where it lets you create your own playlists based\non artist, genre or your loved songs similarities. Or, you can specify single\ntracks, top tracks from a given artist, known albums, etc. There is also a\nlyrics database that is optionally updated with each track you play and this\ndatabase can be searched interactively and played from.\n\n# Table of Contents\n\n- [Vuiet](#vuiet)\n- [Overview](#overview)\n  * [Music Browser](#music-browser)\n  * [Music Player](#music-player)\n  * [Play by Lyrics](#play-by-lyrics)\n  * [Other Features](#other-features)\n- [Installation Requirements](#installation-requirements)\n- [Complete functionality](#complete-functionality)\n  * [Playlists](#playlists)\n  * [Browser](#browser)\n  * [Player Interaction](#player-interaction)\n  * [Customization](#customization)\n\n(Table of contents generated with [markdown-toc](http://ecotrust-canada.github.io/markdown-toc/))\n\n# Overview\n\n## Music Browser\n\nBrowse artists, genres or albums with Emacs,\n```emacs-lisp\n(vuiet-tag-info \"progressive rock\")\n(vuiet-album-info \"steven wilson\" \"to the bone\")\n(vuiet-artist-info \"steven wilson\")\n...\n``` \n\n![image](https://user-images.githubusercontent.com/8273519/107241018-3c270a80-6a33-11eb-9fda-7213a617be2c.png)\n\n## Music Player\n\nPlay an artist top songs, sequentially or randomly,\n```emacs-lisp\n(vuiet-play-artist '(\"steven wilson\"))\n```\n\nor tracks from similar artists, whole albums, loved tracks, or whole genres,\n```emacs-lisp\n(vuiet-play-artist-similar '(\"lost in kiev\"))\n(vuiet-play-album \"anathema\" \"one last goodbye\")\n(vuiet-play-tag-similar '(\"classic rock\" \"80s\" \"progressive\"))\n...\n```\n\n## Play by Lyrics\n\nDisplay the lyrics and search the saved lyrics database for a song to play,\n```emacs-lisp\n(vuiet-play-track-by-lyrics \"secret\")\n```\n![image](https://user-images.githubusercontent.com/8273519/74035303-b527f800-49c2-11ea-8a32-15087b2f9e3e.png)\n\n## Other Features\n\n- Display the currently playing song in the mode-line,\n\n![mode-line](https://user-images.githubusercontent.com/8273519/107336357-ac7c6d00-6ac1-11eb-9789-064c1ccd5c1b.png)\n\n- Seek forward, backward, replay, play/pause, open currently playing song on\nyoutube ([details](#player-interaction)),\n```emacs-lisp\n(vuiet-seek-forward 15)\n(vuiet-playing-track-continue-on-youtube)\n...\n```\n\n- Scrobble songs to your last.fm profile and add songs to your list of last.fm\n  loved songs.\n\n- Search interactively for songs, artists or even albums (fill out part of the\nartist name -\u003e TAB -\u003e select the artist -\u003e select the album -\u003e album is now\nplaying)\n\n![call vuiet-play-album](https://user-images.githubusercontent.com/8273519/107335138-3deadf80-6ac0-11eb-9c87-a820b166b813.png)\n![give artist name](https://user-images.githubusercontent.com/8273519/107335144-3e837600-6ac0-11eb-93de-9a48d528c03a.png)\n![tab for similar\nartists](https://user-images.githubusercontent.com/8273519/107335145-3e837600-6ac0-11eb-8c4e-506ddf9ee421.png)\n![select album](https://user-images.githubusercontent.com/8273519/107335147-3f1c0c80-6ac0-11eb-85b2-14daeb9ad118.png)\n\n# Installation Requirements\n\n- [vuiet](https://melpa.org/#/vuiet)\n- [yt-dlp](https://github.com/yt-dlp/yt-dlp)\n- [lastfm](https://last.fm) account plus an API key (see lastfm.el README for details)\n- [lastfm.el](https://github.com/mihaiolteanu/lastfm.el) (follow the\n  instruction on the lastfm.el README page)\n- [mpv](https://mpv.io/)\n\n# Complete functionality\n\n## Playlists\n\n**vuiet-play** *songs (random nil)*\n\n    Play everyting in the SONGS list, randomly or sequentially.\n    SONGS is a list of type ((artist1 song1) (artist2 song2) ...).\n\n**vuiet-play-artist** *artist random*\n\n    Play the ARTIST top tracks, RANDOM or sequentially.\n\n**vuiet-play-playing-artist** *random*\n\n    Play the currently playing artist's top tracks.\n\n**vuiet-play-playing-track-album**\n\n    Play the full album of the currently playing track.\n\n**vuiet-info-playing-track-album**\n\n    Open an info buffer for the currently playing track album.\n    \n**vuiet-play-album** *artist album*\n\n    Play the whole ALBUM of the given ARTIST.\n    If called interactively, the album can be picked interactively\n    from the ARTIST's top albums.\n\n**vuiet-play-artist-similar** *artists*\n\n    Play tracks from artists similar to ARTISTS.\n    ARTISTS is a list of strings of the form '(artist1 artist2 etc.)\n    If called interactively, multiple artists can be provided in the\n    minibuffer if they are sepparated by commas.\n  \n**vuiet-play-playing-artist-similar**\n\n    Play tracks from artists similar to the playing artist.\n    This function is similar to `vuiet-play-artist-similar', only the\n    list of artists is limited to the artist of the currently playing\n    track.\n\n**vuiet-play-tag-similar** *tags*\n\n    Play tracks from artists similar to TAGS.\n    TAGS is a list of strings of the form '(tag1 tag2 etc.)\n    If called interactively, multiple tags can be provided in the\n    minibuffer if they are sepparated by commas.\n    \n**vuiet-play-playing-tags-similar**\n\n    Play tracks from artists with similar tags as the current tags.\n    Play tracks from random artists that have tags equal to one of\n    the tags of the currently playing artist.\n\n**vuiet-play-track** *artist name*\n\n    Play the song NAME from the given ARTIST.\n    If called interactively, let the user select and play one of the\n    ARTIST's top songs, where ARTIST is given in the minibuffer.\n\n**vuiet-play-track-search** *track*\n\n    Search TRACK and play the selected item.\n    Similar to `vuiet-play-track', but search for TRACK on last.fm\n    first and then let the user select one of the results.\n\n**vuiet-play-track-by-lyrics** *lyrics*\n\n    Search a track by LYRICS and play it.\n    \n**vuiet-play-loved-track**\n\n    Select a track from the user loved tracks and play it.\n    The user loved tracks list is the one associated with the\n    username given in the setup of the lastfm.el package.\n    \n**vuiet-play-loved-tracks** *(random nil)*\n\n    Play all the tracks from the user loved tracks.\n    If RANDOM is t, play the tracks at random, indefinitely.\n    The user loved tracks list is the one associated with the\n    username given in the setup of the lastfm.el package.\n\n**vuiet-play-artist-loved-tracks** *artist random*\n\n    Play all the ARTIST tracks found in the user loved tracks.\n    Similar to `vuiet-play-loved-tracks', but play only the tracks\n    from the given ARTIST.\n\n**vuiet-play-recent-track**\n\n    Play one of the recent listened tracks.\n\n**vuiet-play-loved-tracks-similar**\n\n    Play tracks based on artists similar to loved tracks artists.\n    Play tracks from random artists similar to a random artist from\n    the list of user loved tracks.\n\n## Browser\n\n**vuiet-artist-info** *artist*\n\n    Display info about ARTIST in a new buffer.\n\n    p   play all the artist songs, sequentially.\n    s   select and display info for a similar artist with ivy.\n    l   visit the artist's lastfm page.\n\n**vuiet-artist-info-search** *artist*\n\n    Search ARTIST and display info about the selected item.\n    Similar to `vuiet-artist-info', but search for ARTIST on last.fm\n    first and then display the info about it.\n\n**vuiet-tag-info** *tag*\n\n    Display info about TAG in a new buffer.\n\n**vuiet-loved-tracks-info** *(page 1) (n 50)*\n\n    Display N tracks from the user loved tracks in a new buffer.\n    If the user has more than N loved tracks, PAGE can be used to show\n    the next PAGE * N tracks.\n\n    \u003center\u003e  On a song entry, plays that song only.\n    i        Display the next PAGE * N songs.\n    u        Display the previous PAGE * N songs, if N \u003e 1\n    s        Choose a song to play, with ivy.\n\n**vuiet-album-info** *artist album*\n\n    Display info about the ARTIST's ALBUM in a new buffer.\n\n    s   choose a song with ivy.\n    a   pick another album with ivy.\n    p   play all songs from the album.\n    l   save lyrics for this album.\n\n**vuiet-album-info-search** *artist*\n\n    Search all albums from ARTIST and display the selected one.\n    The album is displayed in a dedicated buffer.  See\n    `vuiet-album-info' for details regarding the active keybindings\n    inside this buffer.\n\n## Player Interaction\n\n**vuiet-stop** \n\n    Stop playing and clear the mode line.\n    \n**vuiet-playing-artist** \n\n    Return the currently playing artist.\n    \n**vuiet-playing-track-name** \n\n    Return the currently playing track name.\n    \n**vuiet-playing-track-str** \n\n    Return the playing TRACK as a human-readable string.\n    \n**vuiet-next** \n\n    Skip the currently playing track and play the next.\n    \n**vuiet-peek-next**\n\n    Display the next track in the mode-line for a few seconds.\n    \n**vuiet-previous**\n\n    Replay the previous track.\n    \n**vuiet-replay**\n\n    Play the currently playing track from the beginning.\n    \n**vuiet-seek-backward** *(arg)*\n\n    Seek backward the given number of ARG.  ARG defaults to 5 seconds.\n\n**vuiet-seek-forward** *(arg)*\n\n    Seek forward the given number of ARG.  ARG defaults to 5 seconds.\n\n**vuiet-seek-backward-rate** *(arg)*\n\n    Seek backward ARG% of the track.  ARG defaults to 10%.\n\n**vuiet-seek-forward-rate** *(arg)*\n\n    Seek forward ARG% of the track.  ARG defaults to 10%.\n\n**vuiet-play-pause**\n\n    Toggle the play/pause status.\n    \n**vuiet-player-volume**\n\n    Get the music player volume, between 0% and 100%.\n    \n**vuiet-player-volume-inc** *(arg)*\n\n    Increase the music player volume by ARG percent.  ARG defaults to 10%.\n\n**vuiet-player-volume-dec** *(arg)*\n    \n    Decrease the music player volume by ARG percent.  ARG defaults to 10%.\n    \n**vuiet-playing-artist-info**\n\n    Display info for the currently playing artist in a new buffer.\n    \n**vuiet-playing-track-search-youtube**\n\n    Open a youtube search for the currently playing track.\n    \n**vuiet-playing-track-continue-on-youtube**\n\n    Pause vuiet and continue playing on youtube.\n\n**vuiet-playing-track-continue-with-mpv**\n\n    Pause vuiet and continue playing with mpv as a new process.\n    \n**vuiet-artist-lastfm-page** *artist*\n    \n    Visit the ARTIST lastfm page.\"\n\n**vuiet-playing-artist-lastfm-page**\n\n    Visit he currently playing artist lastfm page.\n    \n**vuiet-love-track**\n\n    Add the currently playing track to the user loved songs.\n    \n**vuiet-unlove-track**\n\n    Remove the currently playing track from the user loved songs.\n    \n**vuiet-playing-track-lyrics**\n\n    Display the lyrics for the currently playing track in a new buffer.\n    See `versuri-display' for the active keybindings inside this buffer.\n                   \n**vuiet-enable-automatic-lyrics**\n    \n    Enable saving the lyrics for all listened tracks to the db.\n    See `vuiet-automatic-lyrics' for details.\n    \n**vuiet-disable-automatic-lyrics**\n    \n    Disable saving the lyrics for all listened tracks to the db.\n    See `vuiet-automatic-lyrics' for details.\n    \n**vuiet-toggle-automatic-lyrics**\n    \n    Toggle saving the lyrics for all listened tracks to the db.\n    See `vuiet-automatic-lyrics' for details.\n                   \n**vuiet-update-mode-line**\n\n    Update the mode line.\n    \n## Customization\n\n**vuiet-scrobble-timeout** *30*\n\n    Time, in seconds, for the same song to play before scrobbling it.\n    \n**vuiet-scrobble-enabled** *t*\n\n    Enable/disable last.fm scrobbling.\n    Decide if the currently playing track should appear in your list\n    of recently played tracks on last.fm.\n\n**vuiet-automatic-lyrics** *nil*\n\n    Enable/disable the saving of lyrics to the db for all tracks.\n    If t, download the lyrics for every listened track and save them\n    to db.  This is useful if you're listening to artists and tracks\n    you already know and like.  If nil, the lyrics are only saved\n    manually, on request, with the `vuiet-playing-track-lyrics'.\n    This is useful if you're listening to new tracks, some of which\n    you might not like.  Adding the lyrics of such tracks to the db\n    would only mean adding garbage that you can do without.\n\n**vuiet-update-mode-line-automatically** t\n\n    Enable/disable the automatic update of the mode-line.\n    If enabled, the mode-line is automatically updated after\n    `vuiet-update-mode-line-interval' seconds. More specifically,\n    `vuiet-update-mode-line' is called periodically while a track is\n    playing to update it's current playback position.\n\n**vuiet-update-mode-line-interval** 10\n\n    Timeout, in seconds, after which to update the mode-line.\n    See the `vuiet-update-mode-line-automatically' custom variable\n    for details.\n\n**vuiet-artist-similar-limit** *15*\n\n    Number of artists similar to the given artist.\n    When considering artists similar to a given artist, take as many\n    into consideration as this limit.  A lower value might mean\n    artists and tracks you already know and love.  A higher value\n    increases the chances you'll discover something totally new.\n\n**vuiet-artist-tracks-limit** *15*\n\n    Number of tracks for the given artist.\n    When considering the top tracks for a given artist, take as many\n    into consideration as this limit.  A lower value might mean\n    tracks from this artist that you already know and love.  A higher\n    value increases the chances you'll discover something totally new\n    but it also increases the chances that you'll get wrongly\n    scrobbled songs and youtube will find something totally unrelated\n    as a result.\n\n**vuiet-artist-top-albums-limit** *10*\n\n    Number of top albums for the given artist.\n    This value is also used in the artist info page (called by\n    `vuiet-artist-info') to display the number of top albums.\n\n**vuiet-artist-info-show-top-albums** nil\n\n    Display the artist top albums in the artist info\n    buffer (created when calling `vuiet-artist-info'). This adds an\n    extra call to last.fm which, depending on your system, you might\n    feel it like an unnecessary lag.\n\n**vuiet-tag-artists-limit** *15*\n\n    Number of artists for the given tag.\n    When considering the top artists for a given tag, take as many\n    into consideration as this limit.\n\n**vuiet-loved-tracks-limit** *500*\n\n    Number of tracks to take into consideration when playing user loved tracks.\n    A number higher than your actual lastfm loved tracks, will take\n    all of them into consideration.  A lower values is useful for\n    taking into consideration only the most recently loved tracks.\n\n**vuiet-youtube-dl-command** *\"youtube-dl\"*\n\n    The youtube-dl command.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmihaiolteanu%2Fvuiet","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmihaiolteanu%2Fvuiet","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmihaiolteanu%2Fvuiet/lists"}