tiktok_rust 0.0.13

A Rust library for interacting with the TikTok API, enabling direct posting of content and querying creator information.
Documentation
use crate::error::ErrorResponse;
use serde::{Deserialize, Serialize};

#[derive(Debug, Clone, Copy)]
pub enum VideoField {
    Id,
    CreateTime,
    CoverImageUrl,
    ShareUrl,
    VideoDescription,
    Duration,
    Height,
    Width,
    Title,
    EmbedHtml,
    EmbedLink,
    LikeCount,
    CommentCount,
    ShareCount,
    ViewCount,
}

impl VideoField {
    pub fn as_str(&self) -> &'static str {
        match self {
            VideoField::Id => "id",
            VideoField::CreateTime => "create_time",
            VideoField::CoverImageUrl => "cover_image_url",
            VideoField::ShareUrl => "share_url",
            VideoField::VideoDescription => "video_description",
            VideoField::Duration => "duration",
            VideoField::Height => "height",
            VideoField::Width => "width",
            VideoField::Title => "title",
            VideoField::EmbedHtml => "embed_html",
            VideoField::EmbedLink => "embed_link",
            VideoField::LikeCount => "like_count",
            VideoField::CommentCount => "comment_count",
            VideoField::ShareCount => "share_count",
            VideoField::ViewCount => "view_count",
        }
    }
}

#[derive(Serialize, Deserialize, Debug)]
pub struct VideoFilters {
    pub video_ids: Vec<String>,
}

#[derive(Serialize, Deserialize, Debug)]
pub struct QueryVideoRequest {
    pub filters: VideoFilters,
}

#[derive(Serialize, Deserialize, Debug, Default)]
pub struct Video {
    #[serde(default)]
    pub id: String,
    #[serde(default)]
    pub create_time: Option<i64>,
    #[serde(default)]
    pub cover_image_url: Option<String>,
    #[serde(default)]
    pub share_url: Option<String>,
    #[serde(default)]
    pub video_description: Option<String>,
    #[serde(default)]
    pub duration: Option<i32>,
    #[serde(default)]
    pub height: Option<i32>,
    #[serde(default)]
    pub width: Option<i32>,
    #[serde(default)]
    pub title: Option<String>,
    #[serde(default)]
    pub embed_html: Option<String>,
    #[serde(default)]
    pub embed_link: Option<String>,
    #[serde(default)]
    pub like_count: Option<i32>,
    #[serde(default)]
    pub comment_count: Option<i32>,
    #[serde(default)]
    pub share_count: Option<i32>,
    #[serde(default)]
    pub view_count: Option<i64>,
}

#[derive(Serialize, Deserialize, Debug, Default)]
pub struct QueryUserVideoResponseData {
    #[serde(default)]
    pub videos: Vec<Video>,
}

#[derive(Serialize, Deserialize, Debug)]
pub struct QueryVideoResponse {
    #[serde(default)]
    pub data: QueryUserVideoResponseData,
    pub error: ErrorResponse,
}

#[derive(Serialize, Deserialize, Debug, Default)]
pub struct ListVideoRequest {
    #[serde(skip_serializing_if = "Option::is_none")]
    pub cursor: Option<i64>,
    #[serde(skip_serializing_if = "Option::is_none")]
    pub max_count: Option<i32>,
}

#[derive(Serialize, Deserialize, Debug, Default)]
pub struct UserVideoListPostResponseData {
    #[serde(default)]
    pub videos: Vec<Video>,
    #[serde(default)]
    pub cursor: i64,
    #[serde(default)]
    pub has_more: bool,
}

#[derive(Serialize, Deserialize, Debug)]
pub struct ListVideoResponse {
    #[serde(default)]
    pub data: UserVideoListPostResponseData,
    pub error: ErrorResponse,
}