Repository: yt-dlp/yt-dlp

Issue:
Spankbang Playlist unable to extract playlist title
### DO NOT REMOVE OR SKIP THE ISSUE TEMPLATE

- [X] I understand that I will be **blocked** if I remove or skip any mandatory\* field

### Checklist

- [X] I'm asking a question and **not** reporting a bug or requesting a feature
- [X] I've looked through the [README](https://github.com/yt-dlp/yt-dlp#readme)
- [X] I've verified that I'm running yt-dlp version **2022.11.11** ([update instructions](https://github.com/yt-dlp/yt-dlp#update)) or later (specify commit)
- [X] I've searched the [bugtracker](https://github.com/yt-dlp/yt-dlp/issues?q=) for similar questions **including closed ones**. DO NOT post duplicates
- [X] I've read the [guidelines for opening an issue](https://github.com/yt-dlp/yt-dlp/blob/master/CONTRIBUTING.md#opening-an-issue)

### Please make sure the question is worded well enough to be understood

Some spankbang Playlist like "xxx/playlist/a+b" get WARNING unable to extract playlist title.

### Provide verbose output that clearly demonstrates the problem

- [X] Run **your** yt-dlp command with **-vU** flag added (`yt-dlp -vU <your command line>`)
- [X] Copy the WHOLE output (starting with `[debug] Command-line config`) and insert it below

### Complete Verbose Output

```shell
yt-dlp -Uv -f "(mp4)[height<=?720]" --no-check-certificate --yes-playlist --cookies-from-browser chrome "https://spankbang.com/60qu5/playlist/got+cuffs+hotcuffed"
[debug] Command-line config: ['-Uv', '-f', '(mp4)[height<=?720]', '--no-check-certificate', '--yes-playlist', '--cookies-from-browser', 'chrome', 'https://spankbang.com/60qu5/playlist/got+cuffs+hotcuffed']
[debug] Encodings: locale cp936, fs utf-8, pref cp936, out utf-8, error utf-8, screen utf-8
[debug] yt-dlp version 2022.11.11 [8b64402] (win_exe)
[debug] Python 3.8.10 (CPython AMD64 64bit) - Windows-10-10.0.19043-SP0 (OpenSSL 1.1.1k  25 Mar 2021)
[debug] exe versions: ffmpeg 2022-07-04-git-dba7376d59-essentials_build-www.gyan.dev (setts), ffprobe 2022-07-04-git-dba7376d59-essentials_build-www.gyan.dev, phantomjs 2.1.1
[debug] Optional libraries: Cryptodome-3.15.0, brotli-1.0.9, certifi-2022.09.24, mutagen-1.46.0, sqlite3-2.6.0, websockets-10.4
[Cookies] Extracting cookies from chrome
[debug] Extracting cookies from: "C:\Users\CZH\AppData\Local\Google\Chrome\User Data\Default\Network\Cookies"
[debug] Found local state file at "C:\Users\CZH\AppData\Local\Google\Chrome\User Data\Local State"
[Cookies] Extracted 2358 cookies from chrome
[debug] cookie version breakdown: {'v10': 2358, 'other': 0, 'unencrypted': 0}
[debug] Proxy map: {'http': 'http://127.0.0.1:7890', 'https': 'https://127.0.0.1:7890', 'ftp': 'ftp://127.0.0.1:7890'}
[debug] Loaded 1723 extractors
[debug] Fetching release info: https://api.github.com/repos/yt-dlp/yt-dlp/releases/latest
Latest version: 2022.11.11, Current version: 2022.11.11
yt-dlp is up to date (2022.11.11)
[debug] [SpankBangPlaylist] Extracting URL: https://spankbang.com/60qu5/playlist/got+cuffs+hotcuffed
[SpankBangPlaylist] 60qu5: Downloading webpage
WARNING: [SpankBangPlaylist] unable to extract playlist title; please report this issue on  https://github.com/yt-dlp/yt-dlp/issues?q= , filling out the appropriate issue template. Confirm you are on the latest version using  yt-dlp -U
[download] Downloading playlist: 60qu5
[SpankBangPlaylist] Playlist 60qu5: Downloading 0 videos of 0
[download] Finished downloading playlist: 60qu5
```



Discussion:
And your question is?
Some spankbang Playlist like "xxx/playlist/a+b" get WARNING unable to extract playlist title and cannot download. For Example, "https://spankbang.com/60qu5/playlist/got+cuffs+hotcuffed" this link has 143 video but yt-dlp got 0 and unable to extract playlist title. How can I download this playlist？
It seems like that yt-dlp cannot get the playlist title which name include file separator like ”XXX / YYY“. such as the playlist title of link above is "gc / hc".

Resolving patch:
diff --git a/yt_dlp/extractor/spankbang.py b/yt_dlp/extractor/spankbang.py
--- a/yt_dlp/extractor/spankbang.py
+++ b/yt_dlp/extractor/spankbang.py
@@ -177,7 +177,6 @@ class SpankBangPlaylistIE(InfoExtractor):
     def _real_extract(self, url):
         mobj = self._match_valid_url(url)
         playlist_id = mobj.group('id')
-        display_id = mobj.group('display_id')
 
         webpage = self._download_webpage(
             url, playlist_id, headers={'Cookie': 'country=US; mobile=on'})
@@ -186,11 +185,11 @@ def _real_extract(self, url):
             urljoin(url, mobj.group('path')),
             ie=SpankBangIE.ie_key(), video_id=mobj.group('id'))
             for mobj in re.finditer(
-                r'<a[^>]+\bhref=(["\'])(?P<path>/?[\da-z]+-(?P<id>[\da-z]+)/playlist/%s(?:(?!\1).)*)\1'
-                % re.escape(display_id), webpage)]
+                r'<a[^>]+\bhref=(["\'])(?P<path>/?[\da-z]+-(?P<id>[\da-z]+)/playlist/[^"\'](?:(?!\1).)*)\1',
+                webpage)]
 
         title = self._html_search_regex(
-            r'<h1>([^<]+)\s+playlist\s*<', webpage, 'playlist title',
+            r'<em>([^<]+)</em>\s+playlist\s*<', webpage, 'playlist title',
             fatal=False)
 
         return self.playlist_result(entries, playlist_id, title)


Test patch: