feat: stuff
This commit is contained in:
parent
6d58fd47a1
commit
a40b1498e2
16 changed files with 2992 additions and 256 deletions
84
mii/src/lib.rs
Normal file
84
mii/src/lib.rs
Normal file
|
|
@ -0,0 +1,84 @@
|
|||
use std::ops::Index;
|
||||
use std::str::FromStr;
|
||||
use bytemuck::{from_bytes, try_from_bytes, Pod, Zeroable};
|
||||
use base64::Engine;
|
||||
use base64::prelude::BASE64_STANDARD;
|
||||
use reqwest::Url;
|
||||
|
||||
#[derive(Pod, Zeroable, Copy, Clone)]
|
||||
#[repr(C, packed)]
|
||||
struct FFLStoreData{
|
||||
mii_data: FFLiMiiDataOfficial
|
||||
}
|
||||
|
||||
#[derive(Pod, Zeroable, Copy, Clone)]
|
||||
#[repr(C, packed)]
|
||||
struct FFLiMiiDataOfficial{
|
||||
core_data: FFLiMiiDataCore
|
||||
}
|
||||
|
||||
#[derive(Pod, Zeroable, Copy, Clone)]
|
||||
#[repr(C, packed)]
|
||||
struct FFLiMiiDataCore{
|
||||
stuff: u32,
|
||||
author_id: u64,
|
||||
create_id: [u8; 10],
|
||||
unk_1: u16,
|
||||
unk_2: u16,
|
||||
pub name: [u16; 10],
|
||||
|
||||
|
||||
}
|
||||
|
||||
pub struct MiiData{
|
||||
pub name: String
|
||||
}
|
||||
|
||||
impl MiiData{
|
||||
pub fn read(data: &str) -> Option<Self>{
|
||||
let data = BASE64_STANDARD.decode(data).ok()?;
|
||||
|
||||
let data: &FFLStoreData = try_from_bytes(data.get(0..size_of::<FFLStoreData>())?).ok()?;
|
||||
|
||||
let name = data.mii_data.core_data.name;
|
||||
let idx = name.iter().position(|v| *v == 0x0).unwrap_or(11);
|
||||
|
||||
let name = &name[0..idx];
|
||||
|
||||
let name = String::from_utf16(&name).ok()?;
|
||||
|
||||
Some(Self{
|
||||
name
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
pub async fn get_image_png(data: &str) -> Option<Vec<u8>>{
|
||||
let mut url = Url::from_str("https://mii-unsecure.ariankordi.net/miis/image.png\
|
||||
").unwrap();
|
||||
|
||||
url.set_query(Some(&format!("data={}", data)));
|
||||
|
||||
reqwest::get(url).await.ok().map(|v| v.bytes())?.await.ok().map(|b| b.to_vec())
|
||||
}
|
||||
|
||||
pub async fn get_image_tga(data: &str) -> Option<Vec<u8>>{
|
||||
let mut url = Url::from_str("https://mii-unsecure.ariankordi.net/miis/image.tga\
|
||||
").unwrap();
|
||||
|
||||
url.set_query(Some(&format!("data={}", data)));
|
||||
|
||||
reqwest::get(url).await.ok().map(|v| v.bytes())?.await.ok().map(|b| b.to_vec())
|
||||
}
|
||||
|
||||
#[cfg(test)]
|
||||
mod test{
|
||||
#[tokio::test]
|
||||
async fn test_image_get(){
|
||||
let image = get_image_png("AAEAQDrPvmeBxJIQ3cL/BYp4iCWDvgAA8FVEAEoATQByAFQAVgAAAGgAZQByAAB/BAApBBpK4xiXEqQMAhgXbAoACClQQkhQTQBFAAAALQBTAHcAaQB0AGMAaAAAAMqP").await.unwrap();
|
||||
|
||||
fs::write("heh.png", image).unwrap();
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue