imgchest rs
1.0.0
imgchest.com と対話するための Rust ライブラリ。 API 全体を実装すると同時に、ログインなしでいくつかのスクレイピング ベースの機能も提供します。
# [ tokio :: main ]
async fn main ( ) -> anyhow :: Result < ( ) > {
let client = imgchest :: Client :: new ( ) ;
client . set_token ( "TOKEN" ) ;
let mut builder = imgchest :: CreatePostBuilder :: new ( ) ;
builder
. title ( "test title" )
. nsfw ( false )
. image ( imgchest :: UploadPostFile :: from_path ( "img.png" ) . await ? ) ;
let post = client . create_post ( builder ) . await ? ;
dbg ! ( &post ) ;
Ok ( ( ) )
}
# [ tokio :: main ]
async fn main ( ) -> anyhow :: Result < ( ) > {
let client = imgchest :: Client :: new ( ) ;
let post = client
. get_post ( "3qe4gdvj4j2" )
. await ? ;
dbg ! ( &post ) ;
Ok ( ( ) )
}
# [ tokio :: main ]
async fn main ( ) -> anyhow :: Result < ( ) > {
let client = imgchest :: Client :: new ( ) ;
let post = client
. get_scraped_post ( "3qe4gdvj4j2" )
. await ? ;
dbg ! ( &post ) ;
Ok ( ( ) )
}
以前、このライブラリは公式 API の使用を完全に回避しようとしました。これには次の 2 つの理由がありました。
レート制限は許容できるように更新されたようですが (1 分あたり 60 リクエスト)、投稿を取得するには依然としてログインが必要です。その結果、API サポートがこのライブラリに追加されるとともに、可能な場合にはスクレイピング ベースの代替手段の提供も試みられました。 API トークンを使用する必要性を回避し、レート制限を回避するために、可能な場合はスクレイピング ベースの機能を使用することをお勧めします。
このライブラリ内のスクレイピングされた API オブジェクトは、いくつかのフィールドが欠落していますが、可能な限り公式 API と一致するように調整されています。
API にはいくつかの点で制限があります。このライブラリには、これらの制限を回避するために、さらにスクレイピング ベースの機能が追加される可能性があります。これらの制限は重大度順に並べられています。