A tool to read animebox backup files and export the data in alternate formats.
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 

142 lines
4.5 KiB

use serde::{Deserialize, Serialize};
#[derive(Serialize, Deserialize)]
struct AnimeBoxesBackup {
#[serde(rename(serialize = "backupTime", deserialize = "backup_time"))]
backup_time: String,
#[serde(rename(serialize = "backupVersion", deserialize = "backup_version"))]
backup_version: String,
#[serde(rename(serialize = "bannedTags", deserialize = "banned_tags"))]
banned_tags: Vec<String>,
#[serde(rename(serialize = "creatorName", deserialize = "creator_name"))]
creator_name: String,
#[serde(rename(serialize = "creatorVersion", deserialize = "creator_version"))]
creator_version: String,
favorites: Vec<AnimeBoxesFavorite>,
#[serde(rename(serialize = "searchHistory", deserialize = "search_history"))]
search_history: Vec<AnimeBoxesSearch>,
servers: Vec<AnimeBoxesServer>,
}
#[derive(Serialize, Deserialize)]
struct AnimeBoxesFavorite {
#[serde(rename(serialize = "dateAdded", deserialize = "date_added"))]
date_added: String,
#[serde(rename(serialize = "disableStorage", deserialize = "disable_storage"))]
disable_storage: bool,
#[serde(rename(
serialize = "enforceOriginalImage",
deserialize = "enforce_original_image"
))]
enforce_original_image: bool,
file: AnimeBoxesFavoriteFile,
has_children: bool,
has_comments: bool,
has_notes: bool,
#[serde(rename(serialize = "imageIsVisible", deserialize = "image_is_visible"))]
image_is_visible: bool,
#[serde(rename(serialize = "isFavorite", deserialize = "is_favorite"))]
is_favorite: bool,
#[serde(rename(serialize = "isVisible", deserialize = "is_visible"))]
is_visible: bool,
jpeg: Option<AnimeBoxesFavoriteJpeg>,
md5: String,
parent_id: String,
ppost_id: String,
#[serde(rename(serialize = "ppostUrl", deserialize = "ppost_url"))]
ppost_url: String,
preview: AnimeBoxesFavoritePreview,
rating: String,
sample: AnimeBoxesFavoriteSample,
score: i16,
source: String,
tag_artist: String,
tag_character: String,
tag_copyright: String,
tag_general: String,
tags: String,
}
#[derive(Serialize, Deserialize)]
struct AnimeBoxesFavoriteFile {
#[serde(rename(serialize = "contentType", deserialize = "content_type"))]
content_type: i8,
ext: String,
height: i16,
url: String,
width: i16,
}
#[derive(Serialize, Deserialize)]
struct AnimeBoxesFavoriteJpeg {
#[serde(rename(serialize = "contentType", deserialize = "content_type"))]
content_type: i8,
ext: String,
height: i16,
url: String,
width: i16,
}
#[derive(Serialize, Deserialize)]
struct AnimeBoxesFavoritePreview {
#[serde(rename(serialize = "contentType", deserialize = "content_type"))]
content_type: i8,
ext: String,
height: i16,
url: String,
width: i16,
}
#[derive(Serialize, Deserialize)]
struct AnimeBoxesFavoriteSample {
#[serde(rename(serialize = "contentType", deserialize = "content_type"))]
content_type: i8,
ext: String,
height: i16,
url: String,
width: i16,
}
#[derive(Serialize, Deserialize)]
struct AnimeBoxesSearch {
#[serde(rename(serialize = "itemId", deserialize = "item_id"))]
item_id: i32,
#[serde(rename(serialize = "searchDate", deserialize = "search_date"))]
search_date: String,
#[serde(rename(serialize = "searchText", deserialize = "search_text"))]
search_text: String,
starred: bool,
}
#[derive(Serialize, Deserialize)]
struct AnimeBoxesServer {
apikey: String,
#[serde(rename(serialize = "isDefault", deserialize = "is_default"))]
is_default: bool,
#[serde(rename(serialize = "isSelected", deserialize = "is_selected"))]
is_selected: bool,
password: String,
#[serde(rename(serialize = "passwordKey", deserialize = "password_key"))]
password_key: String,
#[serde(rename(
serialize = "ratingFilterEnabled",
deserialize = "rating_filter_enabled"
))]
rating_filter_enabled: bool,
#[serde(rename(serialize = "realURL", deserialize = "real_url"))]
real_url: String,
#[serde(rename(serialize = "serverId", deserialize = "server_id"))]
server_id: i16,
#[serde(rename(serialize = "serverName", deserialize = "server_name"))]
server_name: String,
#[serde(rename(serialize = "type", deserialize = "type_"))]
type_: i16,
url: String,
#[serde(rename(
serialize = "useNativeAutocomplete",
deserialize = "use_native_autocomplete"
))]
use_native_autocomplete: bool,
#[serde(rename(serialize = "userName", deserialize = "user_name"))]
user_name: String,
}