Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit b1bc781

Browse files
Merge pull request #2 from code-yeongyu/feature/replace-yt-dlp
Replace `yt-dlp` to `browser-cookie3` for cookie parsing
2 parents 2ac3ec3 + e8632f0 commit b1bc781

File tree

8 files changed

+129
-251
lines changed

8 files changed

+129
-251
lines changed

‎poetry.lock‎

Lines changed: 59 additions & 239 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

‎pyproject.toml‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -42,8 +42,8 @@ select = ["PLE", "PLW", "E", "W", "F", "I", "Q", "B"]
4242
[tool.poetry.dependencies]
4343
python = "^3.9"
4444
poetry = "^1.4.2"
45-
yt-dlp = "^2023年3月4日"
4645
httpx = "^0.24.0"
46+
browser-cookie3 = "^0.17.1"
4747

4848
[tool.pyright.defineConstant]
4949
DEBUG = true

‎revChatGPTAuth/__init__.py‎

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,6 @@
11
from .chatgpt_access_token_parser import ChatGPTAccessTokenParser as ChatGPTAccessTokenParser
22
from .chatgpt_access_token_parser import get_access_token as get_access_token
33
from .openai_cookie_parser import OpenAICookieParser as OpenAICookieParser
4+
from .supported_browser import SupportedBrowser as SupportedBrowser
5+
from .utils import get_cookie_loader as get_cookie_loader
6+
from .utils import load_cookies as load_cookies

‎revChatGPTAuth/chatgpt_access_token_parser.py‎

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,18 @@
1+
from typing import Union
2+
13
import httpx
24

5+
from revChatGPTAuth.supported_browser import SupportedBrowser
6+
37
from .openai_cookie_parser import OpenAICookieParser
48

59

610
class ChatGPTAccessTokenParser:
711

8-
def __init__(self, browser_name: str):
12+
def __init__(self, browser_name: SupportedBrowser):
913
self.openai_cookie_parser = OpenAICookieParser(browser_name)
1014

11-
def get_openai_chatgpt_access_token(self) -> str:
15+
def get_access_token(self) -> str:
1216
cookie = self._get_stringified_cookies()
1317
response = self._auth_openai(cookie)
1418
response.raise_for_status()
@@ -25,6 +29,8 @@ def _auth_openai(self, cookie: str) -> httpx.Response:
2529
return response
2630

2731

28-
def get_access_token(browser_name: str) -> str:
32+
def get_access_token(browser_name: Union[str, SupportedBrowser]) -> str:
33+
if isinstance(browser_name, str):
34+
browser_name = SupportedBrowser(browser_name)
2935
chatgpt_access_token_parser = ChatGPTAccessTokenParser(browser_name)
30-
return chatgpt_access_token_parser.get_openai_chatgpt_access_token()
36+
return chatgpt_access_token_parser.get_access_token()

‎revChatGPTAuth/openai_cookie_parser.py‎

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,19 +1,19 @@
11
from http.cookiejar import Cookie
22
from typing import Any, Optional
33

4-
from yt_dlp.cookies import SUPPORTED_BROWSERS, extract_cookies_from_browser
5-
from yt_dlp.utils import YoutubeDLCookieJar
4+
from revChatGPTAuth.supported_browser import SupportedBrowser
5+
from revChatGPTAuth.utils import load_cookies
66

77

88
class OpenAICookieParser:
99

10-
def__init__(self, browser_name: str):
11-
ifbrowser_namenotinSUPPORTED_BROWSERS:
12-
raiseValueError(f'Browser {browser_name} is not supported. Supported browsers are: {SUPPORTED_BROWSERS}')
10+
SUPPORTED_BROWSERS= [browser.valueforbrowserinSupportedBrowser]
11+
12+
def__init__(self, browser_name: SupportedBrowser):
1313
self.BROWSER_NAME = browser_name
1414

1515
def parse_cookie(self):
16-
all_cookies: YoutubeDLCookieJar=extract_cookies_from_browser(self.BROWSER_NAME)
16+
all_cookies=load_cookies(self.BROWSER_NAME)
1717
openai_cookies = self._get_openai_cookies(all_cookies.__dict__)
1818
openai_cookies_dict: dict[str, Optional[str]] = {key: cookie.value for key, cookie in openai_cookies.items()}
1919
return openai_cookies_dict

‎revChatGPTAuth/supported_browser.py‎

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
from enum import Enum
2+
3+
4+
class SupportedBrowser(Enum):
5+
'''Supported browsers for cookie extraction.'''
6+
CHROME = 'chrome'
7+
FIREFOX = 'firefox'
8+
OPERA = 'opera'
9+
OPERA_GX = 'opera gx'
10+
EDGE = 'edge'
11+
CHROMIUM = 'chromium'
12+
BRAVE = 'brave'
13+
VIVALDI = 'vivaldi'
14+
SAFARI = 'safari'

‎revChatGPTAuth/test/test_chatgpt_access_token_parser.py‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ def test_get_openai_chatgpt_access_token(
2727
chatgpt_access_token_parser = ChatGPTAccessTokenParser('chrome')
2828

2929
# when
30-
access_token = chatgpt_access_token_parser.get_openai_chatgpt_access_token()
30+
access_token = chatgpt_access_token_parser.get_access_token()
3131

3232
# then
3333
mock_cookie_parser.parse_cookie.assert_called_once()

‎revChatGPTAuth/utils.py‎

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
from http.cookiejar import CookieJar
2+
from typing import Callable, Optional
3+
4+
import browser_cookie3
5+
6+
from revChatGPTAuth.supported_browser import SupportedBrowser
7+
8+
9+
def get_cookie_loader(browser_name: Optional[SupportedBrowser]) -> Callable[[str], CookieJar]:
10+
if not browser_name:
11+
return browser_cookie3.load
12+
if browser_name == SupportedBrowser.CHROME:
13+
return browser_cookie3.chrome
14+
if browser_name == SupportedBrowser.FIREFOX:
15+
return browser_cookie3.firefox
16+
if browser_name == SupportedBrowser.OPERA:
17+
return browser_cookie3.opera
18+
if browser_name == SupportedBrowser.OPERA_GX:
19+
return browser_cookie3.opera_gx
20+
if browser_name == SupportedBrowser.EDGE:
21+
return browser_cookie3.edge
22+
if browser_name == SupportedBrowser.CHROMIUM:
23+
return browser_cookie3.chromium
24+
if browser_name == SupportedBrowser.BRAVE:
25+
return browser_cookie3.brave
26+
if browser_name == SupportedBrowser.VIVALDI:
27+
return browser_cookie3.vivaldi
28+
if browser_name == SupportedBrowser.SAFARI:
29+
return browser_cookie3.safari
30+
raise ValueError(f'Unsupported browser: {browser_name}')
31+
32+
33+
def load_cookies(browser_name: Optional[SupportedBrowser] = None, domain: str = '') -> CookieJar:
34+
cookie_loader = get_cookie_loader(browser_name=browser_name)
35+
return cookie_loader(domain)

0 commit comments

Comments
(0)

AltStyle によって変換されたページ (->オリジナル) /