fix: make scrape_media.py path resolution robust + include it in Nix build
Deploy Scraper / build-and-deploy (push) Canceled after 0s

- Nix flake now installs scrape_media.py to $out/bin so CI deploys it with the binary
- run_playwright_scraper locates the script alongside the running binary (Nix store),
  the Cargo manifest dir (dev), /home/code/scraper, or $SCRAPER_SCRIPT_DIR
- Fix var_os() Option match
This commit is contained in:
asepharyana
2026-09-01 15:40:57 +07:00
parent 4c5dfdb156
commit 4684a6a75c
2 changed files with 21 additions and 2 deletions
+2
View File
@@ -39,6 +39,8 @@
installPhase = ''
mkdir -p $out/bin
cp target/release/scraper $out/bin/scraper
cp $src/scrape_media.py $out/bin/scrape_media.py
chmod +x $out/bin/scrape_media.py
'';
};
in
+19 -2
View File
@@ -175,8 +175,25 @@ async fn run_playwright_scraper(
url: &str,
platform: &str,
) -> Result<serde_json::Value, ScrapingError> {
let script = env!("CARGO_MANIFEST_DIR");
let scraper_script = format!("{}/scrape_media.py", script);
// Locate scrape_media.py robustly: alongside the running binary (Nix store),
// the Cargo manifest dir (dev), or a few well-known absolute paths.
let exe_dir = std::env::current_exe()
.ok()
.and_then(|p| p.parent().map(|d| d.to_path_buf()));
let manifest_script = format!("{}/scrape_media.py", env!("CARGO_MANIFEST_DIR"));
let mut candid = vec![
exe_dir.map(|d| d.join("scrape_media.py").to_string_lossy().to_string()),
Some(manifest_script),
Some("/home/code/scraper/scrape_media.py".to_string()),
];
if let Some(rel) = std::env::var_os("SCRAPER_SCRIPT_DIR") {
candid.push(Some(format!("{}/scrape_media.py", rel.to_string_lossy())));
}
let scraper_script = candid
.into_iter()
.flatten()
.find(|p| std::path::Path::new(p).exists())
.ok_or_else(|| ScrapingError::Http("scrape_media.py not found".to_string()))?;
// Find a Python interpreter that has playwright installed.
// The system `python3` may resolve to a different interpreter for the