mirror of
https://github.com/MaintainTeam/LastPipeBender.git
synced 2025-03-01 05:48:22 +03:00
implemented ReturnYouTubeDislike
This commit is contained in:
parent
b088c109a5
commit
b99ca864c2
12 changed files with 343 additions and 2 deletions
|
@ -117,6 +117,7 @@ import org.schabi.newpipe.util.ListHelper;
|
||||||
import org.schabi.newpipe.util.Localization;
|
import org.schabi.newpipe.util.Localization;
|
||||||
import org.schabi.newpipe.util.NavigationHelper;
|
import org.schabi.newpipe.util.NavigationHelper;
|
||||||
import org.schabi.newpipe.util.PermissionHelper;
|
import org.schabi.newpipe.util.PermissionHelper;
|
||||||
|
import org.schabi.newpipe.extractor.returnyoutubedislike.ReturnYouTubeDislikeInfo;
|
||||||
import org.schabi.newpipe.util.PlayButtonHelper;
|
import org.schabi.newpipe.util.PlayButtonHelper;
|
||||||
import org.schabi.newpipe.util.SponsorBlockMode;
|
import org.schabi.newpipe.util.SponsorBlockMode;
|
||||||
import org.schabi.newpipe.util.StreamTypeUtil;
|
import org.schabi.newpipe.util.StreamTypeUtil;
|
||||||
|
@ -1518,6 +1519,8 @@ public final class VideoDetailFragment
|
||||||
public void handleResult(@NonNull final StreamInfo info) {
|
public void handleResult(@NonNull final StreamInfo info) {
|
||||||
super.handleResult(info);
|
super.handleResult(info);
|
||||||
|
|
||||||
|
final SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(activity);
|
||||||
|
|
||||||
currentInfo = info;
|
currentInfo = info;
|
||||||
setInitialData(info.getServiceId(), info.getOriginalUrl(), info.getName(), playQueue);
|
setInitialData(info.getServiceId(), info.getOriginalUrl(), info.getName(), playQueue);
|
||||||
|
|
||||||
|
@ -1534,6 +1537,14 @@ public final class VideoDetailFragment
|
||||||
displayUploaderAsSubChannel(info);
|
displayUploaderAsSubChannel(info);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
final ReturnYouTubeDislikeInfo rydInfo = info.getRydInfo();
|
||||||
|
final boolean isRydEnabled = prefs.getBoolean(
|
||||||
|
getString(R.string.return_youtube_dislike_enable_key), true);
|
||||||
|
final boolean overrideLikeCount = prefs.getBoolean(
|
||||||
|
getString(R.string.return_youtube_dislike_override_like_count_key), true);
|
||||||
|
final boolean overrideViewCount = prefs.getBoolean(
|
||||||
|
getString(R.string.return_youtube_dislike_override_view_count_key), true);
|
||||||
|
|
||||||
if (info.getViewCount() >= 0) {
|
if (info.getViewCount() >= 0) {
|
||||||
if (info.getStreamType().equals(StreamType.AUDIO_LIVE_STREAM)) {
|
if (info.getStreamType().equals(StreamType.AUDIO_LIVE_STREAM)) {
|
||||||
binding.detailViewCountView.setText(Localization.listeningCount(activity,
|
binding.detailViewCountView.setText(Localization.listeningCount(activity,
|
||||||
|
@ -1550,6 +1561,12 @@ public final class VideoDetailFragment
|
||||||
binding.detailViewCountView.setVisibility(View.GONE);
|
binding.detailViewCountView.setVisibility(View.GONE);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// RYD override: views
|
||||||
|
if (rydInfo != null && isRydEnabled && overrideViewCount) {
|
||||||
|
binding.detailViewCountView.setText(Localization
|
||||||
|
.localizeViewCount(activity, rydInfo.viewCount));
|
||||||
|
}
|
||||||
|
|
||||||
if (info.getDislikeCount() == -1 && info.getLikeCount() == -1) {
|
if (info.getDislikeCount() == -1 && info.getLikeCount() == -1) {
|
||||||
binding.detailThumbsDownImgView.setVisibility(View.VISIBLE);
|
binding.detailThumbsDownImgView.setVisibility(View.VISIBLE);
|
||||||
binding.detailThumbsUpImgView.setVisibility(View.VISIBLE);
|
binding.detailThumbsUpImgView.setVisibility(View.VISIBLE);
|
||||||
|
@ -1568,6 +1585,14 @@ public final class VideoDetailFragment
|
||||||
binding.detailThumbsDownImgView.setVisibility(View.GONE);
|
binding.detailThumbsDownImgView.setVisibility(View.GONE);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// RYD override: dislikes
|
||||||
|
if (rydInfo != null && isRydEnabled) {
|
||||||
|
binding.detailThumbsDownCountView.setText(Localization
|
||||||
|
.shortCount(activity, rydInfo.dislikes));
|
||||||
|
binding.detailThumbsDownCountView.setVisibility(View.VISIBLE);
|
||||||
|
binding.detailThumbsDownImgView.setVisibility(View.VISIBLE);
|
||||||
|
}
|
||||||
|
|
||||||
if (info.getLikeCount() >= 0) {
|
if (info.getLikeCount() >= 0) {
|
||||||
binding.detailThumbsUpCountView.setText(Localization.shortCount(activity,
|
binding.detailThumbsUpCountView.setText(Localization.shortCount(activity,
|
||||||
info.getLikeCount()));
|
info.getLikeCount()));
|
||||||
|
@ -1577,6 +1602,15 @@ public final class VideoDetailFragment
|
||||||
binding.detailThumbsUpCountView.setVisibility(View.GONE);
|
binding.detailThumbsUpCountView.setVisibility(View.GONE);
|
||||||
binding.detailThumbsUpImgView.setVisibility(View.GONE);
|
binding.detailThumbsUpImgView.setVisibility(View.GONE);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// RYD override: likes
|
||||||
|
if (rydInfo != null && isRydEnabled && overrideLikeCount) {
|
||||||
|
binding.detailThumbsUpCountView.setText(Localization
|
||||||
|
.shortCount(activity, rydInfo.likes));
|
||||||
|
binding.detailThumbsUpCountView.setVisibility(View.VISIBLE);
|
||||||
|
binding.detailThumbsUpImgView.setVisibility(View.VISIBLE);
|
||||||
|
}
|
||||||
|
|
||||||
binding.detailThumbsDisabledView.setVisibility(View.GONE);
|
binding.detailThumbsDisabledView.setVisibility(View.GONE);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -65,6 +65,7 @@ public final class NewPipeSettings {
|
||||||
PreferenceManager.setDefaultValues(context, R.xml.debug_settings, true);
|
PreferenceManager.setDefaultValues(context, R.xml.debug_settings, true);
|
||||||
PreferenceManager.setDefaultValues(context, R.xml.sponsor_block_settings, true);
|
PreferenceManager.setDefaultValues(context, R.xml.sponsor_block_settings, true);
|
||||||
PreferenceManager.setDefaultValues(context, R.xml.sponsor_block_category_settings, true);
|
PreferenceManager.setDefaultValues(context, R.xml.sponsor_block_category_settings, true);
|
||||||
|
PreferenceManager.setDefaultValues(context, R.xml.return_youtube_dislikes_settings, true);
|
||||||
|
|
||||||
saveDefaultVideoDownloadDirectory(context);
|
saveDefaultVideoDownloadDirectory(context);
|
||||||
saveDefaultAudioDownloadDirectory(context);
|
saveDefaultAudioDownloadDirectory(context);
|
||||||
|
|
|
@ -0,0 +1,35 @@
|
||||||
|
package org.schabi.newpipe.settings;
|
||||||
|
|
||||||
|
import android.content.Intent;
|
||||||
|
import android.net.Uri;
|
||||||
|
import android.os.Bundle;
|
||||||
|
|
||||||
|
import androidx.preference.Preference;
|
||||||
|
|
||||||
|
import org.schabi.newpipe.R;
|
||||||
|
|
||||||
|
public class ReturnYouTubeDislikeSettingsFragment extends BasePreferenceFragment {
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onCreatePreferences(final Bundle savedInstanceState, final String rootKey) {
|
||||||
|
addPreferencesFromResourceRegistry();
|
||||||
|
|
||||||
|
final Preference rydWebsitePreference =
|
||||||
|
findPreference(getString(R.string.return_youtube_dislike_home_page_key));
|
||||||
|
rydWebsitePreference.setOnPreferenceClickListener((Preference p) -> {
|
||||||
|
final Intent i = new Intent(Intent.ACTION_VIEW,
|
||||||
|
Uri.parse(getString(R.string.return_youtube_dislike_home_page_url)));
|
||||||
|
startActivity(i);
|
||||||
|
return true;
|
||||||
|
});
|
||||||
|
|
||||||
|
final Preference rydSecurityFaqPreference =
|
||||||
|
findPreference(getString(R.string.return_youtube_dislike_security_faq_key));
|
||||||
|
rydSecurityFaqPreference.setOnPreferenceClickListener((Preference p) -> {
|
||||||
|
final Intent i = new Intent(Intent.ACTION_VIEW,
|
||||||
|
Uri.parse(getString(R.string.return_youtube_dislike_security_faq_url)));
|
||||||
|
startActivity(i);
|
||||||
|
return true;
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
|
@ -43,6 +43,7 @@ public final class SettingsResourceRegistry {
|
||||||
add(ExoPlayerSettingsFragment.class, R.xml.exoplayer_settings);
|
add(ExoPlayerSettingsFragment.class, R.xml.exoplayer_settings);
|
||||||
add(SponsorBlockSettingsFragment.class, R.xml.sponsor_block_settings);
|
add(SponsorBlockSettingsFragment.class, R.xml.sponsor_block_settings);
|
||||||
add(SponsorBlockCategoriesSettingsFragment.class, R.xml.sponsor_block_category_settings);
|
add(SponsorBlockCategoriesSettingsFragment.class, R.xml.sponsor_block_category_settings);
|
||||||
|
add(ReturnYouTubeDislikeSettingsFragment.class, R.xml.return_youtube_dislikes_settings);
|
||||||
}
|
}
|
||||||
|
|
||||||
private SettingRegistryEntry add(
|
private SettingRegistryEntry add(
|
||||||
|
|
|
@ -0,0 +1,105 @@
|
||||||
|
package org.schabi.newpipe.settings.custom;
|
||||||
|
|
||||||
|
import android.content.Context;
|
||||||
|
import android.content.Intent;
|
||||||
|
import android.content.SharedPreferences;
|
||||||
|
import android.content.res.TypedArray;
|
||||||
|
import android.net.Uri;
|
||||||
|
import android.util.AttributeSet;
|
||||||
|
import android.view.LayoutInflater;
|
||||||
|
import android.view.View;
|
||||||
|
import android.view.inputmethod.InputMethodManager;
|
||||||
|
import android.widget.EditText;
|
||||||
|
|
||||||
|
import androidx.annotation.NonNull;
|
||||||
|
import androidx.annotation.Nullable;
|
||||||
|
import androidx.appcompat.app.AlertDialog;
|
||||||
|
import androidx.preference.Preference;
|
||||||
|
|
||||||
|
import org.schabi.newpipe.R;
|
||||||
|
|
||||||
|
public class ReturnYouTubeDislikeApiUrlPreference extends Preference {
|
||||||
|
public ReturnYouTubeDislikeApiUrlPreference(final Context context, final AttributeSet attrs) {
|
||||||
|
super(context, attrs);
|
||||||
|
}
|
||||||
|
@Override
|
||||||
|
protected void onSetInitialValue(@Nullable final Object defaultValue) {
|
||||||
|
// apparently this is how you're supposed to respect default values for a custom preference
|
||||||
|
persistString(getPersistedString((String) defaultValue));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Nullable
|
||||||
|
@Override
|
||||||
|
protected Object onGetDefaultValue(@NonNull final TypedArray a, final int index) {
|
||||||
|
return a.getString(index);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected void onClick() {
|
||||||
|
super.onClick();
|
||||||
|
|
||||||
|
final Context context = getContext();
|
||||||
|
|
||||||
|
final String apiUrl = getPersistedString(null);
|
||||||
|
|
||||||
|
final View alertDialogView = LayoutInflater.from(context)
|
||||||
|
.inflate(R.layout.dialog_return_youtube_dislike_api_url, null);
|
||||||
|
|
||||||
|
final EditText editText = alertDialogView.findViewById(R.id.api_url_edit);
|
||||||
|
editText.setText(apiUrl);
|
||||||
|
editText.setOnFocusChangeListener((v, hasFocus) -> editText.post(() -> {
|
||||||
|
final InputMethodManager inputMethodManager = (InputMethodManager) context
|
||||||
|
.getSystemService(Context.INPUT_METHOD_SERVICE);
|
||||||
|
inputMethodManager
|
||||||
|
.showSoftInput(editText, InputMethodManager.SHOW_IMPLICIT);
|
||||||
|
}));
|
||||||
|
editText.requestFocus();
|
||||||
|
|
||||||
|
alertDialogView.findViewById(R.id.icon_api_url_help)
|
||||||
|
.setOnClickListener(v -> {
|
||||||
|
final Uri privacyPolicyUri = Uri.parse(context
|
||||||
|
.getString(R.string.return_youtube_dislike_security_faq_url));
|
||||||
|
final View helpDialogView = LayoutInflater.from(context)
|
||||||
|
.inflate(
|
||||||
|
R.layout.dialog_return_youtube_dislike_api_url_help, null);
|
||||||
|
final View privacyPolicyButton = helpDialogView
|
||||||
|
.findViewById(R.id.return_youtube_dislike_security_faq_button);
|
||||||
|
privacyPolicyButton.setOnClickListener(v1 -> {
|
||||||
|
final Intent i = new Intent(Intent.ACTION_VIEW, privacyPolicyUri);
|
||||||
|
context.startActivity(i);
|
||||||
|
});
|
||||||
|
|
||||||
|
new AlertDialog.Builder(context)
|
||||||
|
.setView(helpDialogView)
|
||||||
|
.setPositiveButton("Use Official", (dialog, which) -> {
|
||||||
|
editText.setText(context.getString(
|
||||||
|
R.string.return_youtube_dislike_default_api_url));
|
||||||
|
dialog.dismiss();
|
||||||
|
})
|
||||||
|
.setNeutralButton("Close", (dialog, which) -> dialog.dismiss())
|
||||||
|
.create()
|
||||||
|
.show();
|
||||||
|
});
|
||||||
|
|
||||||
|
final AlertDialog alertDialog =
|
||||||
|
new AlertDialog.Builder(context)
|
||||||
|
.setView(alertDialogView)
|
||||||
|
.setTitle(context.getString(R.string.return_youtube_dislike_api_url_title))
|
||||||
|
.setPositiveButton("OK", (dialog, which) -> {
|
||||||
|
final String newValue = editText.getText().toString();
|
||||||
|
if (!newValue.isEmpty()) {
|
||||||
|
final SharedPreferences.Editor editor =
|
||||||
|
getPreferenceManager().getSharedPreferences().edit();
|
||||||
|
editor.putString(getKey(), newValue);
|
||||||
|
editor.apply();
|
||||||
|
|
||||||
|
callChangeListener(newValue);
|
||||||
|
}
|
||||||
|
dialog.dismiss();
|
||||||
|
})
|
||||||
|
.setNegativeButton("Cancel", (dialog, which) -> dialog.cancel())
|
||||||
|
.create();
|
||||||
|
|
||||||
|
alertDialog.show();
|
||||||
|
}
|
||||||
|
}
|
|
@ -47,6 +47,7 @@ import org.schabi.newpipe.extractor.comments.CommentsInfoItem;
|
||||||
import org.schabi.newpipe.extractor.kiosk.KioskInfo;
|
import org.schabi.newpipe.extractor.kiosk.KioskInfo;
|
||||||
import org.schabi.newpipe.extractor.linkhandler.ListLinkHandler;
|
import org.schabi.newpipe.extractor.linkhandler.ListLinkHandler;
|
||||||
import org.schabi.newpipe.extractor.playlist.PlaylistInfo;
|
import org.schabi.newpipe.extractor.playlist.PlaylistInfo;
|
||||||
|
import org.schabi.newpipe.extractor.returnyoutubedislike.ReturnYouTubeDislikeApiSettings;
|
||||||
import org.schabi.newpipe.extractor.search.SearchInfo;
|
import org.schabi.newpipe.extractor.search.SearchInfo;
|
||||||
import org.schabi.newpipe.extractor.sponsorblock.SponsorBlockApiSettings;
|
import org.schabi.newpipe.extractor.sponsorblock.SponsorBlockApiSettings;
|
||||||
import org.schabi.newpipe.extractor.stream.StreamInfo;
|
import org.schabi.newpipe.extractor.stream.StreamInfo;
|
||||||
|
@ -121,10 +122,31 @@ public final class ExtractorHelper {
|
||||||
Single.fromCallable(() -> StreamInfo.getInfo(
|
Single.fromCallable(() -> StreamInfo.getInfo(
|
||||||
NewPipe.getService(serviceId),
|
NewPipe.getService(serviceId),
|
||||||
url,
|
url,
|
||||||
buildSponsorBlockApiSettings(context))));
|
buildSponsorBlockApiSettings(context),
|
||||||
|
buildReturnYouTubeDislikeApiSettings(context))));
|
||||||
}
|
}
|
||||||
|
|
||||||
public static Single<ChannelInfo> getChannelInfo(final int serviceId, final String url,
|
private static ReturnYouTubeDislikeApiSettings buildReturnYouTubeDislikeApiSettings(
|
||||||
|
final Context context) {
|
||||||
|
final SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(context);
|
||||||
|
|
||||||
|
final boolean isRydEnabled = prefs.getBoolean(context
|
||||||
|
.getString(R.string.return_youtube_dislike_enable_key), false);
|
||||||
|
|
||||||
|
if (!isRydEnabled) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
final ReturnYouTubeDislikeApiSettings result = new ReturnYouTubeDislikeApiSettings();
|
||||||
|
result.apiUrl =
|
||||||
|
prefs.getString(
|
||||||
|
context.getString(R.string.return_youtube_dislike_api_url_key), null);
|
||||||
|
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static Single<ChannelInfo> getChannelInfo(final int serviceId,
|
||||||
|
final String url,
|
||||||
final boolean forceLoad) {
|
final boolean forceLoad) {
|
||||||
checkServiceId(serviceId);
|
checkServiceId(serviceId);
|
||||||
return checkCache(forceLoad, serviceId, url, InfoItem.InfoType.CHANNEL,
|
return checkCache(forceLoad, serviceId, url, InfoItem.InfoType.CHANNEL,
|
||||||
|
|
|
@ -0,0 +1,33 @@
|
||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
xmlns:app="http://schemas.android.com/apk/res-auto"
|
||||||
|
android:clickable="false"
|
||||||
|
android:paddingLeft="@dimen/video_item_search_padding"
|
||||||
|
android:paddingRight="@dimen/video_item_search_padding"
|
||||||
|
android:paddingTop="@dimen/video_item_search_padding">
|
||||||
|
<EditText
|
||||||
|
android:id="@+id/api_url_edit"
|
||||||
|
android:layout_width="0dp"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_marginBottom="6dp"
|
||||||
|
android:layout_marginLeft="10dp"
|
||||||
|
android:layout_marginRight="10dp"
|
||||||
|
android:layout_weight="1"
|
||||||
|
android:saveEnabled="true"
|
||||||
|
android:inputType="textUri"
|
||||||
|
android:maxLines="1"
|
||||||
|
android:importantForAutofill="no"
|
||||||
|
android:hint="https://domain.com/"/>
|
||||||
|
<androidx.appcompat.widget.AppCompatImageButton
|
||||||
|
android:id="@+id/icon_api_url_help"
|
||||||
|
android:layout_width="32dp"
|
||||||
|
android:layout_height="32dp"
|
||||||
|
android:layout_gravity="center"
|
||||||
|
android:clickable="true"
|
||||||
|
android:focusable="true"
|
||||||
|
app:srcCompat="@drawable/ic_help"
|
||||||
|
android:background="?attr/selectableItemBackground"
|
||||||
|
android:tint="?attr/colorAccent"/>
|
||||||
|
</LinearLayout>
|
|
@ -0,0 +1,25 @@
|
||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:orientation="vertical"
|
||||||
|
android:clickable="false"
|
||||||
|
android:paddingLeft="@dimen/video_item_search_padding"
|
||||||
|
android:paddingRight="@dimen/video_item_search_padding"
|
||||||
|
android:paddingTop="@dimen/video_item_search_padding">
|
||||||
|
<TextView
|
||||||
|
android:id="@+id/api_url_edit"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_weight="1"
|
||||||
|
android:layout_marginBottom="6dp"
|
||||||
|
android:layout_marginLeft="10dp"
|
||||||
|
android:layout_marginRight="10dp"
|
||||||
|
android:text="@string/return_youtube_dislike_api_url_help_text"/>
|
||||||
|
<Button
|
||||||
|
android:id="@+id/return_youtube_dislike_security_faq_button"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_weight="1"
|
||||||
|
android:text="@string/return_youtube_dislike_privacy_policy_text"/>
|
||||||
|
</LinearLayout>
|
|
@ -1498,4 +1498,12 @@
|
||||||
<string name="sponsor_block_category_pending_key" translatable="false">sponsor_block_category_pending_key</string>
|
<string name="sponsor_block_category_pending_key" translatable="false">sponsor_block_category_pending_key</string>
|
||||||
<string name="sponsor_block_category_pending_color_key" translatable="false">sponsor_block_category_pending_color_key</string>
|
<string name="sponsor_block_category_pending_color_key" translatable="false">sponsor_block_category_pending_color_key</string>
|
||||||
<string name="sponsor_block_clear_whitelist_key" translatable="false">sponsor_block_clear_whitelist</string>
|
<string name="sponsor_block_clear_whitelist_key" translatable="false">sponsor_block_clear_whitelist</string>
|
||||||
|
|
||||||
|
<!-- ReturnYouTubeDislike -->
|
||||||
|
<string name="return_youtube_dislike_home_page_key" translatable="false">return_youtube_dislike_home_page</string>
|
||||||
|
<string name="return_youtube_dislike_security_faq_key" translatable="false">return_youtube_dislike_security_faq</string>
|
||||||
|
<string name="return_youtube_dislike_enable_key" translatable="false">return_youtube_dislike_enable</string>
|
||||||
|
<string name="return_youtube_dislike_api_url_key" translatable="false">return_youtube_dislike_api_url</string>
|
||||||
|
<string name="return_youtube_dislike_override_like_count_key" translatable="false">return_youtube_dislike_override_like_count</string>
|
||||||
|
<string name="return_youtube_dislike_override_view_count_key" translatable="false">return_youtube_dislike_override_view_count</string>
|
||||||
</resources>
|
</resources>
|
||||||
|
|
|
@ -929,4 +929,22 @@
|
||||||
<string name="description_up_vote_segment">Up-vote segment</string>
|
<string name="description_up_vote_segment">Up-vote segment</string>
|
||||||
<string name="description_down_vote_segment">Down-vote segment</string>
|
<string name="description_down_vote_segment">Down-vote segment</string>
|
||||||
<string name="description_skip_to_highlight">Skip to highlight</string>
|
<string name="description_skip_to_highlight">Skip to highlight</string>
|
||||||
|
<!-- ReturnYouTubeDislike -->
|
||||||
|
<string name="return_youtube_dislike_home_page_title">View Website</string>
|
||||||
|
<string name="return_youtube_dislike_home_page_summary">View the official ReturnYouTubeDislike website.</string>
|
||||||
|
<string name="return_youtube_dislike_security_faq_title">View Security FAQ</string>
|
||||||
|
<string name="return_youtube_dislike_security_faq_summary">If you care about your privacy, it is recommended that you view ReturnYouTubeDislike\'s FAQ about security and what they track.</string>
|
||||||
|
<string name="return_youtube_dislike_enable_title">Enable ReturnYouTubeDislike</string>
|
||||||
|
<string name="return_youtube_dislike_enable_summary">Use the ReturnYouTubeDislike API to show the amount of dislikes for a video. This only works for YouTube videos.</string>
|
||||||
|
<string name="return_youtube_dislike_default_api_url">https://returnyoutubedislikeapi.com/</string>
|
||||||
|
<string name="return_youtube_dislike_api_url_title">API Url</string>
|
||||||
|
<string name="return_youtube_dislike_api_url_summary">The url to use when querying the ReturnYouTubeDislike API. This must be set for ReturnYouTubeDislike to work.</string>
|
||||||
|
<string name="return_youtube_dislike_api_url_help_text">This is the URL that will be queried when the application determines the dislike count on a YouTube video.\n\nYou can set the official URL by clicking the \'Use Official\' option below, though it is highly recommended you view ReturnYouTubeDislike\'s security FAQ before you do.</string>
|
||||||
|
<string name="return_youtube_dislike_override_like_count_title">Override Like Count</string>
|
||||||
|
<string name="return_youtube_dislike_override_like_count_summary">Use the like count reported by the ReturnYouTubeDislike API instead of YouTube\'s.</string>
|
||||||
|
<string name="return_youtube_dislike_override_view_count_title">Override View Count</string>
|
||||||
|
<string name="return_youtube_dislike_override_view_count_summary">Use the view count reported by the ReturnYouTubeDislike API instead of YouTube\'s.</string>
|
||||||
|
<string name="return_youtube_dislike_privacy_policy_text">ReturnYouTubeDislike Security FAQ</string>
|
||||||
|
<string name="return_youtube_dislike_home_page_url">https://returnyoutubedislike.com/</string>
|
||||||
|
<string name="return_youtube_dislike_security_faq_url">https://www.returnyoutubedislike.com/faq/</string>
|
||||||
</resources>
|
</resources>
|
||||||
|
|
|
@ -53,6 +53,12 @@
|
||||||
android:title="@string/sponsor_block"
|
android:title="@string/sponsor_block"
|
||||||
app:iconSpaceReserved="false" />
|
app:iconSpaceReserved="false" />
|
||||||
|
|
||||||
|
<PreferenceScreen
|
||||||
|
android:fragment="org.schabi.newpipe.settings.ReturnYouTubeDislikeSettingsFragment"
|
||||||
|
android:icon="@drawable/ic_thumb_down"
|
||||||
|
android:title="ReturnYouTubeDislike"
|
||||||
|
app:iconSpaceReserved="false" />
|
||||||
|
|
||||||
<PreferenceScreen
|
<PreferenceScreen
|
||||||
android:fragment="org.schabi.newpipe.settings.DebugSettingsFragment"
|
android:fragment="org.schabi.newpipe.settings.DebugSettingsFragment"
|
||||||
android:icon="@drawable/ic_bug_report"
|
android:icon="@drawable/ic_bug_report"
|
||||||
|
|
53
app/src/main/res/xml/return_youtube_dislikes_settings.xml
Normal file
53
app/src/main/res/xml/return_youtube_dislikes_settings.xml
Normal file
|
@ -0,0 +1,53 @@
|
||||||
|
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
|
xmlns:app="http://schemas.android.com/apk/res-auto"
|
||||||
|
android:title="ReturnYouTubeDislike">
|
||||||
|
<Preference
|
||||||
|
app:iconSpaceReserved="false"
|
||||||
|
android:key="@string/return_youtube_dislike_home_page_key"
|
||||||
|
android:summary="@string/return_youtube_dislike_home_page_summary"
|
||||||
|
android:title="@string/return_youtube_dislike_home_page_title"/>
|
||||||
|
|
||||||
|
<Preference
|
||||||
|
app:iconSpaceReserved="false"
|
||||||
|
android:key="@string/return_youtube_dislike_security_faq_key"
|
||||||
|
android:summary="@string/return_youtube_dislike_security_faq_summary"
|
||||||
|
android:title="@string/return_youtube_dislike_security_faq_title"/>
|
||||||
|
|
||||||
|
<PreferenceCategory
|
||||||
|
android:layout="@layout/settings_category_header_layout"
|
||||||
|
android:title="@string/settings">
|
||||||
|
|
||||||
|
<SwitchPreference
|
||||||
|
app:iconSpaceReserved="false"
|
||||||
|
android:defaultValue="true"
|
||||||
|
android:key="@string/return_youtube_dislike_enable_key"
|
||||||
|
android:summary="@string/return_youtube_dislike_enable_summary"
|
||||||
|
android:title="@string/return_youtube_dislike_enable_title"/>
|
||||||
|
|
||||||
|
<org.schabi.newpipe.settings.custom.ReturnYouTubeDislikeApiUrlPreference
|
||||||
|
app:iconSpaceReserved="false"
|
||||||
|
android:dependency="@string/return_youtube_dislike_enable_key"
|
||||||
|
android:defaultValue="@string/return_youtube_dislike_default_api_url"
|
||||||
|
android:key="@string/return_youtube_dislike_api_url_key"
|
||||||
|
android:summary="@string/return_youtube_dislike_api_url_summary"
|
||||||
|
android:title="@string/return_youtube_dislike_api_url_title"/>
|
||||||
|
|
||||||
|
<SwitchPreference
|
||||||
|
app:iconSpaceReserved="false"
|
||||||
|
android:dependency="@string/return_youtube_dislike_enable_key"
|
||||||
|
android:defaultValue="true"
|
||||||
|
android:key="@string/return_youtube_dislike_override_like_count_key"
|
||||||
|
android:summary="@string/return_youtube_dislike_override_like_count_summary"
|
||||||
|
android:title="@string/return_youtube_dislike_override_like_count_title"/>
|
||||||
|
|
||||||
|
<SwitchPreference
|
||||||
|
app:iconSpaceReserved="false"
|
||||||
|
android:dependency="@string/return_youtube_dislike_enable_key"
|
||||||
|
android:defaultValue="true"
|
||||||
|
android:key="@string/return_youtube_dislike_override_view_count_key"
|
||||||
|
android:summary="@string/return_youtube_dislike_override_view_count_summary"
|
||||||
|
android:title="@string/return_youtube_dislike_override_view_count_title"/>
|
||||||
|
|
||||||
|
</PreferenceCategory>
|
||||||
|
|
||||||
|
</PreferenceScreen>
|
Loading…
Add table
Reference in a new issue