#twitter #api-wrapper #api #wrapper

critter

一个轻量级的 Rust 库,用于与 Twitter V2 API 交互

5 个版本

0.1.75 2023 年 6 月 23 日
0.1.73 2023 年 6 月 6 日
0.1.7 2023 年 6 月 6 日
0.1.6 2023 年 6 月 6 日
0.1.5 2023 年 6 月 6 日

2331网页编程

每月 46 次下载

MIT 许可证

25KB
587 代码行

小动物

一个简单的 Rust 库,用于与 Twitter V2 API 交互。

入门

在继续之前,请确保您已准备好 Twitter 开发者应用的凭证 - 消费者密钥、消费者密钥、访问令牌和访问令牌密钥。

安装

只需运行 cargo add critter 或在您的 Cargo.toml 中包含以下内容

[dependencies]
critter = "0.1.75"

基本示例

创建客户端 - OAuth 1.0a 用户上下文(带提供的 OAuth 令牌)

use critter::{ TwitterClient, auth::TwitterAuth };

#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
    let auth = TwitterAuth::from_oa1uc(
        &env::var("CONSUMER_KEY").unwrap(),
        &env::var("CONSUMER_SECRET").unwrap(),
        &env::var("ACCESS_TOKEN").unwrap(),
        &env::var("ACCESS_TOKEN_SECRET").unwrap()
    );

    let mut twitter = TwitterClient::new(auth)?;

    Ok(())
}

获取认证用户的详细信息

match twitter.me(None).await {
    Ok(data) => println!("My name is {}", data.name()),
    Err(e) => println!("Error: {}", e) // Can be something like ratelimit
}

以下是一个获取额外详细信息(如 descriptioncreated_at)的示例 此处

发布一条简单的推文

match twitter.tweet(|tweet|
    tweet.text("Hello from Rust!") // The tweet's text
).await {
    Ok(data) => println!("Tweet id: {:?}", data.id()),
    Err(e) => println!("Error: {}", e)
}

上传媒体

// Upload the media
let pic = match twitter.upload_media("/path/to/file.jpg", Some("pic.jpg".into())).await {
    Ok(pic) => Some(pic),
    Err(e) => {
        eprintln!("Error uploading media: {}", e);
        None
    },
};

// Make a tweet with said media attached
match twitter.tweet(|tweet|
    tweet.text("This is a file.") // The tweet's text
    .media(|m| { // You are able to add multiple medias
        m.add(pic) // Add the media we uploaded
    })
).await {
    Ok(data) => println!("Tweet id: {:?}", data.id()),
    Err(e) => println!("Error: {}", e)
}

依赖项

~9–23MB
~338K SLoC