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}