peertube 0.2.0

Peertube API client
Documentation
use clap::Parser;

#[derive(Parser)]
struct Opt {
    #[arg(long)]
    instance: String,
    #[arg(long)]
    username: String,
    #[arg(long)]
    password: String,
    #[arg(long)]
    channel: String,
    url: String,
}

#[tokio::main]
async fn main() -> peertube::Result {
    env_logger::init();

    let opt = Opt::parse();
    let peertube = peertube::Api::new(&opt.instance);
    let auth = peertube.auth(&opt.username, &opt.password).await?;
    let channel = peertube.channels.get(&opt.channel).await?;

    let import = peertube::param::Import {
        video: peertube::param::NewVideo {
            channel_id: channel.id,
            privacy: Some(peertube::param::Privacy::Public),

            ..Default::default()
        },
        target_url: Some(opt.url),

        ..Default::default()
    };

    peertube.videos.import(&auth, &import).await?;

    Ok(())
}