plugins.soop: migrate to sooplive.com#6876
Conversation
SOOP (formerly AfreecaTV) is migrating from sooplive.co.kr to sooplive.com. As of recently, https://www.sooplive.co.kr/ redirects to https://www.sooplive.com/, and play.sooplive.co.kr redirects to play-origin.sooplive.com in the browser. While both play.sooplive.com and play.sooplive.co.kr URLs currently work for streaming, this change proactively adds play.sooplive.com support so the plugin is ready for potential .co.kr deprecation in the future, and for users who are already using the new sooplive.com URLs. The .co.kr domain is kept for backwards compatibility in case the migration is rolled back. The legacy play.afreecatv.com URL also remains supported and functional. Tested live recording with all three domains (play.sooplive.com, play.sooplive.co.kr, play.afreecatv.com) — login, stream discovery, and HLS recording all work correctly.
|
AI disclosure: This PR was authored and tested with assistance from Claude Code (AI). Human-reviewed and straightforward change. |
Debug log output
|
bastimeyer
left a comment
There was a problem hiding this comment.
Thanks for the PR.
Please change the API URLs too.
Update internal API URLs (login, channel API, auth check), Origin header, and cookie domain from .co.kr to .com to match SOOP's ongoing domain migration. Existing users with cached .co.kr cookies will re-authenticate automatically on next run if credentials are provided. Tested end-to-end with all three user-facing URL domains (play.sooplive.com, play.sooplive.co.kr, play.afreecatv.com) — login, stored cookie auth, and HLS recording all work correctly.
|
Updated — API endpoints migrated from Debug log output (API endpoint changes)
|
bastimeyer
left a comment
There was a problem hiding this comment.
$ ./script/test-plugin-urls.py soop -m -r CHANNEL hotbeatstv -r 0123456789 292645879
:: https://play.afreecatv.com/hotbeatstv
:: 360p, 540p, 720p, 1080p, worst, best
:: {'id': '292645879', 'author': 'HotBeatsTV', 'category': None, 'title': '24/7 Electronic Music directly from Clubs, Events, Festivals and Sessions'}
:: https://play.afreecatv.com/hotbeatstv/292645879
:: 360p, 540p, 720p, 1080p, worst, best
:: {'id': '292645879', 'author': 'HotBeatsTV', 'category': None, 'title': '24/7 Electronic Music directly from Clubs, Events, Festivals and Sessions'}
:: https://play.sooplive.co.kr/hotbeatstv
:: 360p, 540p, 720p, 1080p, worst, best
:: {'id': '292645879', 'author': 'HotBeatsTV', 'category': None, 'title': '24/7 Electronic Music directly from Clubs, Events, Festivals and Sessions'}
:: https://play.sooplive.co.kr/hotbeatstv/292645879
:: 360p, 540p, 720p, 1080p, worst, best
:: {'id': '292645879', 'author': 'HotBeatsTV', 'category': None, 'title': '24/7 Electronic Music directly from Clubs, Events, Festivals and Sessions'}
:: https://play.sooplive.com/hotbeatstv
:: 360p, 540p, 720p, 1080p, worst, best
:: {'id': '292645879', 'author': 'HotBeatsTV', 'category': None, 'title': '24/7 Electronic Music directly from Clubs, Events, Festivals and Sessions'}
:: https://play.sooplive.com/hotbeatstv/292645879
:: 360p, 540p, 720p, 1080p, worst, best
:: {'id': '292645879', 'author': 'HotBeatsTV', 'category': None, 'title': '24/7 Electronic Music directly from Clubs, Events, Festivals and Sessions'}
|
|
||
| authed = False | ||
| if self.session.http.cookies.get_dict(domain=".sooplive.co.kr"): | ||
| if self.session.http.cookies.get_dict(domain=".sooplive.com"): |
There was a problem hiding this comment.
This will require re-authentication for users who have stored their auth credentials in the plugin cache file, but I guess it's the correct thing to change it now.
*Theoretically*, we could translate stored cookies, but it's not worth the effort.
| self.session.http.headers.update({ | ||
| "Referer": self.url, | ||
| "Origin": "https://play.sooplive.co.kr", | ||
| "Origin": "https://play.sooplive.com", |
There was a problem hiding this comment.
Speaking of translating URLs, would it make sense translating self.url to the .com domain? Streams currently work on all URLs supported by the matchers, so it's not a requirement to do any URL translations. But should HTTP requests be rejected when using the .co.kr domain and setting the .com Origin header, then URL translations needs to be applied. For now, I think, it's good enough.
Summary
SOOP (formerly AfreecaTV) is migrating from
sooplive.co.krtosooplive.com. As of recently, https://www.sooplive.co.kr/ redirects to https://www.sooplive.com/, andplay.sooplive.co.krredirects toplay-origin.sooplive.comin the browser.This change proactively adds
play.sooplive.comas a supported URL so the plugin is ready for potential.co.krdeprecation in the future, and for users who are already using the newsooplive.comURLs. The.co.krdomain is kept for backwards compatibility in case the migration is rolled back. The legacyplay.afreecatv.comURL also remains supported and functional.Changes
sooplive.comto the@pluginmatcherURL regex$url play.sooplive.comto plugin metadatasooplive.comTest plan
Tested live recording with all three supported domains — login, stream discovery, and HLS recording all work correctly:
https://play.sooplive.com/channel/— new.comURL workshttps://play.sooplive.co.kr/channel/— existing.co.krURL still workshttps://play.afreecatv.com/channel/— legacy afreecatv URL still workshttps://sooplive.com/channel/(withoutplay.) — correctly rejectedtests/plugins/test_soop.py— 27/27 passed)