Skip to content

Commit

Permalink
use same session for Ytmusicapi.oauthcredential
Browse files Browse the repository at this point in the history
  • Loading branch information
cosven committed Jul 24, 2024
1 parent cf9210c commit 06133ad
Show file tree
Hide file tree
Showing 3 changed files with 19 additions and 1 deletion.
2 changes: 2 additions & 0 deletions fuo_ytmusic/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@
def init_config(config):
# For example: http://127.0.0.1:7890. This will be used in API and media accessing.
config.deffield('HTTP_PROXY', type_=str, default='', desc='YouTube Music HTTP proxy')
config.deffield('HTTP_TIMEOUT', type_=int, default=2, desc='HTTP requests timeout')


def enable(app: App):
Expand All @@ -20,6 +21,7 @@ def enable(app: App):
from fuo_ytmusic.provider import provider

provider.setup_http_proxy(app.config.ytmusic.HTTP_PROXY)
provider.setup_http_timeout(app.config.ytmusic.HTTP_TIMEOUT)
app.library.register(provider)
if app.mode & app.GuiMode:
ui_mgr = ui_mgr or YtmusicUiManager(app)
Expand Down
3 changes: 3 additions & 0 deletions fuo_ytmusic/provider.py
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,9 @@ def setup_http_proxy(self, http_proxy):
self._http_proxy = http_proxy
self.service.setup_http_proxy(http_proxy)

def setup_http_timeout(self, timeout):
self.service.setup_timeout(timeout)

# noinspection PyPep8Naming
class meta:
identifier = 'ytmusic'
Expand Down
15 changes: 14 additions & 1 deletion fuo_ytmusic/service.py
Original file line number Diff line number Diff line change
Expand Up @@ -6,11 +6,13 @@
import threading
from datetime import timedelta
from enum import Enum
from functools import partial
from typing import Optional, Union, List
from urllib.parse import unquote

import requests
from ytmusicapi import YTMusic as YTMusicBase
from ytmusicapi.ytmusic import OAuthCredentials
from cachetools.func import ttl_cache
from requests import Response
from feeluown.library import SearchType
Expand Down Expand Up @@ -225,7 +227,11 @@ def get_signature_timestamp(self):
return self._signature_timestamp

def _initialize_by_headerfile(self):
options = dict(requests_session=self._session, language="zh_CN")
options = dict(
requests_session=self._session,
language="zh_CN",
oauth_credentials=OAuthCredentials(session=self._session),
)
if HEADER_FILE.exists():
logger.info("Initializing ytmusic api with headerfile.")
self._api = YTMusic(str(HEADER_FILE), **options)
Expand All @@ -244,6 +250,13 @@ def setup_http_proxy(self, http_proxy):
"https": http_proxy,
}

def setup_timeout(self, timeout):
if isinstance(self._session.request, partial):
request = self._session.request.func
else:
request = self._session.request
self._session.request = partial(request, timeout=timeout)

def search(
self,
keywords: str,
Expand Down

0 comments on commit 06133ad

Please sign in to comment.