Skip to content

Commit 73822ee

Browse files
committed
enhance the command line and fix the rate limiter
1 parent d083481 commit 73822ee

2 files changed

Lines changed: 30 additions & 19 deletions

File tree

src/get_follower.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@ impl AtProtoGetFollower {
3636
MemorySessionStore::default(),
3737
);
3838
// hard coded default Bluesky query limit
39-
let rate_limiter = RateLimiter::direct(Quota::per_second(NonZeroU32::new(3).unwrap()));
39+
let rate_limiter = RateLimiter::direct(Quota::per_second(NonZeroU32::new(5).unwrap()));
4040
AtProtoGetFollower {
4141
login_name: login.to_string(),
4242
password: password.to_string(),

src/main.rs

Lines changed: 29 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -3,13 +3,13 @@ use bsky_graph::{
33
AtProtoGetFollower, AtProtoGetFollows, DidFileReader, ParquetWriter, utils::setup_logger,
44
};
55
use clap::Parser;
6+
use log::info;
67
use std::env;
78

89
#[derive(Parser, Debug)]
910
#[command(
1011
version,
11-
about,
12-
long_about = "Dump followers and follows DIDs for Bluesky users to Parquet files"
12+
about = "Dump followers and follows DIDs for Bluesky users to Parquet files"
1313
)]
1414
struct Args {
1515
/// Input file containing list of bluesky DID
@@ -30,6 +30,9 @@ struct Args {
3030
/// maximum of request retry before failling
3131
#[arg(short, long, default_value_t = 10)]
3232
max_retry: u32,
33+
/// Retrive the follower else retrive the Follows
34+
#[arg(short, long)]
35+
follower: bool,
3336
}
3437

3538
#[tokio::main]
@@ -47,21 +50,29 @@ async fn main() -> Result<()> {
4750
let atproto_follower: AtProtoGetFollower =
4851
AtProtoGetFollower::new(&login, &password, args.limit);
4952

50-
let mut follows_writer = ParquetWriter::new(
51-
atproto_follows,
52-
DidFileReader::new(&args.input_file)?,
53-
args.buf_size,
54-
&args.output_dir,
55-
args.max_retry,
56-
);
57-
let mut follower_writer = ParquetWriter::new(
58-
atproto_follower,
59-
DidFileReader::new(&args.input_file)?,
60-
args.buf_size,
61-
&args.output_dir,
62-
args.max_retry,
63-
);
64-
follows_writer.write().await?;
65-
follower_writer.write().await?;
53+
// either fetch the follower or the follows
54+
if args.follower {
55+
info!("Start to fetch Follower");
56+
let mut follower_writer = ParquetWriter::new(
57+
atproto_follower,
58+
DidFileReader::new(&args.input_file)?,
59+
args.buf_size,
60+
&args.output_dir,
61+
args.max_retry,
62+
);
63+
64+
follower_writer.write().await?;
65+
} else {
66+
info!("Start to fetch Follows");
67+
let mut follows_writer = ParquetWriter::new(
68+
atproto_follows,
69+
DidFileReader::new(&args.input_file)?,
70+
args.buf_size,
71+
&args.output_dir,
72+
args.max_retry,
73+
);
74+
75+
follows_writer.write().await?;
76+
}
6677
Ok(())
6778
}

0 commit comments

Comments
 (0)