diff --git a/browser/browser.py b/browser/browser.py index 4624f9f..a7da1dd 100644 --- a/browser/browser.py +++ b/browser/browser.py @@ -3,6 +3,7 @@ from playwright.sync_api import sync_playwright, Browser, Playwright import atexit +from core import config # from browser import playwright @@ -35,7 +36,7 @@ class PageContext: page = None def __init__(self, p: Playwright): - self.browser = p.chromium.launch(headless=True, args=args, timeout=20000) + self.browser = p.chromium.launch(headless=os.environ['headless'] == "1", args=args, timeout=20000) self.context = self.browser.new_context() self.page = self.context.new_page() diff --git a/browser/douyin.py b/browser/douyin.py index 33d89d9..e1b820d 100644 --- a/browser/douyin.py +++ b/browser/douyin.py @@ -1,4 +1,5 @@ import time +import os from playwright.sync_api import Request, Response from browser import browser from core import config @@ -22,8 +23,9 @@ def get_info(cls, url: str) -> any: except: raise Exception('网络异常,访问分享链接失败') - for i in range(0, config.page_wait, 100): + for i in range(0, int(os.environ['page_wait']), 100): if cls.data is not None: + timeout = False break p.page.wait_for_timeout(100) @@ -63,7 +65,7 @@ def get_path(url) -> str: try: result = urllib.parse.urlparse(url).path if result == "": - return None + return "" return result except ValueError: - return None + return "" diff --git a/core/apis.py b/core/apis.py index 5c9141c..3d4ebeb 100644 --- a/core/apis.py +++ b/core/apis.py @@ -1,9 +1,8 @@ # Create your views here. from django.http import HttpResponse, HttpResponseServerError, HttpResponseBadRequest from django.shortcuts import redirect, render - +import os import core -from core import config from core.model import ErrorResult from route import controller from core.type import Video @@ -25,15 +24,19 @@ def set_env(request): if not value: v = "" if key == "bilibili": - v = config.bilibili_cookie - if key == "page_wait": - v = config.page_wait + v = os.environ['bilibili_cookie'] + elif key == "page_wait": + v = os.environ['page_wait'] + elif key == "headless": + v = os.environ['headless'] return HttpResponse(v) if key == "bilibili": - config.bilibili_cookie = value - if key == "page_wait": - config.bilibili_cookie = value + os.environ['bilibili_cookie'] = value + elif key == "page_wait": + os.environ['page_wait'] = str(int(value)) + elif key == "headless": + os.environ['headless'] = value return HttpResponse() diff --git a/core/config.py b/core/config.py index bc8581f..fcb989b 100644 --- a/core/config.py +++ b/core/config.py @@ -15,4 +15,5 @@ if env_bc: bilibili_cookie = env_bc -page_wait = 5000 +os.environ['page_wait'] = "5000" +os.environ['headless'] = "1" \ No newline at end of file diff --git a/service/douyin.py b/service/douyin.py index 8ff85b4..038d350 100644 --- a/service/douyin.py +++ b/service/douyin.py @@ -86,12 +86,11 @@ def get_info(cls, url: str) -> Result: logger.error(f'抖音数据获取失败: {share_url}, 分享链接不支持') return ErrorResult.VIDEO_INFO_NOT_FOUNT - if info['filter_detail'] is not None: + if 'filter_detail' in info: msg = info['filter_detail']['notice'] logger.error(f'抖音数据获取失败: {share_url}, {msg}') return Result.error(msg) - data = info['aweme_detail'] info = Info(platform=vtype)