feat: Add reusable video modal component with Alist-style UI
This commit is contained in:
@@ -172,17 +172,11 @@ class YtdlpDownloader:
|
||||
# 주의: --external-downloader aria2c는 HLS 프래그먼트에서 오버헤드가 크므로 제거함
|
||||
|
||||
|
||||
# 1.5 환경별 브라우저 위장 설정 (Impersonate)
|
||||
# macOS에서는 고급 위장 기능을 사용하되, 종속성 문제가 잦은 Linux/Docker에서는 UA 수동 지정
|
||||
is_mac = platform.system() == 'Darwin'
|
||||
if is_mac:
|
||||
cmd += ['--impersonate', 'chrome-120']
|
||||
logger.debug("Using yt-dlp --impersonate chrome-120 (macOS detected)")
|
||||
else:
|
||||
# Docker/Linux: impersonate 라이브러리 부재 가능하므로 UA 수동 설정
|
||||
user_agent = self.headers.get('User-Agent', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36')
|
||||
cmd += ['--user-agent', user_agent]
|
||||
logger.debug(f"Using manual User-Agent on {platform.system()}: {user_agent}")
|
||||
# 1.5 브라우저 위장 설정 (User-Agent)
|
||||
# --impersonate 옵션은 curl-impersonate 라이브러리가 필요하므로 수동 UA 사용
|
||||
user_agent = self.headers.get('User-Agent', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36')
|
||||
cmd += ['--user-agent', user_agent]
|
||||
logger.debug(f"Using manual User-Agent: {user_agent}")
|
||||
|
||||
# 2. 프록시 설정
|
||||
if self.proxy:
|
||||
@@ -342,10 +336,14 @@ class YtdlpDownloader:
|
||||
elapsed = time.time() - self.start_time
|
||||
self.elapsed_time = self.format_time(elapsed)
|
||||
|
||||
# [최적화] 진행률이 1% 이상 차이나거나, 100%인 경우에만 콜백 호출 (로그 부하 감소)
|
||||
# [최적화] 10% 단위로만 로그 출력 (로그 부하 감소)
|
||||
if self.callback and (int(new_percent) > int(self.percent) or new_percent >= 100):
|
||||
old_tens = int(self.percent) // 10
|
||||
new_tens = int(new_percent) // 10
|
||||
self.percent = new_percent
|
||||
logger.info(f"[yt-dlp progress] {int(self.percent)}% speed={self.current_speed}")
|
||||
# 10% 단위가 변경되었거나 100%일 때만 로그 출력
|
||||
if new_tens > old_tens or new_percent >= 100:
|
||||
logger.info(f"[yt-dlp] {int(self.percent)}% speed={self.current_speed}")
|
||||
self.callback(percent=int(self.percent), current=int(self.percent), total=100, speed=self.current_speed, elapsed=self.elapsed_time)
|
||||
else:
|
||||
self.percent = new_percent
|
||||
|
||||
Reference in New Issue
Block a user