FastAPI + Playwright(headed Chrome/xvfb 过 Cloudflare)抓内容详情页元数据; 可选把 m3u8 视频转 mp4 + 封面上传对象存储(配置由调用方下发,本服务不持密钥); 走主站 lobster 执行器契约(invoke/poll),回传 ResourceIngestItem 形式的 resources。 当前内置 xchina.co 的 scraper(core/scraper.py)。
18 lines
627 B
Bash
18 lines
627 B
Bash
#!/bin/sh
|
|
set -e
|
|
# 有头模式(HEADLESS=0)需要一个 X server。手动起 Xvfb(比 xvfb-run 省事、不依赖 xauth)。
|
|
if [ "${HEADLESS:-0}" = "0" ] || [ "${HEADLESS:-0}" = "false" ]; then
|
|
: "${DISPLAY:=:99}"
|
|
export DISPLAY
|
|
rm -f /tmp/.X99-lock 2>/dev/null || true
|
|
Xvfb "$DISPLAY" -screen 0 "${XVFB_SCREEN:-1366x900x24}" -nolisten tcp >/tmp/xvfb.log 2>&1 &
|
|
XVFB_PID=$!
|
|
# 等 Xvfb 起来
|
|
for _ in 1 2 3 4 5 6 7 8 9 10; do
|
|
if [ -e /tmp/.X99-lock ] || xdpyinfo -display "$DISPLAY" >/dev/null 2>&1; then break; fi
|
|
sleep 0.3
|
|
done
|
|
trap 'kill "$XVFB_PID" 2>/dev/null || true' EXIT INT TERM
|
|
fi
|
|
exec "$@"
|