mirror of
				https://github.com/TeamNewPipe/NewPipe
				synced 2025-10-29 22:32:59 +00:00 
			
		
		
		
	Merge pull request #3044 from B0pol/tubepeer
Description fix and some PeerTube fixes
This commit is contained in:
		| @@ -53,6 +53,7 @@ ext { | |||||||
|     okHttpLibVersion = '3.12.6' |     okHttpLibVersion = '3.12.6' | ||||||
|     icepickLibVersion = '3.2.0' |     icepickLibVersion = '3.2.0' | ||||||
|     stethoLibVersion = '1.5.0' |     stethoLibVersion = '1.5.0' | ||||||
|  |     markwonVersion = '4.2.1' | ||||||
| } | } | ||||||
|  |  | ||||||
| dependencies { | dependencies { | ||||||
| @@ -62,7 +63,7 @@ dependencies { | |||||||
|         exclude module: 'support-annotations' |         exclude module: 'support-annotations' | ||||||
|     }) |     }) | ||||||
|  |  | ||||||
|     implementation 'com.github.TeamNewPipe:NewPipeExtractor:ff61e284' |     implementation 'com.github.TeamNewPipe:NewPipeExtractor:9112a10' | ||||||
|     testImplementation 'junit:junit:4.12' |     testImplementation 'junit:junit:4.12' | ||||||
|     testImplementation 'org.mockito:mockito-core:2.23.0' |     testImplementation 'org.mockito:mockito-core:2.23.0' | ||||||
|  |  | ||||||
| @@ -108,4 +109,7 @@ dependencies { | |||||||
|  |  | ||||||
|     implementation "com.squareup.okhttp3:okhttp:${okHttpLibVersion}" |     implementation "com.squareup.okhttp3:okhttp:${okHttpLibVersion}" | ||||||
|     debugImplementation "com.facebook.stetho:stetho-okhttp3:${stethoLibVersion}" |     debugImplementation "com.facebook.stetho:stetho-okhttp3:${stethoLibVersion}" | ||||||
|  |  | ||||||
|  |     implementation "io.noties.markwon:core:${markwonVersion}" | ||||||
|  |     implementation "io.noties.markwon:linkify:${markwonVersion}" | ||||||
| } | } | ||||||
|   | |||||||
| @@ -32,18 +32,20 @@ public class AboutActivity extends AppCompatActivity { | |||||||
|      * List of all software components |      * List of all software components | ||||||
|      */ |      */ | ||||||
|     private static final SoftwareComponent[] SOFTWARE_COMPONENTS = new SoftwareComponent[]{ |     private static final SoftwareComponent[] SOFTWARE_COMPONENTS = new SoftwareComponent[]{ | ||||||
|             new SoftwareComponent("Giga Get", "2014", "Peter Cai", "https://github.com/PaperAirplane-Dev-Team/GigaGet", StandardLicenses.GPL2), |             new SoftwareComponent("Giga Get", "2014 - 2015", "Peter Cai", "https://github.com/PaperAirplane-Dev-Team/GigaGet", StandardLicenses.GPL2), | ||||||
|             new SoftwareComponent("NewPipe Extractor", "2017", "Christian Schabesberger", "https://github.com/TeamNewPipe/NewPipeExtractor", StandardLicenses.GPL3), |             new SoftwareComponent("NewPipe Extractor", "2017 - 2020", "Christian Schabesberger", "https://github.com/TeamNewPipe/NewPipeExtractor", StandardLicenses.GPL3), | ||||||
|             new SoftwareComponent("Jsoup", "2017", "Jonathan Hedley", "https://github.com/jhy/jsoup", StandardLicenses.MIT), |             new SoftwareComponent("Jsoup", "2017", "Jonathan Hedley", "https://github.com/jhy/jsoup", StandardLicenses.MIT), | ||||||
|             new SoftwareComponent("Rhino", "2015", "Mozilla", "https://www.mozilla.org/rhino/", StandardLicenses.MPL2), |             new SoftwareComponent("Rhino", "2015", "Mozilla", "https://www.mozilla.org/rhino/", StandardLicenses.MPL2), | ||||||
|             new SoftwareComponent("ACRA", "2013", "Kevin Gaudin", "http://www.acra.ch", StandardLicenses.APACHE2), |             new SoftwareComponent("ACRA", "2013", "Kevin Gaudin", "http://www.acra.ch", StandardLicenses.APACHE2), | ||||||
|             new SoftwareComponent("Universal Image Loader", "2011 - 2015", "Sergey Tarasevich", "https://github.com/nostra13/Android-Universal-Image-Loader", StandardLicenses.APACHE2), |             new SoftwareComponent("Universal Image Loader", "2011 - 2015", "Sergey Tarasevich", "https://github.com/nostra13/Android-Universal-Image-Loader", StandardLicenses.APACHE2), | ||||||
|             new SoftwareComponent("CircleImageView", "2014 - 2017", "Henning Dodenhof", "https://github.com/hdodenhof/CircleImageView", StandardLicenses.APACHE2), |             new SoftwareComponent("CircleImageView", "2014 - 2020", "Henning Dodenhof", "https://github.com/hdodenhof/CircleImageView", StandardLicenses.APACHE2), | ||||||
|             new SoftwareComponent("NoNonsense-FilePicker", "2016", "Jonas Kalderstam", "https://github.com/spacecowboy/NoNonsense-FilePicker", StandardLicenses.MPL2), |             new SoftwareComponent("NoNonsense-FilePicker", "2016", "Jonas Kalderstam", "https://github.com/spacecowboy/NoNonsense-FilePicker", StandardLicenses.MPL2), | ||||||
|             new SoftwareComponent("ExoPlayer", "2014-2017", "Google Inc", "https://github.com/google/ExoPlayer", StandardLicenses.APACHE2), |             new SoftwareComponent("ExoPlayer", "2014 - 2020", "Google Inc", "https://github.com/google/ExoPlayer", StandardLicenses.APACHE2), | ||||||
|             new SoftwareComponent("RxAndroid", "2015", "The RxAndroid authors", "https://github.com/ReactiveX/RxAndroid", StandardLicenses.APACHE2), |             new SoftwareComponent("RxAndroid", "2015 - 2018", "The RxAndroid authors", "https://github.com/ReactiveX/RxAndroid", StandardLicenses.APACHE2), | ||||||
|             new SoftwareComponent("RxJava", "2016-present", "RxJava Contributors", "https://github.com/ReactiveX/RxJava", StandardLicenses.APACHE2), |             new SoftwareComponent("RxJava", "2016 - 2020", "RxJava Contributors", "https://github.com/ReactiveX/RxJava", StandardLicenses.APACHE2), | ||||||
|             new SoftwareComponent("RxBinding", "2015", "Jake Wharton", "https://github.com/JakeWharton/RxBinding", StandardLicenses.APACHE2) |             new SoftwareComponent("RxBinding", "2015 - 2018", "Jake Wharton", "https://github.com/JakeWharton/RxBinding", StandardLicenses.APACHE2), | ||||||
|  |             new SoftwareComponent("PrettyTime", "2012 - 2020", "Lincoln Baxter, III", "https://github.com/ocpsoft/prettytime", StandardLicenses.APACHE2), | ||||||
|  |             new SoftwareComponent("Markwon", "2017 - 2020", "Noties", "https://github.com/noties/Markwon", StandardLicenses.APACHE2) | ||||||
|     }; |     }; | ||||||
|  |  | ||||||
|     /** |     /** | ||||||
|   | |||||||
| @@ -2,7 +2,6 @@ package org.schabi.newpipe.fragments.detail; | |||||||
|  |  | ||||||
| import android.app.Activity; | import android.app.Activity; | ||||||
| import android.content.Context; | import android.content.Context; | ||||||
| import android.content.DialogInterface; |  | ||||||
| import android.content.Intent; | import android.content.Intent; | ||||||
| import android.content.SharedPreferences; | import android.content.SharedPreferences; | ||||||
| import android.net.Uri; | import android.net.Uri; | ||||||
| @@ -18,7 +17,6 @@ import androidx.fragment.app.Fragment; | |||||||
| import androidx.core.content.ContextCompat; | import androidx.core.content.ContextCompat; | ||||||
| import androidx.viewpager.widget.ViewPager; | import androidx.viewpager.widget.ViewPager; | ||||||
| import androidx.appcompat.app.ActionBar; | import androidx.appcompat.app.ActionBar; | ||||||
| import androidx.appcompat.app.AlertDialog; |  | ||||||
| import androidx.appcompat.app.AppCompatActivity; | import androidx.appcompat.app.AppCompatActivity; | ||||||
| import android.text.Html; | import android.text.Html; | ||||||
| import android.text.Spanned; | import android.text.Spanned; | ||||||
| @@ -58,6 +56,7 @@ import org.schabi.newpipe.extractor.exceptions.ExtractionException; | |||||||
| import org.schabi.newpipe.extractor.exceptions.ParsingException; | import org.schabi.newpipe.extractor.exceptions.ParsingException; | ||||||
| import org.schabi.newpipe.extractor.services.youtube.extractors.YoutubeStreamExtractor; | import org.schabi.newpipe.extractor.services.youtube.extractors.YoutubeStreamExtractor; | ||||||
| import org.schabi.newpipe.extractor.stream.AudioStream; | import org.schabi.newpipe.extractor.stream.AudioStream; | ||||||
|  | import org.schabi.newpipe.extractor.stream.Description; | ||||||
| import org.schabi.newpipe.extractor.stream.Stream; | import org.schabi.newpipe.extractor.stream.Stream; | ||||||
| import org.schabi.newpipe.extractor.stream.StreamInfo; | import org.schabi.newpipe.extractor.stream.StreamInfo; | ||||||
| import org.schabi.newpipe.extractor.stream.StreamType; | import org.schabi.newpipe.extractor.stream.StreamType; | ||||||
| @@ -96,6 +95,8 @@ import java.util.List; | |||||||
| import java.util.concurrent.TimeUnit; | import java.util.concurrent.TimeUnit; | ||||||
|  |  | ||||||
| import icepick.State; | import icepick.State; | ||||||
|  | import io.noties.markwon.Markwon; | ||||||
|  | import io.noties.markwon.linkify.LinkifyPlugin; | ||||||
| import io.reactivex.Single; | import io.reactivex.Single; | ||||||
| import io.reactivex.android.schedulers.AndroidSchedulers; | import io.reactivex.android.schedulers.AndroidSchedulers; | ||||||
| import io.reactivex.disposables.CompositeDisposable; | import io.reactivex.disposables.CompositeDisposable; | ||||||
| @@ -483,7 +484,6 @@ public class VideoDetailFragment | |||||||
|         videoUploadDateView = rootView.findViewById(R.id.detail_upload_date_view); |         videoUploadDateView = rootView.findViewById(R.id.detail_upload_date_view); | ||||||
|         videoDescriptionView = rootView.findViewById(R.id.detail_description_view); |         videoDescriptionView = rootView.findViewById(R.id.detail_description_view); | ||||||
|         videoDescriptionView.setMovementMethod(LinkMovementMethod.getInstance()); |         videoDescriptionView.setMovementMethod(LinkMovementMethod.getInstance()); | ||||||
|         videoDescriptionView.setAutoLinkMask(Linkify.WEB_URLS); |  | ||||||
|  |  | ||||||
|         thumbsUpTextView = rootView.findViewById(R.id.detail_thumbs_up_count_view); |         thumbsUpTextView = rootView.findViewById(R.id.detail_thumbs_up_count_view); | ||||||
|         thumbsUpImageView = rootView.findViewById(R.id.detail_thumbs_up_img_view); |         thumbsUpImageView = rootView.findViewById(R.id.detail_thumbs_up_img_view); | ||||||
| @@ -919,28 +919,41 @@ public class VideoDetailFragment | |||||||
|         return sortedVideoStreams != null ? sortedVideoStreams.get(selectedVideoStreamIndex) : null; |         return sortedVideoStreams != null ? sortedVideoStreams.get(selectedVideoStreamIndex) : null; | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     private void prepareDescription(final String descriptionHtml) { |     private void prepareDescription(Description description) { | ||||||
|         if (TextUtils.isEmpty(descriptionHtml)) { |         if (TextUtils.isEmpty(description.getContent()) || description == Description.emptyDescription) { | ||||||
|             return; |             return; | ||||||
|         } |         } | ||||||
|  |  | ||||||
|         disposables.add(Single.just(descriptionHtml) |         if (description.getType() == Description.HTML) { | ||||||
|                 .map((@io.reactivex.annotations.NonNull String description) -> { |             disposables.add(Single.just(description.getContent()) | ||||||
|                     Spanned parsedDescription; |                     .map((@io.reactivex.annotations.NonNull String descriptionText) -> { | ||||||
|                     if (Build.VERSION.SDK_INT >= 24) { |                         Spanned parsedDescription; | ||||||
|                         parsedDescription = Html.fromHtml(description, 0); |                         if (Build.VERSION.SDK_INT >= 24) { | ||||||
|                     } else { |                             parsedDescription = Html.fromHtml(descriptionText, 0); | ||||||
|                         //noinspection deprecation |                         } else { | ||||||
|                         parsedDescription = Html.fromHtml(description); |                             //noinspection deprecation | ||||||
|                     } |                             parsedDescription = Html.fromHtml(descriptionText); | ||||||
|                     return parsedDescription; |                         } | ||||||
|                 }) |                         return parsedDescription; | ||||||
|                 .subscribeOn(Schedulers.computation()) |                     }) | ||||||
|                 .observeOn(AndroidSchedulers.mainThread()) |                     .subscribeOn(Schedulers.computation()) | ||||||
|                 .subscribe((@io.reactivex.annotations.NonNull Spanned spanned) -> { |                     .observeOn(AndroidSchedulers.mainThread()) | ||||||
|                     videoDescriptionView.setText(spanned); |                     .subscribe((@io.reactivex.annotations.NonNull Spanned spanned) -> { | ||||||
|                     videoDescriptionView.setVisibility(View.VISIBLE); |                         videoDescriptionView.setText(spanned); | ||||||
|                 })); |                         videoDescriptionView.setVisibility(View.VISIBLE); | ||||||
|  |                     })); | ||||||
|  |         } else if (description.getType() == Description.MARKDOWN) { | ||||||
|  |             final Markwon markwon = Markwon.builder(getContext()) | ||||||
|  |                     .usePlugin(LinkifyPlugin.create()) | ||||||
|  |                     .build(); | ||||||
|  |             markwon.setMarkdown(videoDescriptionView, description.getContent()); | ||||||
|  |             videoDescriptionView.setVisibility(View.VISIBLE); | ||||||
|  |         } else { | ||||||
|  |             //== Description.PLAIN_TEXT | ||||||
|  |             videoDescriptionView.setAutoLinkMask(Linkify.WEB_URLS); | ||||||
|  |             videoDescriptionView.setText(description.getContent(), TextView.BufferType.SPANNABLE); | ||||||
|  |             videoDescriptionView.setVisibility(View.VISIBLE); | ||||||
|  |         } | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     private void setHeightThumbnail() { |     private void setHeightThumbnail() { | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user
	 Tobias Groza
					Tobias Groza