asset-tool: add DownloadVersionV2
This commit is contained in:
parent
4d90a74a82
commit
656de62bdc
32
src/main.rs
32
src/main.rs
@ -23,6 +23,7 @@ enum Commands{
|
||||
DownloadHistory(DownloadHistorySubcommand),
|
||||
Download(DownloadSubcommand),
|
||||
DownloadVersion(DownloadVersionSubcommand),
|
||||
DownloadVersionV2(DownloadVersionSubcommand),
|
||||
DownloadDecompile(DownloadDecompileSubcommand),
|
||||
DownloadCreationsJson(DownloadCreationsJsonSubcommand),
|
||||
DownloadUserInventoryJson(DownloadUserInventoryJsonSubcommand),
|
||||
@ -463,6 +464,23 @@ async fn main()->AResult<()>{
|
||||
},
|
||||
).await
|
||||
},
|
||||
Commands::DownloadVersionV2(subcommand)=>{
|
||||
let output_folder=subcommand.output_folder.unwrap_or_else(||std::env::current_dir().unwrap());
|
||||
download_version_v2(
|
||||
cookie_from_args(
|
||||
subcommand.cookie_literal,
|
||||
subcommand.cookie_envvar,
|
||||
subcommand.cookie_file,
|
||||
).await?,
|
||||
subcommand.asset_id,
|
||||
subcommand.asset_version,
|
||||
{
|
||||
let mut path=output_folder.clone();
|
||||
path.push(subcommand.asset_id.to_string());
|
||||
path
|
||||
},
|
||||
).await
|
||||
},
|
||||
Commands::DownloadDecompile(subcommand)=>{
|
||||
download_decompile(DownloadDecompileConfig{
|
||||
cookie:cookie_from_args(
|
||||
@ -947,6 +965,20 @@ async fn download_version(cookie:Cookie,asset_id:AssetID,version:Option<u64>,des
|
||||
Ok(())
|
||||
}
|
||||
|
||||
async fn download_version_v2(cookie:Cookie,asset_id:AssetID,version:Option<u64>,dest:PathBuf)->AResult<()>{
|
||||
let context=CookieContext::new(cookie);
|
||||
|
||||
// v2 has two steps
|
||||
let info=context.get_asset_v2(rbx_asset::cookie::GetAssetRequest{asset_id,version}).await?;
|
||||
println!("version:{}",info.version);
|
||||
|
||||
let location=info.info.locations.first().ok_or(anyhow::Error::msg("No locations"))?;
|
||||
let data=context.get_asset_v2_download(location).await?;
|
||||
|
||||
tokio::fs::write(dest,data).await?;
|
||||
Ok(())
|
||||
}
|
||||
|
||||
async fn download_list(cookie:Cookie,asset_id_file_map:AssetIDFileMap)->AResult<()>{
|
||||
let context=CookieContext::new(cookie);
|
||||
futures::stream::iter(asset_id_file_map.into_iter()
|
||||
|
Loading…
x
Reference in New Issue
Block a user