ganganonline-parser-lib 0.0.0

ganganonline parser for rust using pb-rs
Documentation
syntax = "proto3";

message UserPoint {
	uint32 event = 2;
	uint32 paid = 3;
}
message Volume {
	uint32 title_id = 1;
	string thumbnail_image_url = 2;
	string volume_num = 3;
	string published_date = 4;
	string header = 5;
}
message VolumeGroup {
	string published_date = 1;
	repeated Volume volumes = 2;
}
message Title {
	enum Type { MISC = 0; MANGA = 1; NOVEL = 2; }
	enum Badge { NONE = 0; NEW = 1; UPDATE = 2; }
	uint32 id = 1;
	Type type = 2;
	string title_name = 3;
	string title_name_kana = 4;
	string author_name = 5;
	string single_list_thumbnail_url = 6;
	string spread_list_thumbnail_url = 7;
	string short_description = 8;
	uint32 number_of_bookmarks = 9;
	Badge badge = 10;
	uint32 remaining_charge_time = 11;
	uint32 remaining_bonus = 12;
	repeated Tag category = 13;
	uint32 charge_time = 14;
	Tag label = 15;
	bool can_comment = 16;
	bool is_free_title = 17;
}
message AdNetworkList {
	repeated AdNetwork ad_networks = 1;
}
message AdNetwork {
	message Facebook {
		string placement_id = 1;
	}
	message Five {
		string spot_id = 1;
	}
	message Unity {
		string placement_id = 1;
	}
	message Nend {
		int32 spot_id = 1;
		string api_key = 2;
	}
	message AppLovin {
		// e instanceof r || (e = r.create(e));
		// for (var n = void 0 === t ? e.len : e.pos + t, o = new a.Proto.AdNetwork.AppLovin; e.pos < n;) {
		//     var i = e.uint32();
		//     e.skipType(7 & i)
		// }
		// return o

		// // guessing it just devours a field?
	}
	message Maio {
		string zone_id = 2;
	}
	message Zucks {
		string frame_id = 1;
	}
	oneof network {
		Facebook facebook = 3;
		Five five = 4;
		Unity unity = 5;
		Nend nend = 6;
		AppLovin app_lovin = 7;
		Maio maio = 8;
		Zucks zucks = 9;
	}
}
message Banner {
	uint32 id = 1;
	string image_url = 2;
	string url = 3;
}
message BillingItem {
	string id = 1;
	UserPoint item = 2;
	string label = 3;
	uint32 price_yen = 4;
}
message Chapter {
	enum PublishingType { REGULAR = 0; ADVANCE = 1; FREE = 2; }
	enum Badge { NONE = 0; UPDATE = 1; }
	uint32 id = 1;
	string main_name = 2;
	string sub_name = 3;
	string image_url = 4;
	PointConsumption point_consumption = 5;
	uint32 end_of_rental_period = 6;
	uint32 number_of_comments = 7;
	PublishingType publishing_type = 8;
	string published_date = 9;
	string advance_published_date = 10;
	Badge badge = 11;
	bool already_viewed = 12;
	string first_page_image_url = 13;
	uint32 number_of_user_likes = 14;
	uint32 title_id = 15;
}
message ChapterGroup {
	Volume volume = 1;
	repeated Chapter chapters = 3;
}
message Comment {
	uint32 id = 1;
	uint32 index = 2;
	bool is_my_comment = 3;
	bool already_liked = 4;
	uint32 number_of_likes = 5;
	string body = 6;
	string created = 7;
}
message MangaPage {
	message Image {
		string image_url = 1;
		uint32 height = 3;
		uint32 width = 4;
	}
	message WebView {
		string url = 1;
	}
	message LastPage {
		Chapter current_chapter = 1;
		Chapter next_chapter = 2;
		AdNetworkList advertisement = 3;
		Sns sns = 4;
		bool is_bookmarked = 5;
		bool is_liked = 6;
		repeated Title recommended_titles = 7;
		string questionnaire_url = 8;
	}
	message LinkImage {
		string image_url = 1;
		string url = 2;
		uint32 height = 3;
		uint32 width = 4;
	}
	oneof content {
		Image image = 1;
		WebView web_view = 2;
		AdNetworkList advertisement = 3;
		LastPage last_page = 4;
		LinkImage link_image = 5;
	}
}
message PointConsumption {
	enum Type { NONE = 0; ANY_ITEMS = 1; EVENT_OR_PAID = 2; PAID_ONLY = 3; }
	Type type = 1;
	uint32 amount = 2;
	bool ad_enabled = 3;
}
message PointHistory {
	string detail = 1;
	UserPoint item = 2;
	string created = 3;
}
message Popup {
	message Button {
		string text = 1;
		string url = 2;
	}
	message Information {
		uint32 popup_id = 1;
		uint32 title_id = 2;
		uint32 chapter_id = 3;
	}
	message OSDefaultPopup {
		string subject = 1;
		string body = 2;
		Button ok_button = 3;
		Button neutral_button = 4;
		Button cancel_button = 5;
		Information popup_info = 6;
	}
	message AppDefaultPopup {
		string subject = 1;
		string body = 2;
		string image_url = 3;
		Button ok_button = 4;
		Button cancel_button = 5;
		Information popup_info = 6;
	}
	message MovieRewardPopup {
		string subject = 1;
		string body = 2;
		string image_url = 3;
		AdNetworkList ad_networks = 4;
		Button ok_button = 5;
		Button cancel_button = 6;
		Information popup_info = 7;
	}
	OSDefaultPopup os_default = 1;
	AppDefaultPopup app_default = 2;
	MovieRewardPopup move_reward = 3;
}
message Profile {
	enum Sex { OTHER = 0; MALE = 1; FEMALE = 2; }
	Sex sex = 1;
	int32 year = 2;
	int32 month = 3;
}
message Ranking {
	enum Type { UNKNOWN = 0; TREND = 1; POPULAR = 2; MALE = 3; FEMALE = 4; }
	Type type = 1;
	repeated Title titles = 2;
}
message Sns {
	string body = 1;
	string url = 2;
}
message Tag {
	uint32 id = 1;
	string name = 2;
	string image_url = 3;
}
message TitleGroup {
	uint32 id = 1;
	string name = 2;
	repeated Title titles = 3;
}
message AllChaptersListView {
	Title title = 1;
	repeated ChapterGroup chapters = 2;
}
message BackgroundDownloadView {
	repeated string image_urls = 1;
}
message BillingItemListView {
	repeated BillingItem billing_items = 1;
	string reward_url = 2;
	AdNetworkList movie_ad = 3;
	bool registered = 4;
}
message BridgeTransIdView {
	uint32 bridge_trans_id = 1;
}
message CommentListView {
	repeated Comment comments = 1;
	bool can_post = 3;
}
message CommentPostView {
	enum Status { SUCCESS = 0; RATE_LIMIT = 1; CHARACTERS_LIMIT = 2; NG_WORD = 3; VOID_BODY = 4; }
	Status status = 1;
}
message DeviceView {
	string user_secret = 1;
}
message FeaturedTitleListView {
	string image_url = 1;
	string name = 2;
	string description = 3;
	repeated Title titles = 4;
	uint32 tag_id = 5;
}
message HomeView {
	repeated Banner top_banners = 1;
	repeated Banner sub_banners = 2;
	repeated Title updated_titles = 3;
	TitleGroup featured_titles = 4;
	repeated Ranking rankings = 5;
	VolumeGroup newly_published_volumes = 7;
	Popup popup = 8;
}
message MangaViewerView {
	repeated MangaPage pages = 1;
	Title title = 2;
}
message MyPageView {
	string tag_name = 1;
	string keyword = 2;
}
message NovelViewerView {
	string url = 1;
	Chapter current_chapter = 2;
	Chapter next_chapter = 4;
	Sns sns = 5;
	Title title = 6;
}
message PointHistoryView {
	repeated PointHistory logs = 1;
}
message ProfileView {
	Profile profile = 1;
}
message QuestionnaireView {
	message Section {
		message NormalSelection {
			message Answer {
				message Choice {
					uint32 id = 1;
					string body = 2;
				}
				message Freeform {
					string body = 1;
				}
				oneof answer {
					Choice choice = 1;
					Freeform freeform = 2;
				}
			}
			repeated Answer answers = 1;
		}
		message ThumbnailSelection {
			message Answer {
				uint32 id = 1;
				string body = 2;
				string image_url = 3;
			}
			repeated Answer answers = 1;
		}
		message ImageOnlySelection {
			message Answer {
				uint32 id = 1;
				string body = 2;
				string image_url = 3;
			}
			repeated Answer answers = 1;
		}
		message FreeForm {}
		uint32 id = 1;
		string body = 2;
		oneof selection {
			NormalSelection normal = 3;
			ThumbnailSelection thumbnail = 4;
			ImageOnlySelection image_only = 5;
			FreeForm freeform = 7;
		}
		uint32 limitation = 6;
		bool is_mandatory = 8;
	}
	string name = 1;
	string description = 2;
	uint32 end_of_time = 3;
	repeated Section sections = 4;
	bool has_answered = 5;
}
message RankingView {
	repeated Ranking rankings = 1;
}
message SearchView {
	repeated Tag tags = 1;
	repeated TitleGroup title_groups = 2;
}
message TitleDetailView {
	Title title = 1;
	string next_update_info = 2;
	string main_thumbnail_url = 3;
	string long_description = 4;
	// license
	string copyright = 5;
	repeated Banner banners = 6;
	repeated ChapterGroup chapters = 7;
	bool is_bookmarked = 8;
	Sns sns = 9;
	bool is_free_title = 10;
}
message TitleListView {
	Title picked_up_title = 1;
	repeated Title titles = 2;
}
message WebMangaViewerView {
	message WebMangaPage {
		message Image {
			string image_url = 1;
			string encryption_key = 2;
			// yeah there's no width/height here (@see MangaPage)
			// xorstream ftw lmao
		}
		message LinkImage {
			string image_url = 1;
			string url = 2;
		}
		oneof content {
			Image image = 1;
			LinkImage link_image = 2;
		}
	}
	message LastPage {
		Chapter next_chapter = 1;
		string impresstion_form_url = 2;
	}
	repeated WebMangaPage pages = 1;
	LastPage last_page = 2;
	Title title = 3;
	// left handed start; ie centre first page
	bool if_left_start = 4;
	string title_detail_url = 5;
}
message Response {
	message ErrorResult {
		enum Action { DEFAULT = 0; MAINTENANCE = 1; ITEM_UPDATE = 2; USER_REGISTER = 3; }
		Popup popup = 1;
		UserPoint user_item = 2;
		Action action = 3;
	}
	message SuccessResult {
		message Notification {
			string subject = 1;
			UserPoint point = 2;
		}
		UserPoint user_item = 1;
		Notification notification = 2;
		/*
		'backgroundDownload', 'billingItemList', 'commentList', 'home', 'mangaViewer', 'novelViewer', 'pointHistory', 'titleDetail', 'titleList', 'profile', 'device', 'ranking', 'allChaptersList', 'featuredTitleList', 'search', 'bridgeTransId', 'questionnaire', 'myPage', 'commentPost', 'webMangaViewer'
		*/
		oneof view { // data
			BackgroundDownloadView background_download = 4;
			BillingItemListView billing_item_list = 5;
			CommentListView comment_list = 6;
			HomeView home = 7;
			MangaViewerView manga_viewer = 8;
			NovelViewerView novel_viewer = 9;
			PointHistoryView point_history = 10;
			TitleDetailView title_detail = 11;
			TitleListView title_list = 12;
			ProfileView profile = 13;
			DeviceView device = 14;
			RankingView ranking = 15;
			AllChaptersListView all_chapters_list = 16;
			FeaturedTitleListView featured_title_list = 17;
			SearchView search = 18;
			BridgeTransIdView bridge_trans_id = 19;
			QuestionnaireView questionnaire = 20;
			MyPageView my_page = 21;
			CommentPostView comment_post = 22;
			WebMangaViewerView web_manga_viewer = 23;
		}
	}
	oneof result {
		SuccessResult success = 1;
		ErrorResult error = 2;
	}
	uint32 server_time = 3;
	repeated string debug_info = 4;
}