Repository: youtube-dl
Issue: IDs created by generic extractor aren't unique, breaks --download-archive
Labels: bug

<!--

######################################################################
  WARNING!
  IGNORING THE FOLLOWING TEMPLATE WILL RESULT IN ISSUE CLOSED AS INCOMPLETE
######################################################################

-->


## Checklist

<!--
Carefully read and work through this check list in order to prevent the most common mistakes and misuse of youtube-dl:
- First of, make sure you are using the latest version of youtube-dl. Run `youtube-dl --version` and ensure your version is 2021.04.17. If it's not, see https://yt-dl.org/update on how to update. Issues with outdated version will be REJECTED.
- Make sure that all provided video/audio/playlist URLs (if any) are alive and playable in a browser.
- Make sure that all URLs and arguments with special characters are properly quoted or escaped as explained in http://yt-dl.org/escape.
- Search the bugtracker for similar issues: http://yt-dl.org/search-issues. DO NOT post duplicates.
- Read bugs section in FAQ: http://yt-dl.org/reporting
- Finally, put x into all relevant boxes (like this [x])
-->

- [ ] I'm reporting a broken site support issue
- [x] I've verified that I'm running youtube-dl version **2021.04.17**
- [x] I've checked that all provided URLs are alive and playable in a browser
- [x] I've checked that all URLs and arguments with special characters are properly quoted or escaped
- [x] I've searched the bugtracker for similar bug reports including closed ones
- [x] I've read bugs section in FAQ


## Verbose log 

<!--
Provide the complete verbose output of youtube-dl that clearly demonstrates the problem.
Add the `-v` flag to your command line you run youtube-dl with (`youtube-dl -v <your command line>`), copy the WHOLE output and insert it below. It should look similar to this:
 [debug] System config: []
 [debug] User config: []
 [debug] Command-line args: [u'-v', u'http://www.youtube.com/watch?v=BaW_jenozKcj']
 [debug] Encodings: locale cp1251, fs mbcs, out cp866, pref cp1251
 [debug] youtube-dl version 2021.04.17
 [debug] Python version 2.7.11 - Windows-2003Server-5.2.3790-SP2
 [debug] exe versions: ffmpeg N-75573-g1d0487f, ffprobe N-75573-g1d0487f, rtmpdump 2.4
 [debug] Proxy map: {}
 <more lines>
-->

```
Verbose log doesn't report adding an entry to the archive file.
```


## Description

<!--
Provide an explanation of your issue in an arbitrary form. Please make sure the description is worded well enough to be understood, see https://github.com/ytdl-org/youtube-dl#is-the-description-of-the-issue-itself-sufficient. Provide any additional information, suggested solution and as much context and examples as possible.
If work on your issue requires account credentials please provide them or explain how one can obtain them.
-->

When using `--download-archive` and ytdl doesn't find a playlist- or video-ID (e.g. when providing a direct video link), an entry "generic playlist" is added to the archive file after successful download. This is mostly undesirable, because it prevents the download of any other video without ID, no matter whether it is really the same, with the warning: 
`[download] playlist has already been recorded in archive`


## Current workarounds
 - don't use `--download-archive` for videos without ID (requires that you know that in advance)
 - regularly delete the line "generic playlist" from the archive file (requires to check after every download that might have had no ID) 

## Possible mitigations
 - don't ever add the line "generic playlist" programmatically to the archive file
 - while another mitigation would be to skip the check of the archive file (for the line "generic playlist") when processing a video without ID, I suggest leaving that code in place. That way, if somebody really wants to use `--download-archive` to prevent downloading of videos without ID, they can manually add the line "generic playlist" to the archive file to achieve that.