ห้องสมุด Rust เพื่อโต้ตอบกับ imgchest.com มันใช้งาน 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 สาเหตุดังต่อไปนี้:
แม้ว่าขีดจำกัดอัตราดูเหมือนจะได้รับการอัปเดตให้สามารถรองรับได้ (60 คำขอต่อนาที) แต่การดึงโพสต์ยังคงต้องมีการเข้าสู่ระบบ ด้วยเหตุนี้ จึงมีการเพิ่มการรองรับ API ลงในไลบรารีนี้ ในขณะเดียวกันก็พยายามจัดหาทางเลือกอื่นที่เน้นการขูดเมื่อเป็นไปได้ ขอแนะนำให้ใช้ฟังก์ชันการขูดเมื่อเป็นไปได้เพื่อหลีกเลี่ยงความจำเป็นในการใช้โทเค็น API และเพื่อหลีกเลี่ยงขีดจำกัดอัตรา
ออบเจ็กต์ API ที่คัดลอกมาในไลบรารีนี้ได้รับการปรับแต่งให้ตรงกับ API อย่างเป็นทางการมากที่สุดเท่าที่จะเป็นไปได้ แม้ว่าบางฟิลด์จะหายไปก็ตาม
API ถูกจำกัดบางประการ ไลบรารีนี้อาจได้รับฟังก์ชันการทำงานแบบขูดเพิ่มเติมเพื่อแก้ไขข้อจำกัดเหล่านี้ ข้อจำกัดเหล่านี้เรียงลำดับตามความรุนแรง