Diff
Logged in as anonymous

Differences From Artifact [52e93d948c]:

To Artifact [46b6ac4e03]:


1
2
3

4
5
6


7



8
9
10
11
12
13
14
15
16
17

18
19
20
21
22
23
24
25
26
27
1
2
3
4
5


6
7
8
9
10
11
12
13
14
15




16

17



18
19
20
21
22
23
24



+

-
-
+
+

+
+
+




-
-
-
-

-
+
-
-
-







use std::collections::{BTreeMap, HashSet};
use std::sync::{Arc, Mutex};

use chrono::DateTime;
use config;

use tokio;
use futures::StreamExt;
use regex::Regex;
use reqwest;
use sqlx::postgres::PgPoolOptions;
use sqlx::Row;
use tokio;

use rss;
use atom_syndication;

use chrono::DateTime;

use regex::Regex;

use telegram_bot::*;
use tokio::stream::StreamExt;
//use tokio::stream::StreamExt;

use sqlx::postgres::PgPoolOptions;
use sqlx::Row;

#[macro_use]
extern crate lazy_static;

use anyhow::{anyhow, bail, Context, Result};

#[derive(Clone)]
171
172
173
174
175
176
177
178

179
180
181
182
183
184
185
168
169
170
171
172
173
174

175
176
177
178
179
180
181
182







-
+







					sqlx::query("insert into rsstg_post (source_id, posted, url) values ($1, $2, $3);")
						.bind(*id)
						.bind(date)
						.bind(url)
						.execute(&mut conn).await
						.with_context(|| format!("Record post:\n{:?}", &conn))?;
					drop(conn);
					tokio::time::delay_for(std::time::Duration::new(4, 0)).await;
					tokio::time::sleep(std::time::Duration::new(4, 0)).await;
				};
			};
			posts.clear();
		};
		let mut conn = self.pool.acquire().await
			.with_context(|| format!("Update scrape fetch conn:\n{:?}", &self.pool))?;
		sqlx::query("update rsstg_source set last_scrape = now() where source_id = $1;")
328
329
330
331
332
333
334
335

336
337
338
339
340
341
342
325
326
327
328
329
330
331

332
333
334
335
336
337
338
339







-
+







				} else {
					if next_fetch - now < delay {
						delay = next_fetch - now;
					}
				}
			};
			queue.clear();
			tokio::time::delay_for(delay.to_std()?).await;
			tokio::time::sleep(delay.to_std()?).await;
			delay = chrono::Duration::minutes(1);
		}
	}

	async fn list<S>(&self, owner: S) -> Result<Vec<String>>
	where S: Into<i64> {
		let owner = owner.into();