Skip to content

Commit 9451167

Browse files
committed
searchfilters: rework getTranslatedFilterString() method to use NewPipeExtractor's LibraryStringIds class
1 parent 8858e7e commit 9451167

3 files changed

Lines changed: 304 additions & 47 deletions

File tree

app/src/main/java/org/schabi/newpipe/util/ServiceHelper.java

Lines changed: 181 additions & 46 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,8 @@
11
package org.schabi.newpipe.util;
22

3-
import static org.schabi.newpipe.extractor.ServiceList.SoundCloud;
4-
53
import android.content.Context;
64
import 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-
146
import com.grack.nanojson.JsonObject;
157
import com.grack.nanojson.JsonParser;
168
import com.grack.nanojson.JsonParserException;
@@ -20,15 +12,182 @@
2012
import org.schabi.newpipe.extractor.ServiceList;
2113
import org.schabi.newpipe.extractor.StreamingService;
2214
import org.schabi.newpipe.extractor.exceptions.ExtractionException;
15+
import org.schabi.newpipe.extractor.search.filter.LibraryStringIds;
2316
import org.schabi.newpipe.extractor.services.peertube.PeertubeInstance;
2417

18+
import java.util.EnumMap;
19+
import java.util.Map;
20+
import java.util.Objects;
2521
import java.util.Optional;
2622
import 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+
2832
public 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
}

app/src/main/res/values-de/strings.xml

Lines changed: 61 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -806,4 +806,64 @@
806806
<string name="share_playlist">Wiedergabeliste teilen</string>
807807
<string name="share_playlist_with_titles_message">Teile die Wiedergabeliste mit Details wie dem Namen der Wiedergabeliste und den Videotiteln oder als einfache Liste von Video-URLs</string>
808808
<string name="video_details_list_item">- %1$s: %2$s</string>
809-
</resources>
809+
<string name="filter_search_sort_filters">Sortierfilter</string>
810+
<string name="filter_search_content_filters">Inhaltsfilter</string>
811+
<string name="search_filters_10_30_min">10–30 min</string>
812+
<string name="search_filters_2_10_min">2–10 min</string>
813+
<string name="search_filters_360">360°</string>
814+
<string name="search_filters_3d">3D</string>
815+
<string name="search_filters_4_20_min">4–20 min</string>
816+
<string name="search_filters_4k">4K</string>
817+
<string name="search_filters_added">Hinzugefügt</string>
818+
<string name="search_filters_artists_and_labels">Künstler &amp; Labels</string>
819+
<string name="search_filters_any_time">Jederzeit</string>
820+
<string name="search_filters_ascending">Aufsteigend</string>
821+
<string name="search_filters_ccommons">Creative Commons</string>
822+
<string name="search_filters_creation_date">Erstellungsdatum</string>
823+
<string name="search_filters_date">Datum</string>
824+
<string name="search_filters_duration">Dauer</string>
825+
<string name="search_filters_features">Eigenschaften</string>
826+
<string name="search_filters_greater_30_min">&gt; 30 min</string>
827+
<string name="search_filters_hd">HD</string>
828+
<string name="search_filters_hdr">HDR</string>
829+
<string name="search_filters_kind">Art</string>
830+
<string name="search_filters_last_30_days">Letzte 30 Tage</string>
831+
<string name="search_filters_last_7_days">Letzte 7 Tage</string>
832+
<string name="search_filters_last_hour">Letzte Stunde</string>
833+
<string name="search_filters_last_year">Letztes Jahr</string>
834+
<string name="search_filters_length">Länge</string>
835+
<string name="search_filters_less_2_min">&lt; 2 min</string>
836+
<string name="search_filters_license">Lizenz</string>
837+
<string name="search_filters_location">Standort</string>
838+
<string name="search_filters_long_greater_10_min">Lang (&gt; 10 min)</string>
839+
<string name="search_filters_medium_4_10_min">Mittel (4–10 min)</string>
840+
<string name="search_filters_no">Nein</string>
841+
<string name="search_filters_over_20_min">Über 20 min</string>
842+
<string name="search_filters_past_day">Vorheriger Tag</string>
843+
<string name="search_filters_past_hour">Vorige Stunde</string>
844+
<string name="search_filters_past_month">Vergangener Monat</string>
845+
<string name="search_filters_past_week">Vergangene Woche</string>
846+
<string name="search_filters_past_year">Vergangenes Jahr</string>
847+
<string name="search_filters_publish_date">Erscheinungsdatum</string>
848+
<string name="search_filters_published">Veröffentlicht</string>
849+
<string name="search_filters_purchased">Gekauft</string>
850+
<string name="search_filters_rating">Bewertung</string>
851+
<string name="search_filters_relevance">Relevanz</string>
852+
<string name="search_filters_sensitive">Sensibler Inhalt</string>
853+
<string name="search_filters_sepiasearch">SepiaSuche</string>
854+
<string name="search_filters_short_less_4_min">Kurz (&lt; 4 min)</string>
855+
<string name="search_filters_sort_by">Sortiert nach</string>
856+
<string name="search_filters_sort_order">Sortierung</string>
857+
<string name="search_filters_subtitles">Untertitel</string>
858+
<string name="search_filters_to_modify_commercially">Gewerblich nutzbar</string>
859+
<string name="search_filters_today">Heute</string>
860+
<string name="search_filters_under_4_min">Unter 4 min</string>
861+
<string name="search_filters_upload_date">Hochladedatum</string>
862+
<string name="search_filters_views">Aufrufe</string>
863+
<string name="search_filters_vod_videos">VOD-Videos</string>
864+
<string name="search_filters_vr180">VR180</string>
865+
<string name="search_filters_this_month">Dieser Monat</string>
866+
<string name="search_filters_this_week">Diese Woche</string>
867+
<string name="search_filters_this_year">Dieses Jahr</string>
868+
<string name="search_filters_yes">Ja</string>
869+
</resources>

0 commit comments

Comments
 (0)