@echo off if not defined GYXX_PYTHON set "GYXX_PYTHON=python" REM Monday 13:00 self-operated pipeline: Bilibili + Chanmama -> sync to cmt_notes (with INSERT) REM Feishu write-back happens inside each scraper; sync step writes PostgreSQL. REM Register: schtasks /Create /SC WEEKLY /D MON /TN YingxiaoYunying_MondaySelf /TR %PROJECT_DIR%\data\tools\monday_self_run.bat /ST 13:00 /F setlocal for %%I in ("%~dp0..\..") do set "PROJECT_DIR=%%~fI" if not defined GYXX_DATA_ROOT ( if not defined GYXX_PROJECT_ROOT ( echo ERROR: GYXX_DATA_ROOT or GYXX_PROJECT_ROOT must be defined. 1>&2 exit /b 3 ) set "GYXX_DATA_ROOT=%GYXX_PROJECT_ROOT%\var" ) set LOG_DIR=%GYXX_DATA_ROOT%\logs\content_marketing\scheduled set PYTHON=%GYXX_PYTHON% if not exist "%PYTHON%" set PYTHON=python if not exist "%LOG_DIR%" mkdir "%LOG_DIR%" set TS=%date:~0,4%%date:~5,2%%date:~8,2%_%time:~0,2%%time:~3,2%%time:~6,2% set TS=%TS: =0% set LOG_FILE=%LOG_DIR%\monday_self_%TS%.log echo === Monday self-operated run started at %date% %time% === > "%LOG_FILE%" echo PROJECT_DIR=%PROJECT_DIR% >> "%LOG_FILE%" cd /d "%PROJECT_DIR%" echo --- [step 1] self_bilibili_scraper.py --- >> "%LOG_FILE%" call %PYTHON% self_bilibili_scraper.py >> "%LOG_FILE%" 2>&1 set RC_BILI=%ERRORLEVEL% echo self_bilibili exit=%RC_BILI% >> "%LOG_FILE%" echo --- [step 2] chanmama_scraper.py --- >> "%LOG_FILE%" call %PYTHON% chanmama_scraper.py >> "%LOG_FILE%" 2>&1 set RC_CM=%ERRORLEVEL% echo chanmama exit=%RC_CM% >> "%LOG_FILE%" echo --- [step 3] sync_metrics_to_cmt_notes.py (with INSERT) --- >> "%LOG_FILE%" call %PYTHON% data\tools\sync_metrics_to_cmt_notes.py >> "%LOG_FILE%" 2>&1 set RC_SYNC=%ERRORLEVEL% echo sync exit=%RC_SYNC% >> "%LOG_FILE%" set FINAL_RC=0 if not "%RC_BILI%"=="0" set FINAL_RC=1 if not "%RC_CM%"=="0" set FINAL_RC=1 if not "%RC_SYNC%"=="0" set FINAL_RC=1 echo === Monday self-operated run finished at %date% %time% (bili=%RC_BILI%, cm=%RC_CM%, sync=%RC_SYNC%, final=%FINAL_RC%) === >> "%LOG_FILE%" endlocal & exit /b %FINAL_RC%