searchfilters: rework getTranslatedFilterString() method to use NewPipeExtractor's LibraryStringIds class

This commit is contained in:
evermind 2022-10-31 23:12:16 +01:00
parent 8858e7e3a7
commit 94511671cf
3 changed files with 304 additions and 47 deletions

View File

@ -1,16 +1,8 @@
package org.schabi.newpipe.util;
import static org.schabi.newpipe.extractor.ServiceList.SoundCloud;
import android.content.Context;
import android.content.SharedPreferences;
import androidx.annotation.DrawableRes;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.annotation.StringRes;
import androidx.preference.PreferenceManager;
import com.grack.nanojson.JsonObject;
import com.grack.nanojson.JsonParser;
import com.grack.nanojson.JsonParserException;
@ -20,15 +12,182 @@ import org.schabi.newpipe.extractor.NewPipe;
import org.schabi.newpipe.extractor.ServiceList;
import org.schabi.newpipe.extractor.StreamingService;
import org.schabi.newpipe.extractor.exceptions.ExtractionException;
import org.schabi.newpipe.extractor.search.filter.LibraryStringIds;
import org.schabi.newpipe.extractor.services.peertube.PeertubeInstance;
import java.util.EnumMap;
import java.util.Map;
import java.util.Objects;
import java.util.Optional;
import java.util.concurrent.TimeUnit;
import androidx.annotation.DrawableRes;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.annotation.StringRes;
import androidx.preference.PreferenceManager;
import static org.schabi.newpipe.extractor.ServiceList.SoundCloud;
public final class ServiceHelper {
private static final StreamingService DEFAULT_FALLBACK_SERVICE = ServiceList.YouTube;
/**
* Map all available {@link LibraryStringIds} ids to resource ids available in strings.xml.
*/
private static final Map<LibraryStringIds, Integer> LIBRARY_STRING_ID_TO_RES_ID_MAP =
new EnumMap<>(LibraryStringIds.class);
private ServiceHelper() { }
static {
LIBRARY_STRING_ID_TO_RES_ID_MAP.put(LibraryStringIds.SEARCH_FILTERS_10_30_MIN,
R.string.search_filters_10_30_min);
LIBRARY_STRING_ID_TO_RES_ID_MAP.put(LibraryStringIds.SEARCH_FILTERS_2_10_MIN,
R.string.search_filters_2_10_min);
LIBRARY_STRING_ID_TO_RES_ID_MAP.put(LibraryStringIds.SEARCH_FILTERS_360,
R.string.search_filters_360);
LIBRARY_STRING_ID_TO_RES_ID_MAP.put(LibraryStringIds.SEARCH_FILTERS_3D,
R.string.search_filters_3d);
LIBRARY_STRING_ID_TO_RES_ID_MAP.put(LibraryStringIds.SEARCH_FILTERS_4_20_MIN,
R.string.search_filters_4_20_min);
LIBRARY_STRING_ID_TO_RES_ID_MAP.put(LibraryStringIds.SEARCH_FILTERS_4K,
R.string.search_filters_4k);
LIBRARY_STRING_ID_TO_RES_ID_MAP.put(LibraryStringIds.SEARCH_FILTERS_ADDED,
R.string.search_filters_added);
LIBRARY_STRING_ID_TO_RES_ID_MAP.put(LibraryStringIds.SEARCH_FILTERS_ALBUMS,
R.string.albums);
LIBRARY_STRING_ID_TO_RES_ID_MAP.put(LibraryStringIds.SEARCH_FILTERS_ANY_TIME,
R.string.search_filters_any_time);
LIBRARY_STRING_ID_TO_RES_ID_MAP.put(LibraryStringIds.SEARCH_FILTERS_ALL,
R.string.all);
LIBRARY_STRING_ID_TO_RES_ID_MAP.put(LibraryStringIds.SEARCH_FILTERS_ARTISTS_AND_LABELS,
R.string.search_filters_artists_and_labels);
LIBRARY_STRING_ID_TO_RES_ID_MAP.put(LibraryStringIds.SEARCH_FILTERS_ASCENDING,
R.string.search_filters_ascending);
LIBRARY_STRING_ID_TO_RES_ID_MAP.put(LibraryStringIds.SEARCH_FILTERS_CCOMMONS,
R.string.search_filters_ccommons);
LIBRARY_STRING_ID_TO_RES_ID_MAP.put(LibraryStringIds.SEARCH_FILTERS_CHANNELS,
R.string.channels);
LIBRARY_STRING_ID_TO_RES_ID_MAP.put(LibraryStringIds.SEARCH_FILTERS_CONFERENCES,
R.string.conferences);
LIBRARY_STRING_ID_TO_RES_ID_MAP.put(LibraryStringIds.SEARCH_FILTERS_CREATION_DATE,
R.string.search_filters_creation_date);
LIBRARY_STRING_ID_TO_RES_ID_MAP.put(LibraryStringIds.SEARCH_FILTERS_DATE,
R.string.search_filters_date);
LIBRARY_STRING_ID_TO_RES_ID_MAP.put(LibraryStringIds.SEARCH_FILTERS_DURATION,
R.string.search_filters_duration);
LIBRARY_STRING_ID_TO_RES_ID_MAP.put(LibraryStringIds.SEARCH_FILTERS_EVENTS,
R.string.events);
LIBRARY_STRING_ID_TO_RES_ID_MAP.put(LibraryStringIds.SEARCH_FILTERS_FEATURES,
R.string.search_filters_features);
LIBRARY_STRING_ID_TO_RES_ID_MAP.put(LibraryStringIds.SEARCH_FILTERS_GREATER_30_MIN,
R.string.search_filters_greater_30_min);
LIBRARY_STRING_ID_TO_RES_ID_MAP.put(LibraryStringIds.SEARCH_FILTERS_HD,
R.string.search_filters_hd);
LIBRARY_STRING_ID_TO_RES_ID_MAP.put(LibraryStringIds.SEARCH_FILTERS_HDR,
R.string.search_filters_hdr);
LIBRARY_STRING_ID_TO_RES_ID_MAP.put(LibraryStringIds.SEARCH_FILTERS_KIND,
R.string.search_filters_kind);
LIBRARY_STRING_ID_TO_RES_ID_MAP.put(LibraryStringIds.SEARCH_FILTERS_LAST_30_DAYS,
R.string.search_filters_last_30_days);
LIBRARY_STRING_ID_TO_RES_ID_MAP.put(LibraryStringIds.SEARCH_FILTERS_LAST_7_DAYS,
R.string.search_filters_last_7_days);
LIBRARY_STRING_ID_TO_RES_ID_MAP.put(LibraryStringIds.SEARCH_FILTERS_LAST_HOUR,
R.string.search_filters_last_hour);
LIBRARY_STRING_ID_TO_RES_ID_MAP.put(LibraryStringIds.SEARCH_FILTERS_LAST_YEAR,
R.string.search_filters_last_year);
LIBRARY_STRING_ID_TO_RES_ID_MAP.put(LibraryStringIds.SEARCH_FILTERS_LENGTH,
R.string.search_filters_length);
LIBRARY_STRING_ID_TO_RES_ID_MAP.put(LibraryStringIds.SEARCH_FILTERS_LESS_2_MIN,
R.string.search_filters_less_2_min);
LIBRARY_STRING_ID_TO_RES_ID_MAP.put(LibraryStringIds.SEARCH_FILTERS_LICENSE,
R.string.search_filters_license);
LIBRARY_STRING_ID_TO_RES_ID_MAP.put(LibraryStringIds.SEARCH_FILTERS_LIKES,
R.string.detail_likes_img_view_description);
LIBRARY_STRING_ID_TO_RES_ID_MAP.put(LibraryStringIds.SEARCH_FILTERS_LIVE,
R.string.duration_live);
LIBRARY_STRING_ID_TO_RES_ID_MAP.put(LibraryStringIds.SEARCH_FILTERS_LOCATION,
R.string.search_filters_location);
LIBRARY_STRING_ID_TO_RES_ID_MAP.put(LibraryStringIds.SEARCH_FILTERS_LONG_GREATER_10_MIN,
R.string.search_filters_long_greater_10_min);
LIBRARY_STRING_ID_TO_RES_ID_MAP.put(LibraryStringIds.SEARCH_FILTERS_MEDIUM_4_10_MIN,
R.string.search_filters_medium_4_10_min);
LIBRARY_STRING_ID_TO_RES_ID_MAP.put(LibraryStringIds.SEARCH_FILTERS_THIS_MONTH,
R.string.search_filters_this_month);
LIBRARY_STRING_ID_TO_RES_ID_MAP.put(LibraryStringIds.SEARCH_FILTERS_ARTISTS,
R.string.artists);
LIBRARY_STRING_ID_TO_RES_ID_MAP.put(LibraryStringIds.SEARCH_FILTERS_SONGS,
R.string.songs);
LIBRARY_STRING_ID_TO_RES_ID_MAP.put(LibraryStringIds.SEARCH_FILTERS_NAME,
R.string.name);
LIBRARY_STRING_ID_TO_RES_ID_MAP.put(LibraryStringIds.SEARCH_FILTERS_NO,
R.string.search_filters_no);
LIBRARY_STRING_ID_TO_RES_ID_MAP.put(LibraryStringIds.SEARCH_FILTERS_OVER_20_MIN,
R.string.search_filters_over_20_min);
LIBRARY_STRING_ID_TO_RES_ID_MAP.put(LibraryStringIds.SEARCH_FILTERS_PAST_DAY,
R.string.search_filters_past_day);
LIBRARY_STRING_ID_TO_RES_ID_MAP.put(LibraryStringIds.SEARCH_FILTERS_PAST_HOUR,
R.string.search_filters_past_hour);
LIBRARY_STRING_ID_TO_RES_ID_MAP.put(LibraryStringIds.SEARCH_FILTERS_PAST_MONTH,
R.string.search_filters_past_month);
LIBRARY_STRING_ID_TO_RES_ID_MAP.put(LibraryStringIds.SEARCH_FILTERS_PAST_WEEK,
R.string.search_filters_past_week);
LIBRARY_STRING_ID_TO_RES_ID_MAP.put(LibraryStringIds.SEARCH_FILTERS_PAST_YEAR,
R.string.search_filters_past_year);
LIBRARY_STRING_ID_TO_RES_ID_MAP.put(LibraryStringIds.SEARCH_FILTERS_PLAYLISTS,
R.string.playlists);
LIBRARY_STRING_ID_TO_RES_ID_MAP.put(LibraryStringIds.SEARCH_FILTERS_PUBLISH_DATE,
R.string.search_filters_publish_date);
LIBRARY_STRING_ID_TO_RES_ID_MAP.put(LibraryStringIds.SEARCH_FILTERS_PUBLISHED,
R.string.search_filters_published);
LIBRARY_STRING_ID_TO_RES_ID_MAP.put(LibraryStringIds.SEARCH_FILTERS_PURCHASED,
R.string.search_filters_published);
LIBRARY_STRING_ID_TO_RES_ID_MAP.put(LibraryStringIds.SEARCH_FILTERS_RATING,
R.string.search_filters_rating);
LIBRARY_STRING_ID_TO_RES_ID_MAP.put(LibraryStringIds.SEARCH_FILTERS_RELEVANCE,
R.string.search_filters_relevance);
LIBRARY_STRING_ID_TO_RES_ID_MAP.put(LibraryStringIds.SEARCH_FILTERS_SENSITIVE,
R.string.search_filters_sensitive);
LIBRARY_STRING_ID_TO_RES_ID_MAP.put(LibraryStringIds.SEARCH_FILTERS_SEPIASEARCH,
R.string.search_filters_sepiasearch);
LIBRARY_STRING_ID_TO_RES_ID_MAP.put(LibraryStringIds.SEARCH_FILTERS_SHORT_LESS_4_MIN,
R.string.search_filters_short_less_4_min);
LIBRARY_STRING_ID_TO_RES_ID_MAP.put(LibraryStringIds.SEARCH_FILTERS_SORT_BY,
R.string.search_filters_sort_by);
LIBRARY_STRING_ID_TO_RES_ID_MAP.put(LibraryStringIds.SEARCH_FILTERS_SORT_ORDER,
R.string.search_filters_sort_order);
LIBRARY_STRING_ID_TO_RES_ID_MAP.put(LibraryStringIds.SEARCH_FILTERS_SUBTITLES,
R.string.search_filters_subtitles);
LIBRARY_STRING_ID_TO_RES_ID_MAP.put(LibraryStringIds.SEARCH_FILTERS_TO_MODIFY_COMMERCIALLY,
R.string.search_filters_to_modify_commercially);
LIBRARY_STRING_ID_TO_RES_ID_MAP.put(LibraryStringIds.SEARCH_FILTERS_TODAY,
R.string.search_filters_today);
LIBRARY_STRING_ID_TO_RES_ID_MAP.put(LibraryStringIds.SEARCH_FILTERS_TRACKS,
R.string.tracks);
LIBRARY_STRING_ID_TO_RES_ID_MAP.put(LibraryStringIds.SEARCH_FILTERS_UNDER_4_MIN,
R.string.search_filters_under_4_min);
LIBRARY_STRING_ID_TO_RES_ID_MAP.put(LibraryStringIds.SEARCH_FILTERS_UPLOAD_DATE,
R.string.search_filters_upload_date);
LIBRARY_STRING_ID_TO_RES_ID_MAP.put(LibraryStringIds.SEARCH_FILTERS_USERS,
R.string.users);
LIBRARY_STRING_ID_TO_RES_ID_MAP.put(LibraryStringIds.SEARCH_FILTERS_VIDEOS,
R.string.videos_string);
LIBRARY_STRING_ID_TO_RES_ID_MAP.put(LibraryStringIds.SEARCH_FILTERS_VIEWS,
R.string.search_filters_views);
LIBRARY_STRING_ID_TO_RES_ID_MAP.put(LibraryStringIds.SEARCH_FILTERS_VOD_VIDEOS,
R.string.search_filters_vod_videos);
LIBRARY_STRING_ID_TO_RES_ID_MAP.put(LibraryStringIds.SEARCH_FILTERS_VR180,
R.string.search_filters_vr180);
LIBRARY_STRING_ID_TO_RES_ID_MAP.put(LibraryStringIds.SEARCH_FILTERS_THIS_WEEK,
R.string.search_filters_this_week);
LIBRARY_STRING_ID_TO_RES_ID_MAP.put(LibraryStringIds.SEARCH_FILTERS_THIS_YEAR,
R.string.search_filters_this_year);
LIBRARY_STRING_ID_TO_RES_ID_MAP.put(LibraryStringIds.SEARCH_FILTERS_YES,
R.string.search_filters_yes);
LIBRARY_STRING_ID_TO_RES_ID_MAP.put(LibraryStringIds.SEARCH_FILTERS_YOUTUBE_MUSIC,
R.string.search_filters_youtube_music);
}
private ServiceHelper() {
}
@DrawableRes
public static int getIcon(final int serviceId) {
@ -48,38 +207,6 @@ public final class ServiceHelper {
}
}
public static String getTranslatedFilterString(final String filter, final Context c) {
switch (filter) {
case "all":
return c.getString(R.string.all);
case "videos":
case "sepia_videos":
case "music_videos":
return c.getString(R.string.videos_string);
case "channels":
return c.getString(R.string.channels);
case "playlists":
case "music_playlists":
return c.getString(R.string.playlists);
case "tracks":
return c.getString(R.string.tracks);
case "users":
return c.getString(R.string.users);
case "conferences":
return c.getString(R.string.conferences);
case "events":
return c.getString(R.string.events);
case "music_songs":
return c.getString(R.string.songs);
case "music_albums":
return c.getString(R.string.albums);
case "music_artists":
return c.getString(R.string.artists);
default:
return filter;
}
}
/**
* Get a resource string with instructions for importing subscriptions for each service.
*
@ -107,12 +234,10 @@ public final class ServiceHelper {
*/
@StringRes
public static int getImportInstructionsHint(final int serviceId) {
switch (serviceId) {
case 1:
return R.string.import_soundcloud_instructions_hint;
default:
return -1;
if (serviceId == 1) {
return R.string.import_soundcloud_instructions_hint;
}
return -1;
}
public static int getSelectedServiceId(final Context context) {
@ -210,4 +335,14 @@ public final class ServiceHelper {
initService(context, s.getServiceId());
}
}
public static String getTranslatedFilterString(@NonNull final LibraryStringIds stringId,
@NonNull final Context context) {
if (LIBRARY_STRING_ID_TO_RES_ID_MAP.containsKey(stringId)) {
return context.getString(
Objects.requireNonNull(LIBRARY_STRING_ID_TO_RES_ID_MAP.get(stringId)));
} else {
return stringId.toString();
}
}
}

View File

@ -806,4 +806,64 @@
<string name="share_playlist">Wiedergabeliste teilen</string>
<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>
<string name="video_details_list_item">- %1$s: %2$s</string>
</resources>
<string name="filter_search_sort_filters">Sortierfilter</string>
<string name="filter_search_content_filters">Inhaltsfilter</string>
<string name="search_filters_10_30_min">1030 min</string>
<string name="search_filters_2_10_min">210 min</string>
<string name="search_filters_360">360°</string>
<string name="search_filters_3d">3D</string>
<string name="search_filters_4_20_min">420 min</string>
<string name="search_filters_4k">4K</string>
<string name="search_filters_added">Hinzugefügt</string>
<string name="search_filters_artists_and_labels">Künstler &amp; Labels</string>
<string name="search_filters_any_time">Jederzeit</string>
<string name="search_filters_ascending">Aufsteigend</string>
<string name="search_filters_ccommons">Creative Commons</string>
<string name="search_filters_creation_date">Erstellungsdatum</string>
<string name="search_filters_date">Datum</string>
<string name="search_filters_duration">Dauer</string>
<string name="search_filters_features">Eigenschaften</string>
<string name="search_filters_greater_30_min">&gt; 30 min</string>
<string name="search_filters_hd">HD</string>
<string name="search_filters_hdr">HDR</string>
<string name="search_filters_kind">Art</string>
<string name="search_filters_last_30_days">Letzte 30 Tage</string>
<string name="search_filters_last_7_days">Letzte 7 Tage</string>
<string name="search_filters_last_hour">Letzte Stunde</string>
<string name="search_filters_last_year">Letztes Jahr</string>
<string name="search_filters_length">Länge</string>
<string name="search_filters_less_2_min">&lt; 2 min</string>
<string name="search_filters_license">Lizenz</string>
<string name="search_filters_location">Standort</string>
<string name="search_filters_long_greater_10_min">Lang (&gt; 10 min)</string>
<string name="search_filters_medium_4_10_min">Mittel (410 min)</string>
<string name="search_filters_no">Nein</string>
<string name="search_filters_over_20_min">Über 20 min</string>
<string name="search_filters_past_day">Vorheriger Tag</string>
<string name="search_filters_past_hour">Vorige Stunde</string>
<string name="search_filters_past_month">Vergangener Monat</string>
<string name="search_filters_past_week">Vergangene Woche</string>
<string name="search_filters_past_year">Vergangenes Jahr</string>
<string name="search_filters_publish_date">Erscheinungsdatum</string>
<string name="search_filters_published">Veröffentlicht</string>
<string name="search_filters_purchased">Gekauft</string>
<string name="search_filters_rating">Bewertung</string>
<string name="search_filters_relevance">Relevanz</string>
<string name="search_filters_sensitive">Sensibler Inhalt</string>
<string name="search_filters_sepiasearch">SepiaSuche</string>
<string name="search_filters_short_less_4_min">Kurz (&lt; 4 min)</string>
<string name="search_filters_sort_by">Sortiert nach</string>
<string name="search_filters_sort_order">Sortierung</string>
<string name="search_filters_subtitles">Untertitel</string>
<string name="search_filters_to_modify_commercially">Gewerblich nutzbar</string>
<string name="search_filters_today">Heute</string>
<string name="search_filters_under_4_min">Unter 4 min</string>
<string name="search_filters_upload_date">Hochladedatum</string>
<string name="search_filters_views">Aufrufe</string>
<string name="search_filters_vod_videos">VOD-Videos</string>
<string name="search_filters_vr180">VR180</string>
<string name="search_filters_this_month">Dieser Monat</string>
<string name="search_filters_this_week">Diese Woche</string>
<string name="search_filters_this_year">Dieses Jahr</string>
<string name="search_filters_yes">Ja</string>
</resources>

View File

@ -845,4 +845,66 @@
</plurals>
<string name="show_more">Show more</string>
<string name="show_less">Show less</string>
<!-- begin - strings for search filter feature (NewPipeExtractor Services) -->
<string name="search_filters_10_30_min">1030 min</string>
<string name="search_filters_2_10_min">210 min</string>
<string name="search_filters_360">360°</string>
<string name="search_filters_3d">3D</string>
<string name="search_filters_4_20_min">420 min</string>
<string name="search_filters_4k">4K</string>
<string name="search_filters_added">Added</string>
<string name="search_filters_artists_and_labels">artists &amp; labels</string>
<string name="search_filters_any_time">Any time</string>
<string name="search_filters_ascending">Ascending</string>
<string name="search_filters_ccommons">Creative Commons</string>
<string name="search_filters_creation_date">Creation date</string>
<string name="search_filters_date">Date</string>
<string name="search_filters_duration">Duration</string>
<string name="search_filters_features">Features</string>
<string name="search_filters_greater_30_min">&gt; 30 min</string>
<string name="search_filters_hd">HD</string>
<string name="search_filters_hdr">HDR</string>
<string name="search_filters_kind">Kind</string>
<string name="search_filters_last_30_days">Last 30 days</string>
<string name="search_filters_last_7_days">Last 7 days</string>
<string name="search_filters_last_hour">Last hour</string>
<string name="search_filters_last_year">last year</string>
<string name="search_filters_length">Length</string>
<string name="search_filters_less_2_min">&lt; 2 min</string>
<string name="search_filters_license">License</string>
<string name="search_filters_location">Location</string>
<string name="search_filters_long_greater_10_min">Long (&gt; 10 min)</string>
<string name="search_filters_medium_4_10_min">Medium (410 min)</string>
<string name="search_filters_no">No</string>
<string name="search_filters_over_20_min">Over 20 min</string>
<string name="search_filters_past_day">Past day</string>
<string name="search_filters_past_hour">Past hour</string>
<string name="search_filters_past_month">Past month</string>
<string name="search_filters_past_week">Past week</string>
<string name="search_filters_past_year">Past year</string>
<string name="search_filters_publish_date">Publish date</string>
<string name="search_filters_published">Published</string>
<string name="search_filters_purchased">Purchased</string>
<string name="search_filters_rating">Rating</string>
<string name="search_filters_relevance">Relevance</string>
<string name="search_filters_sensitive">Sensitive</string>
<string name="search_filters_sepiasearch">SepiaSearch</string>
<string name="search_filters_short_less_4_min">Short (&lt; 4 min)</string>
<string name="search_filters_sort_by">Sort by</string>
<string name="search_filters_sort_order">Sort order</string>
<string name="search_filters_subtitles">Subtitles</string>
<string name="search_filters_to_modify_commercially">To modify commercially</string>
<string name="search_filters_today">Today</string>
<string name="search_filters_under_4_min">Under 4 min</string>
<string name="search_filters_upload_date">Upload Date</string>
<string name="search_filters_views">Views</string>
<string name="search_filters_vod_videos">VOD videos</string>
<string name="search_filters_vr180">VR180</string>
<string name="search_filters_this_month">This month</string>
<string name="search_filters_this_week">This week</string>
<string name="search_filters_this_year">This year</string>
<string name="search_filters_yes">Yes</string>
<string name="search_filters_youtube_music">YouTube Music</string>
<!-- end - strings for search filter feature (NewPipeExtractor Services) -->
</resources>