Skip to content

Commit a4ab962

Browse files
committed
Add OpenAIChatGPTAdapter
1 parent 1e18819 commit a4ab962

File tree

4 files changed

+45
-0
lines changed

4 files changed

+45
-0
lines changed

aishell/adapters/__init__.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
from .openai_chatgpt_adapter import OpenAIChatGPTAdapter as OpenAIChatGPTAdapter
Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
from http.cookiejar import Cookie
2+
from typing import Optional
3+
4+
from yt_dlp.cookies import SUPPORTED_BROWSERS, extract_cookies_from_browser
5+
from yt_dlp.utils import YoutubeDLCookieJar
6+
7+
8+
class OpenAIChatGPTAdapter:
9+
10+
def __init__(self, browser_name: str):
11+
if browser_name not in SUPPORTED_BROWSERS: # type: ignore
12+
raise ValueError(f'Browser {browser_name} is not supported. Supported browsers are: {SUPPORTED_BROWSERS}')
13+
self.BROWSER_NAME = browser_name
14+
15+
def get_openai_cookies(self) -> dict[str, Optional[str]]:
16+
all_cookies: YoutubeDLCookieJar = extract_cookies_from_browser(self.BROWSER_NAME)
17+
try:
18+
openai_cookies: dict[str, Cookie] = all_cookies.__dict__['_cookies']['chat.openai.com']['/']
19+
except KeyError as error:
20+
raise ValueError('Could not find OpenAI cookies. Make sure you are logged in to OpenAI.') from error
21+
22+
cookies: dict[str, Optional[str]] = {key: cookie.value for key, cookie in openai_cookies.items()}
23+
24+
return cookies
25+
26+
def get_openai_session_token(self) -> Optional[str]:
27+
return self.get_openai_cookies()['__Secure-next-auth.session-token']

aishell/adapters/test/__init__.py

Whitespace-only changes.
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
import pytest
2+
from yt_dlp.cookies import SUPPORTED_BROWSERS
3+
4+
from aishell.adapters import OpenAIChatGPTAdapter
5+
6+
7+
class TestChatGPTAccessTokenAdapterInit:
8+
9+
def test_fail_when_invalid_browser_name_is_given(self) -> None:
10+
'''잘못된 브라우저 이름을 입력했을 때 ValueError가 발생한다.'''
11+
with pytest.raises(ValueError):
12+
OpenAIChatGPTAdapter('invalid_browser_name')
13+
14+
@pytest.mark.parametrize('browser_name', SUPPORTED_BROWSERS)
15+
def test_success_when_valid_browser_name_is_given(self, browser_name: str) -> None:
16+
'''올바른 브라우저 이름을 입력했을 때 ValueError가 발생하지 않는다'''
17+
OpenAIChatGPTAdapter(browser_name)

0 commit comments

Comments
 (0)