Tom-stack3
### Requested Feature When spotDL can't find a match for a song, it gives up after 3 search attempts and the song is skipped. For playlists with many non-English songs it happens a lot. On one of my playlists, 40-ish out of 103 songs fail on every run with `LookupError: No results found for song`, even though the songs are on YouTube Music, just that the names are with a slight variation. Today, the only workaround is to find each missing song by hand and run one command per song: spotdl download "YouTubeURL|SpotifyURL" This is tedious. It also doesn't fit the `sync` workflow: the manual link is never saved in the `.spotdl` sync file, so it's lost when the files have to be downloaded again (a different format or bitrate, a new machine, deleted files). I'd like an option that, once a download or sync finishes, lists the songs that failed and asks for a YouTube/YouTube Music link for each one. When syncing, the links should be saved in the sync file so they'll be reused on later syncs. ### Possible implementation I've already implemented this on a branch and would be happy to open a PR if the approach sounds good to you: - `--prompt-missing` flag, off by default, for `download` and `sync`. It only prompts for songs that actually failed, and asks once for songs that appear more than once in a playlist. - Links entered during `sync` are saved in the sync file under `manual_download_urls`, and on later syncs the song is downloaded from the saved link instead of being searched. The key is only written once a link has been entered, so existing sync files and other tools reading them are unaffected. - Pasted links are normalized: `&list=`, `&si=` and similar parameters are stripped, `youtu.be` links are converted, and Spotify or playlist links are rejected with a hint. - The progress bar is paused while prompting, and songs downloaded from a link end up in the m3u/archive files as all other songs. - Works when stdin is redirected. e.g. when spotDL runs inside a `while read ...; done < playlists.conf` shell script: on Linux and macOS the answers are read from `/dev/tty`. With no terminal at all, it logs a warning and skips. It's disabled in the web UI. I've added the last point because in my setup I have a bash script, which runs `spotdl sync` on all my playlists. Happy to hear feedback from you :)