twitter_archive/
lib.rs

1#!/usr/bin/env rust
2
3//! Serde structs, deserialize, and serialize definitions for Twitter archived data
4
5#![forbid(unsafe_code)]
6#![deny(clippy::all)]
7#![deny(missing_docs)]
8
9/// Various functions for facilitating conversion between JSON and Rust values
10pub mod convert {
11	/// Convert Rust `DateTime` type to/from `tweets[].tweet.created_at` string
12	pub mod created_at;
13
14	/// Convert Rust `DateTime` type to/from strings found in;
15	///
16	/// - `tweets[].tweet.edit_info.initial.editableUntil`
17	/// - `direct_messages[].dmConversation.messages[].messageCreate.createdAt`
18	pub mod date_time_iso_8601;
19
20	/// Convert Rust `DateTime` type to/from strings found in;
21	///
22	/// - `ni_devices[].niDeviceResponse.messagingDevice.updatedDate`
23	/// - `ni_devices[].niDeviceResponse.messagingDevice.createdDate`
24	pub mod date_year_month_day;
25
26	/// Convert Rust `DateTime` type to/from strings found in;
27	///
28	/// - `ad_impressions[].ad.adsUserData.adImpressions.impressions[].impressionTime`
29	pub mod date_year_month_day_hour_minute_second;
30
31	/// Convert Rust `[usize; 2]` type to/from array of strings found mostly within;
32	///
33	/// - `tweets[].tweet.entities.hashtags[].indices`
34	/// - `tweets[].tweet.entities.symbols[].indices`
35	/// - `tweets[].tweet.entities.user_mentions[].indices`
36	/// - `tweets[].tweet.entities.urls[].indices`
37	pub mod indices;
38
39	/// Convert Rust `usize` type to/from strings unlikely to overflow `usize::MAX`
40	pub mod number_like_string;
41}
42
43/// Data structures that allow `serde` to better understand Mr. Musk's vision
44pub mod structs {
45	/// Describe data within `twitter-<uuid>.zip:data/manifest.js` file
46	pub mod manifest;
47
48	/// Describe data within `twitter-<uuid>.zip:data/account-timezone.js` file
49	pub mod account_timezone;
50
51	/// Describe data within `twitter-<uuid>.zip:data/account.js` file
52	pub mod account;
53
54	/// Describe entries common between;
55	///
56	/// - `twitter-<uuid>.zip:data/ad-engagements.js`
57	/// - `twitter-<uuid>.zip:data/ad-impressions.js`
58	pub mod ad;
59
60	/// Describe data within `twitter-<uuid>.zip:data/ad-engagements.js` file
61	pub mod ad_engagements;
62
63	/// Describe data within `twitter-<uuid>.zip:data/ad-impressions.js` file
64	pub mod ad_impressions;
65
66	/// Describe data within `twitter-<uuid>.zip:data/block.js` file
67	pub mod block;
68
69	/// Describe data within `twitter-<uuid>.zip:data/community-note-rating.js` file
70	pub mod community_note_rating;
71
72	/// Describe data within `twitter-<uuid>.zip:data/connected-application.js` file
73	pub mod connected_application;
74
75	/// Describe data within `twitter-<uuid>.zip:data/deleted-tweet-headers.js` file
76	pub mod deleted_tweet_headers;
77
78	/// Describe data within `twitter-<uuid>.zip:data/device-token.js` file
79	pub mod device_token;
80
81	/// Describe data within `twitter-<uuid>.zip:data/direct-message-group-headers.js` file
82	pub mod direct_message_group_headers;
83
84	/// Describe data within `twitter-<uuid>.zip:data/direct-message-headers.js` file
85	pub mod direct_message_headers;
86
87	/// Describe entries common between;
88	///
89	/// - `twitter-<uuid>.zip:data/direct-messages.js`
90	/// - `twitter-<uuid>.zip:data/direct-messages-group.js`
91	pub mod direct_message;
92
93	/// Describe data within `twitter-<uuid>.zip:data/direct-messages.js` file
94	pub mod direct_messages;
95
96	/// Describe data within `twitter-<uuid>.zip:data/direct-messages.js` file
97	pub mod direct_messages_group;
98
99	/// Describe data within `twitter-<uuid>.zip:data/email-address-change.js` file
100	pub mod email_address_change;
101
102	/// Describe entries common between;
103	///
104	/// - `twitter-<uuid>.zip:data/following.js`
105	/// - `twitter-<uuid>.zip:data/follower.js`
106	pub mod follow;
107
108	/// Describe data within `twitter-<uuid>.zip:data/follower.js` file
109	pub mod follower;
110
111	/// Describe data within `twitter-<uuid>.zip:data/following.js` file
112	pub mod following;
113
114	/// Describe data within `twitter-<uuid>.zip:data/ip-audit.js` file
115	pub mod ip_audit;
116
117	/// Describe data within `twitter-<uuid>.zip:data/key-registry.js` file
118	pub mod key_registry;
119
120	/// Describe data within `twitter-<uuid>.zip:data/like.js` file
121	pub mod like;
122
123	/// Describe data within `twitter-<uuid>.zip:data/lists-member.js` file
124	pub mod lists_member;
125
126	/// Describe data within `twitter-<uuid>.zip:data/mute.js` file
127	pub mod mute;
128
129	/// Describe data within `twitter-<uuid>.zip:data/ni-devices.js` file
130	pub mod ni_devices;
131
132	/// Describe data within `twitter-<uuid>.zip:data/personalization.js` file
133	pub mod personalization;
134
135	/// Describe data within `twitter-<uuid>.zip:data/phone-number.js` file
136	pub mod phone_number;
137
138	/// Describe data within `twitter-<uuid>.zip:data/profile.js` file
139	pub mod profile;
140
141	/// Describe data within `twitter-<uuid>.zip:data/screen-name-change.js` file
142	pub mod screen_name_change;
143
144	/// Describe data within `twitter-<uuid>.zip:data/tweets.js` file
145	pub mod tweets;
146
147	/// Describe data within `twitter-<uuid>.zip:data/twitter-headers.js` file
148	pub mod tweet_headers;
149
150	/// Describe data within `twitter-<uuid>.zip:data/tweetdeck.js` file
151	pub mod tweetdeck;
152
153	/// Describe data within `twitter-<uuid>.zip:data/twitter-circle.js` file
154	pub mod twitter_circle;
155
156	/// Describe data within `twitter-<uuid>.zip:data/verified.js` file
157	pub mod verified;
158}