about summary refs log tree commit diff stats
diff options
context:
space:
mode:
-rwxr-xr-xpython_update/raw_update.py11
-rw-r--r--src/main.rs2
-rw-r--r--src/update/mod.rs26
3 files changed, 30 insertions, 9 deletions
diff --git a/python_update/raw_update.py b/python_update/raw_update.py
index 6f5b78d..c443960 100755
--- a/python_update/raw_update.py
+++ b/python_update/raw_update.py
@@ -50,7 +50,7 @@ class Video:
 
 
 logger = logging.getLogger("yt")
-logging.basicConfig(encoding="utf-8", level=logging.DEBUG)
+logging.basicConfig(encoding="utf-8", level=int(sys.argv[3]))
 
 _ytdl_logger = logging.getLogger("yt_dlp")
 _ytdl_logger.propagate = False
@@ -107,6 +107,7 @@ class Fetcher:
             else:
                 entries = info.get("entries", [])
                 for entry in take(self.max_items, entries):
+                    logger.debug(json.dumps(entry))
                     id = str.encode(yt_dlp.utils.unsmuggle_url(entry["id"])[0])
                     ehash = blake3(id).hexdigest()
                     if ehash not in hashes:
@@ -144,7 +145,7 @@ class Updater:
         self.hashes = None
 
     async def update_url(self, url: str):
-        print(f"Updating {url}...", file=sys.stderr)
+        logger.info(f"Updating {url}...")
         new_entries = await self.fetcher.get_unprocessed_entries(url, self.hashes)
 
         await asyncio.gather(
@@ -163,8 +164,10 @@ def update():
     max_backlog = int(sys.argv[1])
     subscriptions_number = int(sys.argv[2])
     u = Updater(max_backlog=max_backlog)
-    u.update(sys.argv[3:(3 + subscriptions_number)], sys.argv[(3 + subscriptions_number):])
+    u.update(
+        sys.argv[4 : (4 + subscriptions_number)], sys.argv[(4 + subscriptions_number) :]
+    )
 
 
-print(sys.argv, file=sys.stderr)
+logger.debug(sys.argv)
 update()
diff --git a/src/main.rs b/src/main.rs
index ebbb45f..53cfc9e 100644
--- a/src/main.rs
+++ b/src/main.rs
@@ -95,7 +95,7 @@ async fn main() -> Result<()> {
                 }
             }
 
-            update::update(&app, max_backlog, subscriptions, concurrent_processes).await?;
+            update::update(&app, max_backlog, subscriptions, args.verbosity).await?;
         }
 
         Command::Subscriptions { cmd } => match cmd {
diff --git a/src/update/mod.rs b/src/update/mod.rs
index d96e3d1..c913195 100644
--- a/src/update/mod.rs
+++ b/src/update/mod.rs
@@ -12,7 +12,7 @@ use std::{collections::HashMap, process::Stdio, str::FromStr};
 
 use anyhow::{Context, Ok, Result};
 use chrono::{DateTime, Utc};
-use log::{error, info, warn};
+use log::{debug, error, info, warn};
 use tokio::{
     io::{AsyncBufReadExt, BufReader},
     process::Command,
@@ -35,10 +35,18 @@ pub async fn update(
     app: &App,
     max_backlog: u32,
     subs_to_update: Vec<String>,
-    _concurrent_processes: usize,
+    verbosity: u8,
 ) -> Result<()> {
     let subscriptions = get_subscriptions(&app).await?;
     let mut back_subs: HashMap<Url, Subscription> = HashMap::new();
+    let logging = verbosity > 0;
+    let log_level = match verbosity {
+        // 0 => 50,   // logging.CRITICAL
+        0 => 40,   // logging.ERROR
+        1 => 30,   // logging.WARNING
+        2 => 20,   // logging.INFO
+        3.. => 10, // logging.DEBUG
+    };
 
     let mut urls: Vec<String> = vec![];
     for (name, sub) in subscriptions.0 {
@@ -60,10 +68,15 @@ pub async fn update(
     let mut child = Command::new("raw_update.py")
         .arg(max_backlog.to_string())
         .arg(urls.len().to_string())
+        .arg(log_level.to_string())
         .args(&urls)
         .args(&hashes.iter().map(|haz| haz.to_string()).collect::<Vec<_>>())
         .stdout(Stdio::piped())
-        .stderr(Stdio::null())
+        .stderr(if logging {
+            Stdio::inherit()
+        } else {
+            Stdio::null()
+        })
         .stdin(Stdio::null())
         .spawn()
         .context("Failed to call python3 update_raw")?;
@@ -95,7 +108,12 @@ pub async fn update(
 
     let out = child.wait().await?;
     if !out.success() {
-        error!("The update_raw.py invokation failed for all subscriptions.")
+        error!(
+            "The update_raw.py invokation failed (exit code: {}).",
+            out.code()
+                .map(|f| f.to_string())
+                .unwrap_or("<No exit code>".to_owned())
+        )
     }
 
     Ok(())