@@ -19,6 +19,7 @@ import 'package:dio/dio.dart';
19
19
import 'package:twitee/Models/response_result.dart' ;
20
20
import 'package:twitee/Openapi/export.dart' ;
21
21
22
+ import '../Models/translation_result.dart' ;
22
23
import '../Utils/ilogger.dart' ;
23
24
import '../Utils/request_util.dart' ;
24
25
@@ -498,7 +499,7 @@ class UserApi {
498
499
"creator_subscriptions_tweet_preview_api_enabled" : true ,
499
500
"responsive_web_graphql_timeline_navigation_enabled" : true ,
500
501
"responsive_web_graphql_skip_user_profile_image_extensions_enabled" :
501
- false ,
502
+ false ,
502
503
"communities_web_enable_tweet_community_results_fetch" : true ,
503
504
"c9s_tweet_anatomy_moderator_badge_enabled" : true ,
504
505
"articles_preview_enabled" : true ,
@@ -512,7 +513,7 @@ class UserApi {
512
513
"freedom_of_speech_not_reach_fetch_enabled" : true ,
513
514
"standardized_nudges_misinfo" : true ,
514
515
"tweet_with_visibility_results_prefer_gql_limited_actions_policy_enabled" :
515
- true ,
516
+ true ,
516
517
"rweb_video_timestamps_enabled" : true ,
517
518
"longform_notetweets_rich_text_read_enabled" : true ,
518
519
"longform_notetweets_inline_media_enabled" : true ,
@@ -627,7 +628,7 @@ class UserApi {
627
628
"creator_subscriptions_tweet_preview_api_enabled" : true ,
628
629
"responsive_web_graphql_timeline_navigation_enabled" : true ,
629
630
"responsive_web_graphql_skip_user_profile_image_extensions_enabled" :
630
- false ,
631
+ false ,
631
632
"communities_web_enable_tweet_community_results_fetch" : true ,
632
633
"c9s_tweet_anatomy_moderator_badge_enabled" : true ,
633
634
"articles_preview_enabled" : true ,
@@ -641,7 +642,7 @@ class UserApi {
641
642
"freedom_of_speech_not_reach_fetch_enabled" : true ,
642
643
"standardized_nudges_misinfo" : true ,
643
644
"tweet_with_visibility_results_prefer_gql_limited_actions_policy_enabled" :
644
- true ,
645
+ true ,
645
646
"rweb_video_timestamps_enabled" : true ,
646
647
"longform_notetweets_rich_text_read_enabled" : true ,
647
648
"longform_notetweets_inline_media_enabled" : true ,
@@ -662,8 +663,7 @@ class UserApi {
662
663
message: 'Success' ,
663
664
);
664
665
} catch (e, t) {
665
- ILogger .error (
666
- "Twitee" , "Failed to get follower you know list" , e, t);
666
+ ILogger .error ("Twitee" , "Failed to get follower you know list" , e, t);
667
667
return ResponseResult .error (message: e.toString ());
668
668
}
669
669
}
@@ -846,7 +846,6 @@ class UserApi {
846
846
}
847
847
}
848
848
849
-
850
849
static Future <ResponseResult > getUserHighlights ({
851
850
required String userId,
852
851
int count = 20 ,
@@ -873,7 +872,7 @@ class UserApi {
873
872
"creator_subscriptions_tweet_preview_api_enabled" : true ,
874
873
"responsive_web_graphql_timeline_navigation_enabled" : true ,
875
874
"responsive_web_graphql_skip_user_profile_image_extensions_enabled" :
876
- false ,
875
+ false ,
877
876
"communities_web_enable_tweet_community_results_fetch" : true ,
878
877
"c9s_tweet_anatomy_moderator_badge_enabled" : true ,
879
878
"articles_preview_enabled" : true ,
@@ -887,7 +886,7 @@ class UserApi {
887
886
"freedom_of_speech_not_reach_fetch_enabled" : true ,
888
887
"standardized_nudges_misinfo" : true ,
889
888
"tweet_with_visibility_results_prefer_gql_limited_actions_policy_enabled" :
890
- true ,
889
+ true ,
891
890
"rweb_video_timestamps_enabled" : true ,
892
891
"longform_notetweets_rich_text_read_enabled" : true ,
893
892
"longform_notetweets_inline_media_enabled" : true ,
@@ -1067,13 +1066,13 @@ class UserApi {
1067
1066
"creator_subscriptions_tweet_preview_api_enabled" : true ,
1068
1067
"responsive_web_graphql_timeline_navigation_enabled" : true ,
1069
1068
"responsive_web_graphql_skip_user_profile_image_extensions_enabled" :
1070
- false ,
1069
+ false ,
1071
1070
"communities_web_enable_tweet_community_results_fetch" : true ,
1072
1071
"c9s_tweet_anatomy_moderator_badge_enabled" : true ,
1073
1072
"articles_preview_enabled" : true ,
1074
1073
"responsive_web_edit_tweet_api_enabled" : true ,
1075
1074
"graphql_is_translatable_rweb_tweet_is_translatable_enabled" :
1076
- true ,
1075
+ true ,
1077
1076
"view_counts_everywhere_api_enabled" : true ,
1078
1077
"longform_notetweets_consumption_enabled" : true ,
1079
1078
"responsive_web_twitter_article_tweet_consumption_enabled" : true ,
@@ -1082,7 +1081,7 @@ class UserApi {
1082
1081
"freedom_of_speech_not_reach_fetch_enabled" : true ,
1083
1082
"standardized_nudges_misinfo" : true ,
1084
1083
"tweet_with_visibility_results_prefer_gql_limited_actions_policy_enabled" :
1085
- true ,
1084
+ true ,
1086
1085
"rweb_video_timestamps_enabled" : true ,
1087
1086
"longform_notetweets_rich_text_read_enabled" : true ,
1088
1087
"longform_notetweets_inline_media_enabled" : true ,
@@ -1133,13 +1132,13 @@ class UserApi {
1133
1132
"creator_subscriptions_tweet_preview_api_enabled" : true ,
1134
1133
"responsive_web_graphql_timeline_navigation_enabled" : true ,
1135
1134
"responsive_web_graphql_skip_user_profile_image_extensions_enabled" :
1136
- false ,
1135
+ false ,
1137
1136
"communities_web_enable_tweet_community_results_fetch" : true ,
1138
1137
"c9s_tweet_anatomy_moderator_badge_enabled" : true ,
1139
1138
"articles_preview_enabled" : true ,
1140
1139
"responsive_web_edit_tweet_api_enabled" : true ,
1141
1140
"graphql_is_translatable_rweb_tweet_is_translatable_enabled" :
1142
- true ,
1141
+ true ,
1143
1142
"view_counts_everywhere_api_enabled" : true ,
1144
1143
"longform_notetweets_consumption_enabled" : true ,
1145
1144
"responsive_web_twitter_article_tweet_consumption_enabled" : true ,
@@ -1148,7 +1147,7 @@ class UserApi {
1148
1147
"freedom_of_speech_not_reach_fetch_enabled" : true ,
1149
1148
"standardized_nudges_misinfo" : true ,
1150
1149
"tweet_with_visibility_results_prefer_gql_limited_actions_policy_enabled" :
1151
- true ,
1150
+ true ,
1152
1151
"rweb_video_timestamps_enabled" : true ,
1153
1152
"longform_notetweets_rich_text_read_enabled" : true ,
1154
1153
"longform_notetweets_inline_media_enabled" : true ,
@@ -1166,13 +1165,45 @@ class UserApi {
1166
1165
}
1167
1166
final data = response.data;
1168
1167
return ResponseResult .success (
1169
- data: Timeline .fromJson (
1170
- data[ 'data' ][ 'user' ][ 'result' ] ['viewing_other_users_topics_page' ]['body' ]['timeline' ]),
1168
+ data: Timeline .fromJson (data[ 'data' ][ 'user' ][ 'result' ]
1169
+ ['viewing_other_users_topics_page' ]['body' ]['timeline' ]),
1171
1170
message: 'Success' ,
1172
1171
);
1173
1172
} catch (e, t) {
1174
1173
ILogger .error ("Twitee" , "Failed to get topics" , e, t);
1175
1174
return ResponseResult .error (message: e.toString ());
1176
1175
}
1177
1176
}
1177
+
1178
+ static Future <ResponseResult > translateProfile ({
1179
+ required String userId,
1180
+ required String destinationLanguage,
1181
+ }) async {
1182
+ try {
1183
+ ILogger .info ("Twitee API" , "Translating" );
1184
+ final response = await RequestUtil .get (
1185
+ "/strato/column/None/profileUserId=$userId ,destinationLanguage=None,translationSource=Some(Google)/translation/service/translateProfile" ,
1186
+ domainType: DomainType .v1,
1187
+ forceCsrfToken: true ,
1188
+ );
1189
+ if (response == null || response.statusCode != 200 ) {
1190
+ return ResponseResult .error (
1191
+ message: "Failed to translate" ,
1192
+ data: response? .data,
1193
+ statusCode: response? .statusCode ?? 500 ,
1194
+ );
1195
+ }
1196
+ final data = response.data;
1197
+ return ResponseResult .success (
1198
+ data: TranslationResult .fromJson (data['profileTranslation' ]),
1199
+ message: 'Success' ,
1200
+ );
1201
+ } catch (e, t) {
1202
+ if (e is DioException && e.response? .statusCode == 404 ) {
1203
+ return ResponseResult .error (code: 404 , message: 'Success' );
1204
+ }
1205
+ ILogger .error ("Twitee" , "Failed to translate" , e, t);
1206
+ return ResponseResult .error (message: e.toString ());
1207
+ }
1208
+ }
1178
1209
}
0 commit comments