mirror of
				https://github.com/TeamNewPipe/NewPipe
				synced 2025-10-31 15:23:00 +00:00 
			
		
		
		
	add adblocker for youtube red stuff
This commit is contained in:
		| @@ -169,6 +169,15 @@ public class YoutubeChannelExtractor extends ChannelExtractor { | ||||
|                         return AbstractStreamInfo.StreamType.VIDEO_STREAM; | ||||
|                     } | ||||
|  | ||||
|                     @Override | ||||
|                     public boolean isAd() throws ParsingException { | ||||
|                         if(!li.select("span[class*=\"icon-not-available\"]").isEmpty()) { | ||||
|                             return true; | ||||
|                         } else { | ||||
|                             return false; | ||||
|                         } | ||||
|                     } | ||||
|  | ||||
|                     @Override | ||||
|                     public String getWebPageUrl() throws ParsingException { | ||||
|                         try { | ||||
| @@ -214,9 +223,14 @@ public class YoutubeChannelExtractor extends ChannelExtractor { | ||||
|                     @Override | ||||
|                     public String getUploadDate() throws ParsingException { | ||||
|                         try { | ||||
|                             return li.select("div[class=\"yt-lockup-meta\"]").first() | ||||
|                                     .select("li").first() | ||||
|                                     .text(); | ||||
|                             Element meta = li.select("div[class=\"yt-lockup-meta\"]").first(); | ||||
|                             Element li = meta.select("li").first(); | ||||
|                             if (li == null && meta != null) { | ||||
|                                 //this means we have a youtube red video | ||||
|                                 return ""; | ||||
|                             }else { | ||||
|                                 return li.text(); | ||||
|                             } | ||||
|                         } catch(Exception e) { | ||||
|                             throw new ParsingException("Could not get uplaod date", e); | ||||
|                         } | ||||
| @@ -231,13 +245,7 @@ public class YoutubeChannelExtractor extends ChannelExtractor { | ||||
|                                     .select("li").get(1) | ||||
|                                     .text(); | ||||
|                         } catch (IndexOutOfBoundsException e) { | ||||
|                             if(isLiveStream(li)) { | ||||
|                                 // -1 for no view count | ||||
|                                 return -1; | ||||
|                             } else { | ||||
|                                 throw new ParsingException( | ||||
|                                         "Could not parse yt-lockup-meta although available: " + getTitle(), e); | ||||
|                             } | ||||
|                             return -1; | ||||
|                         } | ||||
|  | ||||
|                         output = Parser.matchGroup1("([0-9,\\. ]*)", input) | ||||
|   | ||||
| @@ -10,6 +10,7 @@ import org.mozilla.javascript.Function; | ||||
| import org.mozilla.javascript.ScriptableObject; | ||||
| import org.schabi.newpipe.extractor.AbstractStreamInfo; | ||||
| import org.schabi.newpipe.extractor.exceptions.ExtractionException; | ||||
| import org.schabi.newpipe.extractor.exceptions.FoundAdException; | ||||
| import org.schabi.newpipe.extractor.exceptions.ParsingException; | ||||
| import org.schabi.newpipe.extractor.exceptions.ReCaptchaException; | ||||
| import org.schabi.newpipe.extractor.stream_info.AudioStream; | ||||
| @@ -725,7 +726,16 @@ public class YoutubeStreamExtractor extends StreamExtractor { | ||||
|         return new StreamInfoItemExtractor() { | ||||
|             @Override | ||||
|             public AbstractStreamInfo.StreamType getStreamType() throws ParsingException { | ||||
|                 return null; | ||||
|                 return AbstractStreamInfo.StreamType.VIDEO_STREAM; | ||||
|             } | ||||
|  | ||||
|             @Override | ||||
|             public boolean isAd() throws ParsingException { | ||||
|                 if(!li.select("span[class*=\"icon-not-available\"]").isEmpty()) { | ||||
|                     return true; | ||||
|                 } else { | ||||
|                     return false; | ||||
|                 } | ||||
|             } | ||||
|  | ||||
|             @Override | ||||
|   | ||||
| @@ -3,6 +3,7 @@ package org.schabi.newpipe.extractor.services.youtube; | ||||
| import org.jsoup.nodes.Element; | ||||
| import org.schabi.newpipe.extractor.AbstractStreamInfo; | ||||
| import org.schabi.newpipe.extractor.Parser; | ||||
| import org.schabi.newpipe.extractor.exceptions.FoundAdException; | ||||
| import org.schabi.newpipe.extractor.exceptions.ParsingException; | ||||
| import org.schabi.newpipe.extractor.stream_info.StreamInfoItemExtractor; | ||||
|  | ||||
| @@ -28,7 +29,7 @@ public class YoutubeStreamInfoItemExtractor implements StreamInfoItemExtractor { | ||||
|  | ||||
|     private final Element item; | ||||
|  | ||||
|     public YoutubeStreamInfoItemExtractor(Element item) { | ||||
|     public YoutubeStreamInfoItemExtractor(Element item) throws FoundAdException { | ||||
|         this.item = item; | ||||
|     } | ||||
|  | ||||
| @@ -161,6 +162,15 @@ public class YoutubeStreamInfoItemExtractor implements StreamInfoItemExtractor { | ||||
|         } | ||||
|     } | ||||
|  | ||||
|     @Override | ||||
|     public boolean isAd() throws ParsingException { | ||||
|         if(!item.select("span[class*=\"icon-not-available\"]").isEmpty()) { | ||||
|             return true; | ||||
|         } else { | ||||
|             return false; | ||||
|         } | ||||
|     } | ||||
|  | ||||
|     private boolean isLiveStream(Element item) { | ||||
|         Element bla = item.select("span[class*=\"yt-badge-live\"]").first(); | ||||
|  | ||||
|   | ||||
| @@ -43,6 +43,9 @@ public class StreamInfoItemCollector extends InfoItemCollector { | ||||
|     } | ||||
|  | ||||
|     public StreamInfoItem extract(StreamInfoItemExtractor extractor) throws Exception { | ||||
|         if(extractor.isAd()) { | ||||
|             throw new FoundAdException("Found ad"); | ||||
|         } | ||||
|  | ||||
|         StreamInfoItem resultItem = new StreamInfoItem(); | ||||
|         // importand information | ||||
| @@ -91,7 +94,7 @@ public class StreamInfoItemCollector extends InfoItemCollector { | ||||
|         try { | ||||
|             addItem(extract(extractor)); | ||||
|         } catch(FoundAdException ae) { | ||||
|             System.out.println("AD_WARNING: " + ae.getMessage()); | ||||
|             //System.out.println("AD_WARNING: " + ae.getMessage()); | ||||
|         } catch (Exception e) { | ||||
|             addError(e); | ||||
|         } | ||||
|   | ||||
| @@ -32,4 +32,5 @@ public interface StreamInfoItemExtractor { | ||||
|     String getUploadDate() throws ParsingException; | ||||
|     long getViewCount() throws  ParsingException; | ||||
|     String getThumbnailUrl() throws  ParsingException; | ||||
|     boolean isAd() throws ParsingException; | ||||
| } | ||||
|   | ||||
		Reference in New Issue
	
	Block a user
	 Christian Schabesberger
					Christian Schabesberger