From 43afd5a2b860b9106ba4f9d31bcb0cf48f746111 Mon Sep 17 00:00:00 2001 From: Christian Schabesberger Date: Tue, 27 Sep 2016 22:59:04 +0200 Subject: [PATCH] clean up downloader thing --- .../youtube/YoutubeChannelExtractorTest.java | 9 +++--- .../youtube/YoutubeSearchEngineTest.java | 8 ++--- .../YoutubeStreamExtractorDefaultTest.java | 6 ++-- .../YoutubeStreamExtractorGemaTest.java | 4 +-- .../YoutubeStreamExtractorLiveStreamTest.java | 5 +-- .../YoutubeStreamExtractorRestrictedTest.java | 6 ++-- app/src/main/java/org/schabi/newpipe/App.java | 4 +++ .../org/schabi/newpipe/ChannelActivity.java | 6 ++-- .../newpipe/ImageErrorLoadingListener.java | 4 +-- .../newpipe/detail/StreamInfoWorker.java | 6 ++-- .../detail/VideoItemDetailActivity.java | 6 ++-- .../detail/VideoItemDetailFragment.java | 4 +-- .../newpipe/extractor/ChannelExtractor.java | 5 +-- .../extractor/ExtractionException.java | 2 -- .../{ServiceList.java => NewPipe.java} | 32 +++++++++++++------ .../newpipe/extractor/SearchEngine.java | 4 +-- .../newpipe/extractor/SearchResult.java | 4 +-- .../newpipe/extractor/StreamExtractor.java | 7 +--- .../newpipe/extractor/StreamingService.java | 6 ++-- .../youtube/YoutubeChannelExtractor.java | 9 +++--- .../services/youtube/YoutubeSearchEngine.java | 31 ++++-------------- .../services/youtube/YoutubeService.java | 10 +++--- .../youtube/YoutubeStreamExtractor.java | 12 +++---- .../SearchInfoItemFragment.java | 8 ++--- .../newpipe/search_fragment/SearchWorker.java | 9 +++--- .../SuggestionSearchRunnable.java | 10 +++--- 26 files changed, 98 insertions(+), 119 deletions(-) rename app/src/main/java/org/schabi/newpipe/extractor/{ServiceList.java => NewPipe.java} (75%) diff --git a/app/src/androidTest/java/org/schabi/newpipe/extractor/youtube/YoutubeChannelExtractorTest.java b/app/src/androidTest/java/org/schabi/newpipe/extractor/youtube/YoutubeChannelExtractorTest.java index 70dbe3c15..89a0f0c8e 100644 --- a/app/src/androidTest/java/org/schabi/newpipe/extractor/youtube/YoutubeChannelExtractorTest.java +++ b/app/src/androidTest/java/org/schabi/newpipe/extractor/youtube/YoutubeChannelExtractorTest.java @@ -4,8 +4,7 @@ import android.test.AndroidTestCase; import org.schabi.newpipe.Downloader; import org.schabi.newpipe.extractor.ChannelExtractor; -import org.schabi.newpipe.extractor.SearchEngine; -import org.schabi.newpipe.extractor.ServiceList; +import org.schabi.newpipe.extractor.NewPipe; /** * Created by Christian Schabesberger on 12.09.16. @@ -33,7 +32,7 @@ public class YoutubeChannelExtractorTest extends AndroidTestCase { @Override public void setUp() throws Exception { super.setUp(); - extractor = ServiceList.getService("Youtube") + extractor = NewPipe.getService("Youtube") .getChannelExtractorInstance("https://www.youtube.com/channel/UCYJ61XIK64sp6ZFFS8sctxw", 0, new Downloader()); } @@ -67,13 +66,13 @@ public class YoutubeChannelExtractorTest extends AndroidTestCase { } public void testGetNextPage() throws Exception { - extractor = ServiceList.getService("Youtube") + extractor = NewPipe.getService("Youtube") .getChannelExtractorInstance("https://www.youtube.com/channel/UCYJ61XIK64sp6ZFFS8sctxw", 1, new Downloader()); assertTrue("next page didn't have content", !extractor.getStreams().getItemList().isEmpty()); } public void testGetNextNextPageUrl() throws Exception { - extractor = ServiceList.getService("Youtube") + extractor = NewPipe.getService("Youtube") .getChannelExtractorInstance("https://www.youtube.com/channel/UCYJ61XIK64sp6ZFFS8sctxw", 2, new Downloader()); assertTrue("next page didn't have content", extractor.hasNextPage()); } diff --git a/app/src/androidTest/java/org/schabi/newpipe/extractor/youtube/YoutubeSearchEngineTest.java b/app/src/androidTest/java/org/schabi/newpipe/extractor/youtube/YoutubeSearchEngineTest.java index 25d9dd810..24fde8342 100644 --- a/app/src/androidTest/java/org/schabi/newpipe/extractor/youtube/YoutubeSearchEngineTest.java +++ b/app/src/androidTest/java/org/schabi/newpipe/extractor/youtube/YoutubeSearchEngineTest.java @@ -2,15 +2,11 @@ package org.schabi.newpipe.extractor.youtube; import android.test.AndroidTestCase; -import org.schabi.newpipe.extractor.AbstractVideoInfo; import org.schabi.newpipe.extractor.SearchResult; -import org.schabi.newpipe.extractor.ServiceList; -import org.schabi.newpipe.extractor.StreamPreviewInfo; +import org.schabi.newpipe.extractor.NewPipe; import org.schabi.newpipe.extractor.SearchEngine; import org.schabi.newpipe.Downloader; -import java.io.PrintWriter; -import java.io.StringWriter; import java.util.List; /** @@ -40,7 +36,7 @@ public class YoutubeSearchEngineTest extends AndroidTestCase { @Override public void setUp() throws Exception { super.setUp(); - SearchEngine engine = ServiceList.getService("Youtube") + SearchEngine engine = NewPipe.getService("Youtube") .getSearchEngineInstance(new Downloader()); result = engine.search("this is something boring", diff --git a/app/src/androidTest/java/org/schabi/newpipe/extractor/youtube/YoutubeStreamExtractorDefaultTest.java b/app/src/androidTest/java/org/schabi/newpipe/extractor/youtube/YoutubeStreamExtractorDefaultTest.java index cc163dbb9..e0ebb570f 100644 --- a/app/src/androidTest/java/org/schabi/newpipe/extractor/youtube/YoutubeStreamExtractorDefaultTest.java +++ b/app/src/androidTest/java/org/schabi/newpipe/extractor/youtube/YoutubeStreamExtractorDefaultTest.java @@ -6,7 +6,7 @@ import org.schabi.newpipe.Downloader; import org.schabi.newpipe.extractor.AbstractVideoInfo; import org.schabi.newpipe.extractor.ExtractionException; import org.schabi.newpipe.extractor.ParsingException; -import org.schabi.newpipe.extractor.ServiceList; +import org.schabi.newpipe.extractor.NewPipe; import org.schabi.newpipe.extractor.StreamExtractor; import org.schabi.newpipe.extractor.VideoStream; @@ -37,7 +37,7 @@ public class YoutubeStreamExtractorDefaultTest extends AndroidTestCase { private StreamExtractor extractor; public void setUp() throws IOException, ExtractionException { - extractor = ServiceList.getService("Youtube") + extractor = NewPipe.getService("Youtube") .getExtractorInstance("https://www.youtube.com/watch?v=YQHsXMglC9A", new Downloader()); } @@ -48,7 +48,7 @@ public class YoutubeStreamExtractorDefaultTest extends AndroidTestCase { public void testGetValidTimeStamp() throws ExtractionException, IOException { StreamExtractor extractor = - ServiceList.getService("Youtube") + NewPipe.getService("Youtube") .getExtractorInstance("https://youtu.be/FmG385_uUys?t=174", new Downloader()); assertTrue(Integer.toString(extractor.getTimeStamp()), extractor.getTimeStamp() == 174); diff --git a/app/src/androidTest/java/org/schabi/newpipe/extractor/youtube/YoutubeStreamExtractorGemaTest.java b/app/src/androidTest/java/org/schabi/newpipe/extractor/youtube/YoutubeStreamExtractorGemaTest.java index 13ce65a31..800128ec8 100644 --- a/app/src/androidTest/java/org/schabi/newpipe/extractor/youtube/YoutubeStreamExtractorGemaTest.java +++ b/app/src/androidTest/java/org/schabi/newpipe/extractor/youtube/YoutubeStreamExtractorGemaTest.java @@ -4,7 +4,7 @@ import android.test.AndroidTestCase; import org.schabi.newpipe.Downloader; import org.schabi.newpipe.extractor.ExtractionException; -import org.schabi.newpipe.extractor.ServiceList; +import org.schabi.newpipe.extractor.NewPipe; import org.schabi.newpipe.extractor.services.youtube.YoutubeStreamExtractor; import java.io.IOException; @@ -39,7 +39,7 @@ public class YoutubeStreamExtractorGemaTest extends AndroidTestCase { public void testGemaError() throws IOException, ExtractionException { if(testActive) { try { - ServiceList.getService("Youtube") + NewPipe.getService("Youtube") .getExtractorInstance("https://www.youtube.com/watch?v=3O1_3zBUKM8", new Downloader()); } catch(YoutubeStreamExtractor.GemaException ge) { diff --git a/app/src/androidTest/java/org/schabi/newpipe/extractor/youtube/YoutubeStreamExtractorLiveStreamTest.java b/app/src/androidTest/java/org/schabi/newpipe/extractor/youtube/YoutubeStreamExtractorLiveStreamTest.java index c8d0d20ba..3c0fbce11 100644 --- a/app/src/androidTest/java/org/schabi/newpipe/extractor/youtube/YoutubeStreamExtractorLiveStreamTest.java +++ b/app/src/androidTest/java/org/schabi/newpipe/extractor/youtube/YoutubeStreamExtractorLiveStreamTest.java @@ -2,11 +2,8 @@ package org.schabi.newpipe.extractor.youtube; import android.test.AndroidTestCase; -import org.schabi.newpipe.Downloader; -import org.schabi.newpipe.extractor.AbstractVideoInfo; import org.schabi.newpipe.extractor.ExtractionException; import org.schabi.newpipe.extractor.ParsingException; -import org.schabi.newpipe.extractor.ServiceList; import org.schabi.newpipe.extractor.StreamExtractor; import java.io.IOException; @@ -39,7 +36,7 @@ public class YoutubeStreamExtractorLiveStreamTest extends AndroidTestCase { public void setUp() throws IOException, ExtractionException { //todo: make the extractor not throw over a livestream /* - extractor = ServiceList.getService("Youtube") + extractor = NewPipe.getService("Youtube") .getExtractorInstance("https://www.youtube.com/watch?v=J0s6NjqdjLE", new Downloader()); */ } diff --git a/app/src/androidTest/java/org/schabi/newpipe/extractor/youtube/YoutubeStreamExtractorRestrictedTest.java b/app/src/androidTest/java/org/schabi/newpipe/extractor/youtube/YoutubeStreamExtractorRestrictedTest.java index 8435f3675..a66a1f3f0 100644 --- a/app/src/androidTest/java/org/schabi/newpipe/extractor/youtube/YoutubeStreamExtractorRestrictedTest.java +++ b/app/src/androidTest/java/org/schabi/newpipe/extractor/youtube/YoutubeStreamExtractorRestrictedTest.java @@ -4,8 +4,8 @@ import android.test.AndroidTestCase; import org.schabi.newpipe.Downloader; import org.schabi.newpipe.extractor.ExtractionException; +import org.schabi.newpipe.extractor.NewPipe; import org.schabi.newpipe.extractor.ParsingException; -import org.schabi.newpipe.extractor.ServiceList; import org.schabi.newpipe.extractor.StreamExtractor; import org.schabi.newpipe.extractor.VideoStream; @@ -16,7 +16,7 @@ public class YoutubeStreamExtractorRestrictedTest extends AndroidTestCase { private StreamExtractor extractor; public void setUp() throws IOException, ExtractionException { - extractor = ServiceList.getService("Youtube") + extractor = NewPipe.getService("Youtube") .getExtractorInstance("https://www.youtube.com/watch?v=i6JTvzrpBy0", new Downloader()); } @@ -27,7 +27,7 @@ public class YoutubeStreamExtractorRestrictedTest extends AndroidTestCase { } public void testGetValidTimeStamp() throws ExtractionException, IOException { - StreamExtractor extractor=ServiceList.getService("Youtube") + StreamExtractor extractor= NewPipe.getService("Youtube") .getExtractorInstance("https://youtu.be/FmG385_uUys?t=174", new Downloader()); assertTrue(Integer.toString(extractor.getTimeStamp()), diff --git a/app/src/main/java/org/schabi/newpipe/App.java b/app/src/main/java/org/schabi/newpipe/App.java index 6b51c6cd5..7e93969bc 100644 --- a/app/src/main/java/org/schabi/newpipe/App.java +++ b/app/src/main/java/org/schabi/newpipe/App.java @@ -11,6 +11,7 @@ import org.acra.config.ACRAConfiguration; import org.acra.config.ACRAConfigurationException; import org.acra.config.ConfigurationBuilder; import org.acra.sender.ReportSenderFactory; +import org.schabi.newpipe.extractor.NewPipe; import org.schabi.newpipe.report.AcraReportSenderFactory; import org.schabi.newpipe.report.ErrorActivity; import org.schabi.newpipe.settings.SettingsActivity; @@ -60,6 +61,9 @@ public class App extends Application { "Could not initialize ACRA crash report", R.string.app_ui_crash)); } + //init NewPipe + NewPipe.init(new Downloader()); + // Initialize image loader ImageLoaderConfiguration config = new ImageLoaderConfiguration.Builder(this).build(); ImageLoader.getInstance().init(config); diff --git a/app/src/main/java/org/schabi/newpipe/ChannelActivity.java b/app/src/main/java/org/schabi/newpipe/ChannelActivity.java index e5902897d..878da5b7f 100644 --- a/app/src/main/java/org/schabi/newpipe/ChannelActivity.java +++ b/app/src/main/java/org/schabi/newpipe/ChannelActivity.java @@ -23,8 +23,8 @@ import org.schabi.newpipe.detail.VideoItemDetailFragment; import org.schabi.newpipe.extractor.ChannelExtractor; import org.schabi.newpipe.extractor.ChannelInfo; import org.schabi.newpipe.extractor.ExtractionException; +import org.schabi.newpipe.extractor.NewPipe; import org.schabi.newpipe.extractor.ParsingException; -import org.schabi.newpipe.extractor.ServiceList; import org.schabi.newpipe.extractor.StreamingService; import org.schabi.newpipe.info_list.InfoItemBuilder; import org.schabi.newpipe.info_list.InfoListAdapter; @@ -188,9 +188,9 @@ public class ChannelActivity extends AppCompatActivity { public void run() { StreamingService service = null; try { - service = ServiceList.getService(serviceId); + service = NewPipe.getService(serviceId); ChannelExtractor extractor = service.getChannelExtractorInstance( - channelUrl, pageNumber, new Downloader()); + channelUrl, pageNumber); final ChannelInfo info = ChannelInfo.getInfo(extractor, new Downloader()); diff --git a/app/src/main/java/org/schabi/newpipe/ImageErrorLoadingListener.java b/app/src/main/java/org/schabi/newpipe/ImageErrorLoadingListener.java index 7616cd8d0..837d96846 100644 --- a/app/src/main/java/org/schabi/newpipe/ImageErrorLoadingListener.java +++ b/app/src/main/java/org/schabi/newpipe/ImageErrorLoadingListener.java @@ -8,7 +8,7 @@ import com.nostra13.universalimageloader.core.assist.FailReason; import com.nostra13.universalimageloader.core.listener.ImageLoadingListener; import org.schabi.newpipe.report.ErrorActivity; -import org.schabi.newpipe.extractor.ServiceList; +import org.schabi.newpipe.extractor.NewPipe; /** * Created by Christian Schabesberger on 01.08.16. @@ -50,7 +50,7 @@ public class ImageErrorLoadingListener implements ImageLoadingListener { ErrorActivity.reportError(activity, failReason.getCause(), null, rootView, ErrorActivity.ErrorInfo.make(ErrorActivity.LOAD_IMAGE, - ServiceList.getNameOfService(serviceId), imageUri, + NewPipe.getNameOfService(serviceId), imageUri, R.string.could_not_load_image)); } diff --git a/app/src/main/java/org/schabi/newpipe/detail/StreamInfoWorker.java b/app/src/main/java/org/schabi/newpipe/detail/StreamInfoWorker.java index 31b65536e..e3e8c4a1d 100644 --- a/app/src/main/java/org/schabi/newpipe/detail/StreamInfoWorker.java +++ b/app/src/main/java/org/schabi/newpipe/detail/StreamInfoWorker.java @@ -9,7 +9,7 @@ import org.schabi.newpipe.Downloader; import org.schabi.newpipe.report.ErrorActivity; import org.schabi.newpipe.R; import org.schabi.newpipe.extractor.ParsingException; -import org.schabi.newpipe.extractor.ServiceList; +import org.schabi.newpipe.extractor.NewPipe; import org.schabi.newpipe.extractor.StreamExtractor; import org.schabi.newpipe.extractor.StreamInfo; import org.schabi.newpipe.extractor.StreamingService; @@ -51,7 +51,7 @@ public class StreamInfoWorker { StreamInfo streamInfo = null; StreamingService service = null; try { - service = ServiceList.getService(serviceId); + service = NewPipe.getService(serviceId); } catch (Exception e) { e.printStackTrace(); ErrorActivity.reportError(h, a, e, VideoItemDetailFragment.class, null, @@ -60,7 +60,7 @@ public class StreamInfoWorker { return; } try { - streamExtractor = service.getExtractorInstance(videoUrl, new Downloader()); + streamExtractor = service.getExtractorInstance(videoUrl); streamInfo = StreamInfo.getVideoInfo(streamExtractor, new Downloader()); final StreamInfo info = streamInfo; diff --git a/app/src/main/java/org/schabi/newpipe/detail/VideoItemDetailActivity.java b/app/src/main/java/org/schabi/newpipe/detail/VideoItemDetailActivity.java index 04649bf4d..ef0421e9f 100644 --- a/app/src/main/java/org/schabi/newpipe/detail/VideoItemDetailActivity.java +++ b/app/src/main/java/org/schabi/newpipe/detail/VideoItemDetailActivity.java @@ -14,7 +14,7 @@ import android.widget.Toast; import org.schabi.newpipe.App; import org.schabi.newpipe.MainActivity; import org.schabi.newpipe.R; -import org.schabi.newpipe.extractor.ServiceList; +import org.schabi.newpipe.extractor.NewPipe; import org.schabi.newpipe.extractor.StreamingService; @@ -73,13 +73,13 @@ public class VideoItemDetailActivity extends AppCompatActivity { // this means the video was called though another app if (getIntent().getData() != null) { videoUrl = getIntent().getData().toString(); - StreamingService[] serviceList = ServiceList.getServices(); + StreamingService[] serviceList = NewPipe.getServices(); //StreamExtractor videoExtractor = null; for (int i = 0; i < serviceList.length; i++) { if (serviceList[i].getUrlIdHandlerInstance().acceptUrl(videoUrl)) { arguments.putInt(VideoItemDetailFragment.STREAMING_SERVICE, i); currentStreamingService = i; - //videoExtractor = ServiceList.getService(i).getExtractorInstance(); + //videoExtractor = NewPipe.getService(i).getExtractorInstance(); break; } } diff --git a/app/src/main/java/org/schabi/newpipe/detail/VideoItemDetailFragment.java b/app/src/main/java/org/schabi/newpipe/detail/VideoItemDetailFragment.java index bbca4dcae..aef14a8e4 100644 --- a/app/src/main/java/org/schabi/newpipe/detail/VideoItemDetailFragment.java +++ b/app/src/main/java/org/schabi/newpipe/detail/VideoItemDetailFragment.java @@ -52,7 +52,7 @@ import org.schabi.newpipe.R; import org.schabi.newpipe.download.DownloadDialog; import org.schabi.newpipe.extractor.AudioStream; import org.schabi.newpipe.extractor.MediaFormat; -import org.schabi.newpipe.extractor.ServiceList; +import org.schabi.newpipe.extractor.NewPipe; import org.schabi.newpipe.extractor.StreamInfo; import org.schabi.newpipe.extractor.VideoStream; import org.schabi.newpipe.player.BackgroundPlayer; @@ -306,7 +306,7 @@ public class VideoItemDetailFragment extends Fragment { ErrorActivity.reportError(getActivity(), failReason.getCause(), null, rootView, ErrorActivity.ErrorInfo.make(ErrorActivity.LOAD_IMAGE, - ServiceList.getNameOfService(info.service_id), imageUri, + NewPipe.getNameOfService(info.service_id), imageUri, R.string.could_not_load_thumbnails)); } diff --git a/app/src/main/java/org/schabi/newpipe/extractor/ChannelExtractor.java b/app/src/main/java/org/schabi/newpipe/extractor/ChannelExtractor.java index 0f41d442e..90b97f5bf 100644 --- a/app/src/main/java/org/schabi/newpipe/extractor/ChannelExtractor.java +++ b/app/src/main/java/org/schabi/newpipe/extractor/ChannelExtractor.java @@ -26,15 +26,13 @@ public abstract class ChannelExtractor { private int serviceId; private String url; private UrlIdHandler urlIdHandler; - private Downloader downloader; private StreamPreviewInfoCollector previewInfoCollector; private int page = -1; - public ChannelExtractor(UrlIdHandler urlIdHandler, String url, int page, Downloader dl, int serviceId) + public ChannelExtractor(UrlIdHandler urlIdHandler, String url, int page, int serviceId) throws ExtractionException, IOException { this.url = url; this.page = page; - this.downloader = dl; this.serviceId = serviceId; this.urlIdHandler = urlIdHandler; previewInfoCollector = new StreamPreviewInfoCollector(urlIdHandler, serviceId); @@ -42,7 +40,6 @@ public abstract class ChannelExtractor { public String getUrl() { return url; } public UrlIdHandler getUrlIdHandler() { return urlIdHandler; } - public Downloader getDownloader() { return downloader; } public StreamPreviewInfoCollector getStreamPreviewInfoCollector() { return previewInfoCollector; } diff --git a/app/src/main/java/org/schabi/newpipe/extractor/ExtractionException.java b/app/src/main/java/org/schabi/newpipe/extractor/ExtractionException.java index fbbca89c1..38e28d6b0 100644 --- a/app/src/main/java/org/schabi/newpipe/extractor/ExtractionException.java +++ b/app/src/main/java/org/schabi/newpipe/extractor/ExtractionException.java @@ -24,11 +24,9 @@ public class ExtractionException extends Exception { public ExtractionException(String message) { super(message); } - public ExtractionException(Throwable cause) { super(cause); } - public ExtractionException(String message, Throwable cause) { super(message, cause); } diff --git a/app/src/main/java/org/schabi/newpipe/extractor/ServiceList.java b/app/src/main/java/org/schabi/newpipe/extractor/NewPipe.java similarity index 75% rename from app/src/main/java/org/schabi/newpipe/extractor/ServiceList.java rename to app/src/main/java/org/schabi/newpipe/extractor/NewPipe.java index fd3dc506d..db67e1e14 100644 --- a/app/src/main/java/org/schabi/newpipe/extractor/ServiceList.java +++ b/app/src/main/java/org/schabi/newpipe/extractor/NewPipe.java @@ -6,7 +6,7 @@ import org.schabi.newpipe.extractor.services.youtube.YoutubeService; * Created by Christian Schabesberger on 23.08.15. * * Copyright (C) Christian Schabesberger 2015 - * ServiceList.java is part of NewPipe. + * NewPipe.java is part of NewPipe. * * NewPipe is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -26,20 +26,24 @@ import org.schabi.newpipe.extractor.services.youtube.YoutubeService; * Currently only Youtube until the API becomes more stable.*/ @SuppressWarnings("ALL") -public class ServiceList { +public class NewPipe { - private ServiceList() { + private NewPipe() { } - private static final String TAG = ServiceList.class.toString(); - private static final StreamingService[] services = { + private static final String TAG = NewPipe.class.toString(); + + private static final StreamingService[] serviceList = { new YoutubeService(0) }; + + private static Downloader downloader = null; + public static StreamingService[] getServices() { - return services; + return serviceList; } public static StreamingService getService(int serviceId)throws ExtractionException { - for(StreamingService s : services) { + for(StreamingService s : serviceList) { if(s.getServiceId() == serviceId) { return s; } @@ -47,7 +51,7 @@ public class ServiceList { throw new ExtractionException("Service not known: " + Integer.toString(serviceId)); } public static StreamingService getService(String serviceName) throws ExtractionException { - return services[getIdOfService(serviceName)]; + return serviceList[getIdOfService(serviceName)]; } public static String getNameOfService(int id) { try { @@ -59,11 +63,19 @@ public class ServiceList { } } public static int getIdOfService(String serviceName) throws ExtractionException { - for(int i = 0; i < services.length; i++) { - if(services[i].getServiceInfo().name.equals(serviceName)) { + for(int i = 0; i < serviceList.length; i++) { + if(serviceList[i].getServiceInfo().name.equals(serviceName)) { return i; } } throw new ExtractionException("Error: Service " + serviceName + " not known."); } + + public static void init(Downloader d) { + downloader = d; + } + + public static Downloader getDownloader() { + return downloader; + } } diff --git a/app/src/main/java/org/schabi/newpipe/extractor/SearchEngine.java b/app/src/main/java/org/schabi/newpipe/extractor/SearchEngine.java index 3b700f129..f7586a304 100644 --- a/app/src/main/java/org/schabi/newpipe/extractor/SearchEngine.java +++ b/app/src/main/java/org/schabi/newpipe/extractor/SearchEngine.java @@ -42,11 +42,11 @@ public abstract class SearchEngine { } public abstract List suggestionList( - String query,String contentCountry, Downloader dl) + String query,String contentCountry) throws ExtractionException, IOException; //Result search(String query, int page); public abstract StreamPreviewInfoSearchCollector search( - String query, int page, String contentCountry, Downloader dl) + String query, int page, String contentCountry) throws ExtractionException, IOException; } diff --git a/app/src/main/java/org/schabi/newpipe/extractor/SearchResult.java b/app/src/main/java/org/schabi/newpipe/extractor/SearchResult.java index 8feccad0c..eac14f288 100644 --- a/app/src/main/java/org/schabi/newpipe/extractor/SearchResult.java +++ b/app/src/main/java/org/schabi/newpipe/extractor/SearchResult.java @@ -26,10 +26,10 @@ import java.util.Vector; public class SearchResult { public static SearchResult getSearchResult(SearchEngine engine, String query, - int page, String languageCode, Downloader dl) + int page, String languageCode) throws ExtractionException, IOException { - SearchResult result = engine.search(query, page, languageCode, dl).getSearchResult(); + SearchResult result = engine.search(query, page, languageCode).getSearchResult(); if(result.resultList.isEmpty()) { if(result.suggestion.isEmpty()) { throw new ExtractionException("Empty result despite no error"); diff --git a/app/src/main/java/org/schabi/newpipe/extractor/StreamExtractor.java b/app/src/main/java/org/schabi/newpipe/extractor/StreamExtractor.java index c3e8c6fcb..6b0da4f89 100644 --- a/app/src/main/java/org/schabi/newpipe/extractor/StreamExtractor.java +++ b/app/src/main/java/org/schabi/newpipe/extractor/StreamExtractor.java @@ -31,7 +31,6 @@ public abstract class StreamExtractor { private int serviceId; private String url; private UrlIdHandler urlIdHandler; - private Downloader downloader; private StreamPreviewInfoCollector previewInfoCollector; public class ExctractorInitException extends ExtractionException { @@ -55,7 +54,7 @@ public abstract class StreamExtractor { } } - public StreamExtractor(UrlIdHandler urlIdHandler, String url, Downloader dl, int serviceId) { + public StreamExtractor(UrlIdHandler urlIdHandler, String url, int serviceId) { this.serviceId = serviceId; this.urlIdHandler = urlIdHandler; previewInfoCollector = new StreamPreviewInfoCollector(urlIdHandler, serviceId); @@ -73,10 +72,6 @@ public abstract class StreamExtractor { return urlIdHandler; } - public Downloader getDownloader() { - return downloader; - } - public abstract int getTimeStamp() throws ParsingException; public abstract String getTitle() throws ParsingException; public abstract String getDescription() throws ParsingException; diff --git a/app/src/main/java/org/schabi/newpipe/extractor/StreamingService.java b/app/src/main/java/org/schabi/newpipe/extractor/StreamingService.java index 1805b48db..eea1f1783 100644 --- a/app/src/main/java/org/schabi/newpipe/extractor/StreamingService.java +++ b/app/src/main/java/org/schabi/newpipe/extractor/StreamingService.java @@ -35,12 +35,12 @@ public abstract class StreamingService { public abstract ServiceInfo getServiceInfo(); - public abstract StreamExtractor getExtractorInstance(String url, Downloader downloader) + public abstract StreamExtractor getExtractorInstance(String url) throws IOException, ExtractionException; - public abstract SearchEngine getSearchEngineInstance(Downloader downloader); + public abstract SearchEngine getSearchEngineInstance(); public abstract UrlIdHandler getUrlIdHandlerInstance(); public abstract UrlIdHandler getChannelUrlIdHandlerInstance(); - public abstract ChannelExtractor getChannelExtractorInstance(String url, int page, Downloader downloader) + public abstract ChannelExtractor getChannelExtractorInstance(String url, int page) throws ExtractionException, IOException; public final int getServiceId() { diff --git a/app/src/main/java/org/schabi/newpipe/extractor/services/youtube/YoutubeChannelExtractor.java b/app/src/main/java/org/schabi/newpipe/extractor/services/youtube/YoutubeChannelExtractor.java index f7f5e4923..fb46de97c 100644 --- a/app/src/main/java/org/schabi/newpipe/extractor/services/youtube/YoutubeChannelExtractor.java +++ b/app/src/main/java/org/schabi/newpipe/extractor/services/youtube/YoutubeChannelExtractor.java @@ -11,6 +11,7 @@ import org.schabi.newpipe.extractor.AbstractVideoInfo; import org.schabi.newpipe.extractor.ChannelExtractor; import org.schabi.newpipe.extractor.Downloader; import org.schabi.newpipe.extractor.ExtractionException; +import org.schabi.newpipe.extractor.NewPipe; import org.schabi.newpipe.extractor.Parser; import org.schabi.newpipe.extractor.ParsingException; import org.schabi.newpipe.extractor.StreamPreviewInfoCollector; @@ -46,7 +47,6 @@ public class YoutubeChannelExtractor extends ChannelExtractor { // private CSSOMParser cssParser = new CSSOMParser(new SACParserCSS3()); - private Downloader downloader; private Document doc = null; private boolean isAjaxPage = false; @@ -59,12 +59,13 @@ public class YoutubeChannelExtractor extends ChannelExtractor { // this request url. private static String nextPageUrl = ""; - public YoutubeChannelExtractor(UrlIdHandler urlIdHandler, String url, int page, Downloader dl, int serviceId) + public YoutubeChannelExtractor(UrlIdHandler urlIdHandler, String url, int page, int serviceId) throws ExtractionException, IOException { - super(urlIdHandler, url, page, dl, serviceId); + super(urlIdHandler, url, page, serviceId); + + Downloader downloader = NewPipe.getDownloader(); url = urlIdHandler.cleanUrl(url) ; //+ "/video?veiw=0&flow=list&sort=dd"; - downloader = dl; if(page == 0) { if (isUserUrl(url)) { diff --git a/app/src/main/java/org/schabi/newpipe/extractor/services/youtube/YoutubeSearchEngine.java b/app/src/main/java/org/schabi/newpipe/extractor/services/youtube/YoutubeSearchEngine.java index 2a361ed7b..cf79b247a 100644 --- a/app/src/main/java/org/schabi/newpipe/extractor/services/youtube/YoutubeSearchEngine.java +++ b/app/src/main/java/org/schabi/newpipe/extractor/services/youtube/YoutubeSearchEngine.java @@ -5,6 +5,7 @@ import org.jsoup.nodes.Document; import org.jsoup.nodes.Element; import org.schabi.newpipe.extractor.Downloader; import org.schabi.newpipe.extractor.ExtractionException; +import org.schabi.newpipe.extractor.NewPipe; import org.schabi.newpipe.extractor.ParsingException; import org.schabi.newpipe.extractor.SearchEngine; import org.schabi.newpipe.extractor.StreamPreviewInfoExtractor; @@ -55,20 +56,11 @@ public class YoutubeSearchEngine extends SearchEngine { } @Override - public StreamPreviewInfoSearchCollector search(String query, int page, String languageCode, Downloader downloader) + public StreamPreviewInfoSearchCollector search(String query, int page, String languageCode) throws IOException, ExtractionException { StreamPreviewInfoSearchCollector collector = getStreamPreviewInfoSearchCollector(); - /* Cant use Uri.Bilder since it's android code. - // Android code is baned from the extractor side. - Uri.Builder builder = new Uri.Builder(); - builder.scheme("https") - .authority("www.youtube.com") - .appendPath("results") - .appendQueryParameter("search_query", query) - .appendQueryParameter("page", Integer.toString(page)) - .appendQueryParameter("filters", "video"); - */ + Downloader downloader = NewPipe.getDownloader(); String url = "https://www.youtube.com/results" + "?search_query=" + URLEncoder.encode(query, CHARSET_UTF_8) @@ -127,24 +119,13 @@ public class YoutubeSearchEngine extends SearchEngine { } @Override - public List suggestionList(String query, String contentCountry, Downloader dl) + public List suggestionList(String query, String contentCountry) throws IOException, ParsingException { List suggestions = new ArrayList<>(); - /* Cant use Uri.Bilder since it's android code. - // Android code is baned from the extractor side. - Uri.Builder builder = new Uri.Builder(); - builder.scheme("https") - .authority("suggestqueries.google.com") - .appendPath("complete") - .appendPath("search") - .appendQueryParameter("client", "") - .appendQueryParameter("output", "toolbar") - .appendQueryParameter("ds", "yt") - .appendQueryParameter("hl",contentCountry) - .appendQueryParameter("q", query); - */ + Downloader dl = NewPipe.getDownloader(); + String url = "https://suggestqueries.google.com/complete/search" + "?client=" + "" + "&output=" + "toolbar" diff --git a/app/src/main/java/org/schabi/newpipe/extractor/services/youtube/YoutubeService.java b/app/src/main/java/org/schabi/newpipe/extractor/services/youtube/YoutubeService.java index 9c2198926..cd4197474 100644 --- a/app/src/main/java/org/schabi/newpipe/extractor/services/youtube/YoutubeService.java +++ b/app/src/main/java/org/schabi/newpipe/extractor/services/youtube/YoutubeService.java @@ -44,18 +44,18 @@ public class YoutubeService extends StreamingService { return serviceInfo; } @Override - public StreamExtractor getExtractorInstance(String url, Downloader downloader) + public StreamExtractor getExtractorInstance(String url) throws ExtractionException, IOException { UrlIdHandler urlIdHandler = new YoutubeStreamUrlIdHandler(); if(urlIdHandler.acceptUrl(url)) { - return new YoutubeStreamExtractor(urlIdHandler, url, downloader, getServiceId()); + return new YoutubeStreamExtractor(urlIdHandler, url, getServiceId()); } else { throw new IllegalArgumentException("supplied String is not a valid Youtube URL"); } } @Override - public SearchEngine getSearchEngineInstance(Downloader downloader) { + public SearchEngine getSearchEngineInstance() { return new YoutubeSearchEngine(getUrlIdHandlerInstance(), getServiceId()); } @@ -70,8 +70,8 @@ public class YoutubeService extends StreamingService { } @Override - public ChannelExtractor getChannelExtractorInstance(String url, int page, Downloader downloader) + public ChannelExtractor getChannelExtractorInstance(String url, int page) throws ExtractionException, IOException { - return new YoutubeChannelExtractor(getChannelUrlIdHandlerInstance(), url, page, downloader, getServiceId()); + return new YoutubeChannelExtractor(getChannelUrlIdHandlerInstance(), url, page, getServiceId()); } } diff --git a/app/src/main/java/org/schabi/newpipe/extractor/services/youtube/YoutubeStreamExtractor.java b/app/src/main/java/org/schabi/newpipe/extractor/services/youtube/YoutubeStreamExtractor.java index 824fe3b6c..4a37c5ce6 100644 --- a/app/src/main/java/org/schabi/newpipe/extractor/services/youtube/YoutubeStreamExtractor.java +++ b/app/src/main/java/org/schabi/newpipe/extractor/services/youtube/YoutubeStreamExtractor.java @@ -12,6 +12,7 @@ import org.schabi.newpipe.extractor.AbstractVideoInfo; import org.schabi.newpipe.extractor.AudioStream; import org.schabi.newpipe.extractor.ExtractionException; import org.schabi.newpipe.extractor.Downloader; +import org.schabi.newpipe.extractor.NewPipe; import org.schabi.newpipe.extractor.Parser; import org.schabi.newpipe.extractor.ParsingException; import org.schabi.newpipe.extractor.StreamInfo; @@ -185,15 +186,12 @@ public class YoutubeStreamExtractor extends StreamExtractor { UrlIdHandler urlidhandler = new YoutubeStreamUrlIdHandler(); String pageUrl = ""; - private Downloader downloader; - - public YoutubeStreamExtractor(UrlIdHandler urlIdHandler, String pageUrl, - Downloader dl, int serviceId) + public YoutubeStreamExtractor(UrlIdHandler urlIdHandler, String pageUrl, int serviceId) throws ExtractionException, IOException { - super(urlIdHandler ,pageUrl, dl, serviceId); + super(urlIdHandler, pageUrl, serviceId); //most common videoInfo fields are now set in our superclass, for all services - downloader = dl; this.pageUrl = pageUrl; + Downloader downloader = NewPipe.getDownloader(); String pageContent = downloader.download(urlidhandler.cleanUrl(pageUrl)); doc = Jsoup.parse(pageContent, pageUrl); JSONObject ytPlayerConfig; @@ -284,6 +282,7 @@ public class YoutubeStreamExtractor extends StreamExtractor { private String getPlayerUrlFromRestrictedVideo(String pageUrl) throws ParsingException { try { + Downloader downloader = NewPipe.getDownloader(); String playerUrl = ""; String videoId = urlidhandler.getId(pageUrl); String embedUrl = "https://www.youtube.com/embed/" + videoId; @@ -788,6 +787,7 @@ public class YoutubeStreamExtractor extends StreamExtractor { String decryptionCode; try { + Downloader downloader = NewPipe.getDownloader(); String playerCode = downloader.download(playerUrl); decryptionFuncName = diff --git a/app/src/main/java/org/schabi/newpipe/search_fragment/SearchInfoItemFragment.java b/app/src/main/java/org/schabi/newpipe/search_fragment/SearchInfoItemFragment.java index 9f893c0c6..af56cc3f2 100644 --- a/app/src/main/java/org/schabi/newpipe/search_fragment/SearchInfoItemFragment.java +++ b/app/src/main/java/org/schabi/newpipe/search_fragment/SearchInfoItemFragment.java @@ -18,13 +18,13 @@ import android.view.inputmethod.InputMethodManager; import android.widget.ProgressBar; import android.widget.Toast; +import org.schabi.newpipe.extractor.NewPipe; import org.schabi.newpipe.info_list.InfoItemBuilder; import org.schabi.newpipe.report.ErrorActivity; import org.schabi.newpipe.R; import org.schabi.newpipe.detail.VideoItemDetailActivity; import org.schabi.newpipe.detail.VideoItemDetailFragment; import org.schabi.newpipe.extractor.SearchResult; -import org.schabi.newpipe.extractor.ServiceList; import org.schabi.newpipe.info_list.InfoListAdapter; /** @@ -72,7 +72,7 @@ public class SearchInfoItemFragment extends Fragment { ErrorActivity.reportError(a, e, null, a.findViewById(android.R.id.content), ErrorActivity.ErrorInfo.make(ErrorActivity.SEARCHED, - ServiceList.getNameOfService(streamingServiceId), + NewPipe.getNameOfService(streamingServiceId), "Could not get widget with focus", R.string.general_error)); } // clear focus @@ -137,13 +137,13 @@ public class SearchInfoItemFragment extends Fragment { streamingServiceId = savedInstanceState.getInt(STREAMING_SERVICE); } else { try { - streamingServiceId = ServiceList.getIdOfService("Youtube"); + streamingServiceId = NewPipe.getIdOfService("Youtube"); } catch(Exception e) { e.printStackTrace(); ErrorActivity.reportError(getActivity(), e, null, getActivity().findViewById(android.R.id.content), ErrorActivity.ErrorInfo.make(ErrorActivity.SEARCHED, - ServiceList.getNameOfService(streamingServiceId), + NewPipe.getNameOfService(streamingServiceId), "", R.string.general_error)); } } diff --git a/app/src/main/java/org/schabi/newpipe/search_fragment/SearchWorker.java b/app/src/main/java/org/schabi/newpipe/search_fragment/SearchWorker.java index 9e592ba47..ccb4a4173 100644 --- a/app/src/main/java/org/schabi/newpipe/search_fragment/SearchWorker.java +++ b/app/src/main/java/org/schabi/newpipe/search_fragment/SearchWorker.java @@ -13,7 +13,7 @@ import org.schabi.newpipe.R; import org.schabi.newpipe.extractor.ExtractionException; import org.schabi.newpipe.extractor.SearchEngine; import org.schabi.newpipe.extractor.SearchResult; -import org.schabi.newpipe.extractor.ServiceList; +import org.schabi.newpipe.extractor.NewPipe; import java.io.IOException; @@ -85,8 +85,8 @@ public class SearchWorker { SearchEngine engine = null; try { - engine = ServiceList.getService(serviceId) - .getSearchEngineInstance(new Downloader()); + engine = NewPipe.getService(serviceId) + .getSearchEngineInstance(); } catch(ExtractionException e) { ErrorActivity.reportError(h, a, e, null, null, ErrorActivity.ErrorInfo.make(ErrorActivity.SEARCHED, @@ -100,8 +100,7 @@ public class SearchWorker { String searchLanguage = sp.getString(searchLanguageKey, a.getString(R.string.default_language_value)); result = SearchResult - .getSearchResult(engine, query, page, searchLanguage, new Downloader()); - + .getSearchResult(engine, query, page, searchLanguage); if(runs) { h.post(new ResultRunnable(result, requestId)); } diff --git a/app/src/main/java/org/schabi/newpipe/search_fragment/SuggestionSearchRunnable.java b/app/src/main/java/org/schabi/newpipe/search_fragment/SuggestionSearchRunnable.java index 4a8840d95..bd483f1bf 100644 --- a/app/src/main/java/org/schabi/newpipe/search_fragment/SuggestionSearchRunnable.java +++ b/app/src/main/java/org/schabi/newpipe/search_fragment/SuggestionSearchRunnable.java @@ -7,11 +7,11 @@ import android.preference.PreferenceManager; import android.widget.Toast; import org.schabi.newpipe.Downloader; +import org.schabi.newpipe.extractor.NewPipe; import org.schabi.newpipe.report.ErrorActivity; import org.schabi.newpipe.R; import org.schabi.newpipe.extractor.ExtractionException; import org.schabi.newpipe.extractor.SearchEngine; -import org.schabi.newpipe.extractor.ServiceList; import java.io.IOException; import java.util.List; @@ -71,17 +71,17 @@ public class SuggestionSearchRunnable implements Runnable{ public void run() { try { SearchEngine engine = - ServiceList.getService(serviceId).getSearchEngineInstance(new Downloader()); + NewPipe.getService(serviceId).getSearchEngineInstance(); SharedPreferences sp = PreferenceManager.getDefaultSharedPreferences(a); String searchLanguageKey = a.getString(R.string.search_language_key); String searchLanguage = sp.getString(searchLanguageKey, a.getString(R.string.default_language_value)); - List suggestions = engine.suggestionList(query,searchLanguage,new Downloader()); + List suggestions = engine.suggestionList(query, searchLanguage); h.post(new SuggestionResultRunnable(suggestions, adapter)); } catch (ExtractionException e) { ErrorActivity.reportError(h, a, e, null, a.findViewById(android.R.id.content), ErrorActivity.ErrorInfo.make(ErrorActivity.SEARCHED, - ServiceList.getNameOfService(serviceId), query, R.string.parsing_error)); + NewPipe.getNameOfService(serviceId), query, R.string.parsing_error)); e.printStackTrace(); } catch (IOException e) { postNewErrorToast(h, R.string.network_error); @@ -89,7 +89,7 @@ public class SuggestionSearchRunnable implements Runnable{ } catch (Exception e) { ErrorActivity.reportError(h, a, e, null, a.findViewById(android.R.id.content), ErrorActivity.ErrorInfo.make(ErrorActivity.SEARCHED, - ServiceList.getNameOfService(serviceId), query, R.string.general_error)); + NewPipe.getNameOfService(serviceId), query, R.string.general_error)); } }