11package org .schabi .newpipe .util ;
22
3- import static org .schabi .newpipe .extractor .ServiceList .SoundCloud ;
4-
53import android .content .Context ;
64import android .content .SharedPreferences ;
75
8- import androidx .annotation .DrawableRes ;
9- import androidx .annotation .NonNull ;
10- import androidx .annotation .Nullable ;
11- import androidx .annotation .StringRes ;
12- import androidx .preference .PreferenceManager ;
13-
146import com .grack .nanojson .JsonObject ;
157import com .grack .nanojson .JsonParser ;
168import com .grack .nanojson .JsonParserException ;
2012import org .schabi .newpipe .extractor .ServiceList ;
2113import org .schabi .newpipe .extractor .StreamingService ;
2214import org .schabi .newpipe .extractor .exceptions .ExtractionException ;
15+ import org .schabi .newpipe .extractor .search .filter .LibraryStringIds ;
2316import org .schabi .newpipe .extractor .services .peertube .PeertubeInstance ;
2417
18+ import java .util .EnumMap ;
19+ import java .util .Map ;
20+ import java .util .Objects ;
2521import java .util .Optional ;
2622import java .util .concurrent .TimeUnit ;
2723
24+ import androidx .annotation .DrawableRes ;
25+ import androidx .annotation .NonNull ;
26+ import androidx .annotation .Nullable ;
27+ import androidx .annotation .StringRes ;
28+ import androidx .preference .PreferenceManager ;
29+
30+ import static org .schabi .newpipe .extractor .ServiceList .SoundCloud ;
31+
2832public final class ServiceHelper {
2933 private static final StreamingService DEFAULT_FALLBACK_SERVICE = ServiceList .YouTube ;
34+ /**
35+ * Map all available {@link LibraryStringIds} ids to resource ids available in strings.xml.
36+ */
37+ private static final Map <LibraryStringIds , Integer > LIBRARY_STRING_ID_TO_RES_ID_MAP =
38+ new EnumMap <>(LibraryStringIds .class );
39+
40+ static {
41+ LIBRARY_STRING_ID_TO_RES_ID_MAP .put (LibraryStringIds .SEARCH_FILTERS_10_30_MIN ,
42+ R .string .search_filters_10_30_min );
43+ LIBRARY_STRING_ID_TO_RES_ID_MAP .put (LibraryStringIds .SEARCH_FILTERS_2_10_MIN ,
44+ R .string .search_filters_2_10_min );
45+ LIBRARY_STRING_ID_TO_RES_ID_MAP .put (LibraryStringIds .SEARCH_FILTERS_360 ,
46+ R .string .search_filters_360 );
47+ LIBRARY_STRING_ID_TO_RES_ID_MAP .put (LibraryStringIds .SEARCH_FILTERS_3D ,
48+ R .string .search_filters_3d );
49+ LIBRARY_STRING_ID_TO_RES_ID_MAP .put (LibraryStringIds .SEARCH_FILTERS_4_20_MIN ,
50+ R .string .search_filters_4_20_min );
51+ LIBRARY_STRING_ID_TO_RES_ID_MAP .put (LibraryStringIds .SEARCH_FILTERS_4K ,
52+ R .string .search_filters_4k );
53+ LIBRARY_STRING_ID_TO_RES_ID_MAP .put (LibraryStringIds .SEARCH_FILTERS_ADDED ,
54+ R .string .search_filters_added );
55+ LIBRARY_STRING_ID_TO_RES_ID_MAP .put (LibraryStringIds .SEARCH_FILTERS_ALBUMS ,
56+ R .string .albums );
57+ LIBRARY_STRING_ID_TO_RES_ID_MAP .put (LibraryStringIds .SEARCH_FILTERS_ANY_TIME ,
58+ R .string .search_filters_any_time );
59+ LIBRARY_STRING_ID_TO_RES_ID_MAP .put (LibraryStringIds .SEARCH_FILTERS_ALL ,
60+ R .string .all );
61+ LIBRARY_STRING_ID_TO_RES_ID_MAP .put (LibraryStringIds .SEARCH_FILTERS_ARTISTS_AND_LABELS ,
62+ R .string .search_filters_artists_and_labels );
63+ LIBRARY_STRING_ID_TO_RES_ID_MAP .put (LibraryStringIds .SEARCH_FILTERS_ASCENDING ,
64+ R .string .search_filters_ascending );
65+ LIBRARY_STRING_ID_TO_RES_ID_MAP .put (LibraryStringIds .SEARCH_FILTERS_CCOMMONS ,
66+ R .string .search_filters_ccommons );
67+ LIBRARY_STRING_ID_TO_RES_ID_MAP .put (LibraryStringIds .SEARCH_FILTERS_CHANNELS ,
68+ R .string .channels );
69+ LIBRARY_STRING_ID_TO_RES_ID_MAP .put (LibraryStringIds .SEARCH_FILTERS_CONFERENCES ,
70+ R .string .conferences );
71+ LIBRARY_STRING_ID_TO_RES_ID_MAP .put (LibraryStringIds .SEARCH_FILTERS_CREATION_DATE ,
72+ R .string .search_filters_creation_date );
73+ LIBRARY_STRING_ID_TO_RES_ID_MAP .put (LibraryStringIds .SEARCH_FILTERS_DATE ,
74+ R .string .search_filters_date );
75+ LIBRARY_STRING_ID_TO_RES_ID_MAP .put (LibraryStringIds .SEARCH_FILTERS_DURATION ,
76+ R .string .search_filters_duration );
77+ LIBRARY_STRING_ID_TO_RES_ID_MAP .put (LibraryStringIds .SEARCH_FILTERS_EVENTS ,
78+ R .string .events );
79+ LIBRARY_STRING_ID_TO_RES_ID_MAP .put (LibraryStringIds .SEARCH_FILTERS_FEATURES ,
80+ R .string .search_filters_features );
81+ LIBRARY_STRING_ID_TO_RES_ID_MAP .put (LibraryStringIds .SEARCH_FILTERS_GREATER_30_MIN ,
82+ R .string .search_filters_greater_30_min );
83+ LIBRARY_STRING_ID_TO_RES_ID_MAP .put (LibraryStringIds .SEARCH_FILTERS_HD ,
84+ R .string .search_filters_hd );
85+ LIBRARY_STRING_ID_TO_RES_ID_MAP .put (LibraryStringIds .SEARCH_FILTERS_HDR ,
86+ R .string .search_filters_hdr );
87+ LIBRARY_STRING_ID_TO_RES_ID_MAP .put (LibraryStringIds .SEARCH_FILTERS_KIND ,
88+ R .string .search_filters_kind );
89+ LIBRARY_STRING_ID_TO_RES_ID_MAP .put (LibraryStringIds .SEARCH_FILTERS_LAST_30_DAYS ,
90+ R .string .search_filters_last_30_days );
91+ LIBRARY_STRING_ID_TO_RES_ID_MAP .put (LibraryStringIds .SEARCH_FILTERS_LAST_7_DAYS ,
92+ R .string .search_filters_last_7_days );
93+ LIBRARY_STRING_ID_TO_RES_ID_MAP .put (LibraryStringIds .SEARCH_FILTERS_LAST_HOUR ,
94+ R .string .search_filters_last_hour );
95+ LIBRARY_STRING_ID_TO_RES_ID_MAP .put (LibraryStringIds .SEARCH_FILTERS_LAST_YEAR ,
96+ R .string .search_filters_last_year );
97+ LIBRARY_STRING_ID_TO_RES_ID_MAP .put (LibraryStringIds .SEARCH_FILTERS_LENGTH ,
98+ R .string .search_filters_length );
99+ LIBRARY_STRING_ID_TO_RES_ID_MAP .put (LibraryStringIds .SEARCH_FILTERS_LESS_2_MIN ,
100+ R .string .search_filters_less_2_min );
101+ LIBRARY_STRING_ID_TO_RES_ID_MAP .put (LibraryStringIds .SEARCH_FILTERS_LICENSE ,
102+ R .string .search_filters_license );
103+ LIBRARY_STRING_ID_TO_RES_ID_MAP .put (LibraryStringIds .SEARCH_FILTERS_LIKES ,
104+ R .string .detail_likes_img_view_description );
105+ LIBRARY_STRING_ID_TO_RES_ID_MAP .put (LibraryStringIds .SEARCH_FILTERS_LIVE ,
106+ R .string .duration_live );
107+ LIBRARY_STRING_ID_TO_RES_ID_MAP .put (LibraryStringIds .SEARCH_FILTERS_LOCATION ,
108+ R .string .search_filters_location );
109+ LIBRARY_STRING_ID_TO_RES_ID_MAP .put (LibraryStringIds .SEARCH_FILTERS_LONG_GREATER_10_MIN ,
110+ R .string .search_filters_long_greater_10_min );
111+ LIBRARY_STRING_ID_TO_RES_ID_MAP .put (LibraryStringIds .SEARCH_FILTERS_MEDIUM_4_10_MIN ,
112+ R .string .search_filters_medium_4_10_min );
113+ LIBRARY_STRING_ID_TO_RES_ID_MAP .put (LibraryStringIds .SEARCH_FILTERS_THIS_MONTH ,
114+ R .string .search_filters_this_month );
115+ LIBRARY_STRING_ID_TO_RES_ID_MAP .put (LibraryStringIds .SEARCH_FILTERS_ARTISTS ,
116+ R .string .artists );
117+ LIBRARY_STRING_ID_TO_RES_ID_MAP .put (LibraryStringIds .SEARCH_FILTERS_SONGS ,
118+ R .string .songs );
119+ LIBRARY_STRING_ID_TO_RES_ID_MAP .put (LibraryStringIds .SEARCH_FILTERS_NAME ,
120+ R .string .name );
121+ LIBRARY_STRING_ID_TO_RES_ID_MAP .put (LibraryStringIds .SEARCH_FILTERS_NO ,
122+ R .string .search_filters_no );
123+ LIBRARY_STRING_ID_TO_RES_ID_MAP .put (LibraryStringIds .SEARCH_FILTERS_OVER_20_MIN ,
124+ R .string .search_filters_over_20_min );
125+ LIBRARY_STRING_ID_TO_RES_ID_MAP .put (LibraryStringIds .SEARCH_FILTERS_PAST_DAY ,
126+ R .string .search_filters_past_day );
127+ LIBRARY_STRING_ID_TO_RES_ID_MAP .put (LibraryStringIds .SEARCH_FILTERS_PAST_HOUR ,
128+ R .string .search_filters_past_hour );
129+ LIBRARY_STRING_ID_TO_RES_ID_MAP .put (LibraryStringIds .SEARCH_FILTERS_PAST_MONTH ,
130+ R .string .search_filters_past_month );
131+ LIBRARY_STRING_ID_TO_RES_ID_MAP .put (LibraryStringIds .SEARCH_FILTERS_PAST_WEEK ,
132+ R .string .search_filters_past_week );
133+ LIBRARY_STRING_ID_TO_RES_ID_MAP .put (LibraryStringIds .SEARCH_FILTERS_PAST_YEAR ,
134+ R .string .search_filters_past_year );
135+ LIBRARY_STRING_ID_TO_RES_ID_MAP .put (LibraryStringIds .SEARCH_FILTERS_PLAYLISTS ,
136+ R .string .playlists );
137+ LIBRARY_STRING_ID_TO_RES_ID_MAP .put (LibraryStringIds .SEARCH_FILTERS_PUBLISH_DATE ,
138+ R .string .search_filters_publish_date );
139+ LIBRARY_STRING_ID_TO_RES_ID_MAP .put (LibraryStringIds .SEARCH_FILTERS_PUBLISHED ,
140+ R .string .search_filters_published );
141+ LIBRARY_STRING_ID_TO_RES_ID_MAP .put (LibraryStringIds .SEARCH_FILTERS_PURCHASED ,
142+ R .string .search_filters_published );
143+ LIBRARY_STRING_ID_TO_RES_ID_MAP .put (LibraryStringIds .SEARCH_FILTERS_RATING ,
144+ R .string .search_filters_rating );
145+ LIBRARY_STRING_ID_TO_RES_ID_MAP .put (LibraryStringIds .SEARCH_FILTERS_RELEVANCE ,
146+ R .string .search_filters_relevance );
147+ LIBRARY_STRING_ID_TO_RES_ID_MAP .put (LibraryStringIds .SEARCH_FILTERS_SENSITIVE ,
148+ R .string .search_filters_sensitive );
149+ LIBRARY_STRING_ID_TO_RES_ID_MAP .put (LibraryStringIds .SEARCH_FILTERS_SEPIASEARCH ,
150+ R .string .search_filters_sepiasearch );
151+ LIBRARY_STRING_ID_TO_RES_ID_MAP .put (LibraryStringIds .SEARCH_FILTERS_SHORT_LESS_4_MIN ,
152+ R .string .search_filters_short_less_4_min );
153+ LIBRARY_STRING_ID_TO_RES_ID_MAP .put (LibraryStringIds .SEARCH_FILTERS_SORT_BY ,
154+ R .string .search_filters_sort_by );
155+ LIBRARY_STRING_ID_TO_RES_ID_MAP .put (LibraryStringIds .SEARCH_FILTERS_SORT_ORDER ,
156+ R .string .search_filters_sort_order );
157+ LIBRARY_STRING_ID_TO_RES_ID_MAP .put (LibraryStringIds .SEARCH_FILTERS_SUBTITLES ,
158+ R .string .search_filters_subtitles );
159+ LIBRARY_STRING_ID_TO_RES_ID_MAP .put (LibraryStringIds .SEARCH_FILTERS_TO_MODIFY_COMMERCIALLY ,
160+ R .string .search_filters_to_modify_commercially );
161+ LIBRARY_STRING_ID_TO_RES_ID_MAP .put (LibraryStringIds .SEARCH_FILTERS_TODAY ,
162+ R .string .search_filters_today );
163+ LIBRARY_STRING_ID_TO_RES_ID_MAP .put (LibraryStringIds .SEARCH_FILTERS_TRACKS ,
164+ R .string .tracks );
165+ LIBRARY_STRING_ID_TO_RES_ID_MAP .put (LibraryStringIds .SEARCH_FILTERS_UNDER_4_MIN ,
166+ R .string .search_filters_under_4_min );
167+ LIBRARY_STRING_ID_TO_RES_ID_MAP .put (LibraryStringIds .SEARCH_FILTERS_UPLOAD_DATE ,
168+ R .string .search_filters_upload_date );
169+ LIBRARY_STRING_ID_TO_RES_ID_MAP .put (LibraryStringIds .SEARCH_FILTERS_USERS ,
170+ R .string .users );
171+ LIBRARY_STRING_ID_TO_RES_ID_MAP .put (LibraryStringIds .SEARCH_FILTERS_VIDEOS ,
172+ R .string .videos_string );
173+ LIBRARY_STRING_ID_TO_RES_ID_MAP .put (LibraryStringIds .SEARCH_FILTERS_VIEWS ,
174+ R .string .search_filters_views );
175+ LIBRARY_STRING_ID_TO_RES_ID_MAP .put (LibraryStringIds .SEARCH_FILTERS_VOD_VIDEOS ,
176+ R .string .search_filters_vod_videos );
177+ LIBRARY_STRING_ID_TO_RES_ID_MAP .put (LibraryStringIds .SEARCH_FILTERS_VR180 ,
178+ R .string .search_filters_vr180 );
179+ LIBRARY_STRING_ID_TO_RES_ID_MAP .put (LibraryStringIds .SEARCH_FILTERS_THIS_WEEK ,
180+ R .string .search_filters_this_week );
181+ LIBRARY_STRING_ID_TO_RES_ID_MAP .put (LibraryStringIds .SEARCH_FILTERS_THIS_YEAR ,
182+ R .string .search_filters_this_year );
183+ LIBRARY_STRING_ID_TO_RES_ID_MAP .put (LibraryStringIds .SEARCH_FILTERS_YES ,
184+ R .string .search_filters_yes );
185+ LIBRARY_STRING_ID_TO_RES_ID_MAP .put (LibraryStringIds .SEARCH_FILTERS_YOUTUBE_MUSIC ,
186+ R .string .search_filters_youtube_music );
187+ }
30188
31- private ServiceHelper () { }
189+ private ServiceHelper () {
190+ }
32191
33192 @ DrawableRes
34193 public static int getIcon (final int serviceId ) {
@@ -48,38 +207,6 @@ public static int getIcon(final int serviceId) {
48207 }
49208 }
50209
51- public static String getTranslatedFilterString (final String filter , final Context c ) {
52- switch (filter ) {
53- case "all" :
54- return c .getString (R .string .all );
55- case "videos" :
56- case "sepia_videos" :
57- case "music_videos" :
58- return c .getString (R .string .videos_string );
59- case "channels" :
60- return c .getString (R .string .channels );
61- case "playlists" :
62- case "music_playlists" :
63- return c .getString (R .string .playlists );
64- case "tracks" :
65- return c .getString (R .string .tracks );
66- case "users" :
67- return c .getString (R .string .users );
68- case "conferences" :
69- return c .getString (R .string .conferences );
70- case "events" :
71- return c .getString (R .string .events );
72- case "music_songs" :
73- return c .getString (R .string .songs );
74- case "music_albums" :
75- return c .getString (R .string .albums );
76- case "music_artists" :
77- return c .getString (R .string .artists );
78- default :
79- return filter ;
80- }
81- }
82-
83210 /**
84211 * Get a resource string with instructions for importing subscriptions for each service.
85212 *
@@ -107,12 +234,10 @@ public static int getImportInstructions(final int serviceId) {
107234 */
108235 @ StringRes
109236 public static int getImportInstructionsHint (final int serviceId ) {
110- switch (serviceId ) {
111- case 1 :
112- return R .string .import_soundcloud_instructions_hint ;
113- default :
114- return -1 ;
237+ if (serviceId == 1 ) {
238+ return R .string .import_soundcloud_instructions_hint ;
115239 }
240+ return -1 ;
116241 }
117242
118243 public static int getSelectedServiceId (final Context context ) {
@@ -210,4 +335,14 @@ public static void initServices(final Context context) {
210335 initService (context , s .getServiceId ());
211336 }
212337 }
338+
339+ public static String getTranslatedFilterString (@ NonNull final LibraryStringIds stringId ,
340+ @ NonNull final Context context ) {
341+ if (LIBRARY_STRING_ID_TO_RES_ID_MAP .containsKey (stringId )) {
342+ return context .getString (
343+ Objects .requireNonNull (LIBRARY_STRING_ID_TO_RES_ID_MAP .get (stringId )));
344+ } else {
345+ return stringId .toString ();
346+ }
347+ }
213348}
0 commit comments