1
0
mirror of https://github.com/TeamNewPipe/NewPipe synced 2024-12-23 16:40:32 +00:00

made all arrays into lists

This commit is contained in:
Christian Schabesberger 2016-02-05 14:09:04 +01:00
parent 61471fdd3c
commit 1bf046a8ba
7 changed files with 40 additions and 31 deletions

View File

@ -19,6 +19,8 @@ import android.widget.ArrayAdapter;
import org.schabi.newpipe.crawler.MediaFormat; import org.schabi.newpipe.crawler.MediaFormat;
import org.schabi.newpipe.crawler.VideoInfo; import org.schabi.newpipe.crawler.VideoInfo;
import java.util.List;
/** /**
* Created by Christian Schabesberger on 18.08.15. * Created by Christian Schabesberger on 18.08.15.
* *
@ -49,7 +51,7 @@ class ActionBarHandler {
private Bitmap videoThumbnail = null; private Bitmap videoThumbnail = null;
private String channelName = ""; private String channelName = "";
private AppCompatActivity activity; private AppCompatActivity activity;
private VideoInfo.VideoStream[] videoStreams = null; private List<VideoInfo.VideoStream> videoStreams = null;
private VideoInfo.AudioStream audioStream = null; private VideoInfo.AudioStream audioStream = null;
private int selectedStream = -1; private int selectedStream = -1;
private String videoTitle = ""; private String videoTitle = "";
@ -93,19 +95,21 @@ class ActionBarHandler {
} }
@SuppressWarnings("deprecation") @SuppressWarnings("deprecation")
public void setStreams(VideoInfo.VideoStream[] videoStreams, VideoInfo.AudioStream[] audioStreams) { public void setStreams(List<VideoInfo.VideoStream> videoStreams,
List<VideoInfo.AudioStream> audioStreams) {
this.videoStreams = videoStreams; this.videoStreams = videoStreams;
selectedStream = 0; selectedStream = 0;
defaultPreferences = PreferenceManager.getDefaultSharedPreferences(activity); defaultPreferences = PreferenceManager.getDefaultSharedPreferences(activity);
String[] itemArray = new String[videoStreams.length]; String[] itemArray = new String[videoStreams.size()];
String defaultResolution = defaultPreferences String defaultResolution = defaultPreferences
.getString(activity.getString(R.string.default_resolution_key), .getString(activity.getString(R.string.default_resolution_key),
activity.getString(R.string.default_resolution_value)); activity.getString(R.string.default_resolution_value));
int defaultResolutionPos = 0; int defaultResolutionPos = 0;
for(int i = 0; i < videoStreams.length; i++) { for(int i = 0; i < videoStreams.size(); i++) {
itemArray[i] = MediaFormat.getNameById(videoStreams[i].format) + " " + videoStreams[i].resolution; VideoInfo.VideoStream item = videoStreams.get(i);
if(defaultResolution.equals(videoStreams[i].resolution)) { itemArray[i] = MediaFormat.getNameById(item.format) + " " + item.resolution;
if(defaultResolution.equals(item.resolution)) {
defaultResolutionPos = i; defaultResolutionPos = i;
} }
} }
@ -209,6 +213,8 @@ class ActionBarHandler {
public void playVideo() { public void playVideo() {
// ----------- THE MAGIC MOMENT --------------- // ----------- THE MAGIC MOMENT ---------------
if(!videoTitle.isEmpty()) { if(!videoTitle.isEmpty()) {
VideoInfo.VideoStream selectedStreamItem = videoStreams.get(selectedStream);
if (PreferenceManager.getDefaultSharedPreferences(activity) if (PreferenceManager.getDefaultSharedPreferences(activity)
.getBoolean(activity.getString(R.string.use_external_video_player_key), false)) { .getBoolean(activity.getString(R.string.use_external_video_player_key), false)) {
@ -217,8 +223,8 @@ class ActionBarHandler {
try { try {
intent.setAction(Intent.ACTION_VIEW); intent.setAction(Intent.ACTION_VIEW);
intent.setDataAndType(Uri.parse(videoStreams[selectedStream].url), intent.setDataAndType(Uri.parse(selectedStreamItem.url),
MediaFormat.getMimeById(videoStreams[selectedStream].format)); MediaFormat.getMimeById(selectedStreamItem.format));
intent.putExtra(Intent.EXTRA_TITLE, videoTitle); intent.putExtra(Intent.EXTRA_TITLE, videoTitle);
intent.putExtra("title", videoTitle); intent.putExtra("title", videoTitle);
@ -248,7 +254,7 @@ class ActionBarHandler {
// Internal Player // Internal Player
Intent intent = new Intent(activity, PlayVideoActivity.class); Intent intent = new Intent(activity, PlayVideoActivity.class);
intent.putExtra(PlayVideoActivity.VIDEO_TITLE, videoTitle); intent.putExtra(PlayVideoActivity.VIDEO_TITLE, videoTitle);
intent.putExtra(PlayVideoActivity.STREAM_URL, videoStreams[selectedStream].url); intent.putExtra(PlayVideoActivity.STREAM_URL, selectedStreamItem.url);
intent.putExtra(PlayVideoActivity.VIDEO_URL, websiteUrl); intent.putExtra(PlayVideoActivity.VIDEO_URL, websiteUrl);
intent.putExtra(PlayVideoActivity.START_POSITION, startPosition); intent.putExtra(PlayVideoActivity.START_POSITION, startPosition);
activity.startActivity(intent); //also HERE !!! activity.startActivity(intent); //also HERE !!!
@ -264,13 +270,14 @@ class ActionBarHandler {
private void downloadVideo() { private void downloadVideo() {
if(!videoTitle.isEmpty()) { if(!videoTitle.isEmpty()) {
String videoSuffix = "." + MediaFormat.getSuffixById(videoStreams[selectedStream].format); VideoInfo.VideoStream selectedStreamItem = videoStreams.get(selectedStream);
String videoSuffix = "." + MediaFormat.getSuffixById(selectedStreamItem.format);
String audioSuffix = "." + MediaFormat.getSuffixById(audioStream.format); String audioSuffix = "." + MediaFormat.getSuffixById(audioStream.format);
Bundle args = new Bundle(); Bundle args = new Bundle();
args.putString(DownloadDialog.FILE_SUFFIX_VIDEO, videoSuffix); args.putString(DownloadDialog.FILE_SUFFIX_VIDEO, videoSuffix);
args.putString(DownloadDialog.FILE_SUFFIX_AUDIO, audioSuffix); args.putString(DownloadDialog.FILE_SUFFIX_AUDIO, audioSuffix);
args.putString(DownloadDialog.TITLE, videoTitle); args.putString(DownloadDialog.TITLE, videoTitle);
args.putString(DownloadDialog.VIDEO_URL, videoStreams[selectedStream].url); args.putString(DownloadDialog.VIDEO_URL, selectedStreamItem.url);
args.putString(DownloadDialog.AUDIO_URL, audioStream.url); args.putString(DownloadDialog.AUDIO_URL, audioStream.url);
DownloadDialog downloadDialog = new DownloadDialog(); DownloadDialog downloadDialog = new DownloadDialog();
downloadDialog.setArguments(args); downloadDialog.setArguments(args);

View File

@ -302,11 +302,8 @@ public class VideoItemDetailFragment extends Fragment {
streamsToUse.add(i); streamsToUse.add(i);
} }
} }
VideoInfo.VideoStream[] streamList = new VideoInfo.VideoStream[streamsToUse.size()];
for (int i = 0; i < streamList.length; i++) { actionBarHandler.setStreams(streamsToUse, info.audioStreams);
streamList[i] = streamsToUse.get(i);
}
actionBarHandler.setStreams(streamList, info.audioStreams);
nextVideoButton.setOnClickListener(new View.OnClickListener() { nextVideoButton.setOnClickListener(new View.OnClickListener() {
@Override @Override

View File

@ -6,6 +6,7 @@ import org.xmlpull.v1.XmlPullParser;
import java.io.IOException; import java.io.IOException;
import java.io.StringReader; import java.io.StringReader;
import java.util.List;
import java.util.Vector; import java.util.Vector;
/** /**
@ -36,7 +37,7 @@ public class DashMpdParser {
} }
} }
public static VideoInfo.AudioStream[] getAudioStreams(String dashManifestUrl, public static List<VideoInfo.AudioStream> getAudioStreams(String dashManifestUrl,
Downloader downloader) Downloader downloader)
throws DashMpdParsingException { throws DashMpdParsingException {
String dashDoc; String dashDoc;
@ -96,6 +97,6 @@ public class DashMpdParser {
} catch(Exception e) { } catch(Exception e) {
throw new DashMpdParsingException("Could not parse Dash mpd", e); throw new DashMpdParsingException("Could not parse Dash mpd", e);
} }
return audioStreams.toArray(new VideoInfo.AudioStream[audioStreams.size()]); return audioStreams;
} }
} }

View File

@ -2,6 +2,7 @@ package org.schabi.newpipe.crawler;
import java.io.IOException; import java.io.IOException;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List;
import java.util.Vector; import java.util.Vector;
/** /**
@ -29,7 +30,7 @@ public interface SearchEngine {
class Result { class Result {
public String errorMessage = ""; public String errorMessage = "";
public String suggestion = ""; public String suggestion = "";
public final Vector<VideoPreviewInfo> resultList = new Vector<>(); public final List<VideoPreviewInfo> resultList = new Vector<>();
} }
ArrayList<String> suggestionList(String query, Downloader dl) ArrayList<String> suggestionList(String query, Downloader dl)

View File

@ -20,7 +20,7 @@ package org.schabi.newpipe.crawler;
* along with NewPipe. If not, see <http://www.gnu.org/licenses/>. * along with NewPipe. If not, see <http://www.gnu.org/licenses/>.
*/ */
import java.util.Vector; import java.util.List;
/**Scrapes information from a video streaming service (eg, YouTube).*/ /**Scrapes information from a video streaming service (eg, YouTube).*/
@ -63,15 +63,15 @@ public interface VideoExtractor {
public abstract String getUploadDate() throws ParsingException; public abstract String getUploadDate() throws ParsingException;
public abstract String getThumbnailUrl() throws ParsingException; public abstract String getThumbnailUrl() throws ParsingException;
public abstract String getUploaderThumbnailUrl() throws ParsingException; public abstract String getUploaderThumbnailUrl() throws ParsingException;
public abstract VideoInfo.AudioStream[] getAudioStreams() throws ParsingException; public abstract List<VideoInfo.AudioStream> getAudioStreams() throws ParsingException;
public abstract VideoInfo.VideoStream[] getVideoStreams() throws ParsingException; public abstract List<VideoInfo.VideoStream> getVideoStreams() throws ParsingException;
public abstract String getDashMpdUrl() throws ParsingException; public abstract String getDashMpdUrl() throws ParsingException;
public abstract int getAgeLimit() throws ParsingException; public abstract int getAgeLimit() throws ParsingException;
public abstract String getAverageRating() throws ParsingException; public abstract String getAverageRating() throws ParsingException;
public abstract int getLikeCount() throws ParsingException; public abstract int getLikeCount() throws ParsingException;
public abstract int getDislikeCount() throws ParsingException; public abstract int getDislikeCount() throws ParsingException;
public abstract VideoPreviewInfo getNextVideo() throws ParsingException; public abstract VideoPreviewInfo getNextVideo() throws ParsingException;
public abstract Vector<VideoPreviewInfo> getRelatedVideos() throws ParsingException; public abstract List<VideoPreviewInfo> getRelatedVideos() throws ParsingException;
public abstract VideoUrlIdHandler getUrlIdConverter(); public abstract VideoUrlIdHandler getUrlIdConverter();
public abstract String getPageUrl(); public abstract String getPageUrl();
} }

View File

@ -2,6 +2,7 @@ package org.schabi.newpipe.crawler;
import java.io.IOException; import java.io.IOException;
import java.util.List; import java.util.List;
import java.util.Vector;
/** /**
* Created by Christian Schabesberger on 26.08.15. * Created by Christian Schabesberger on 26.08.15.
@ -48,10 +49,11 @@ public class VideoInfo extends AbstractVideoInfo {
/** Load and extract audio*/ /** Load and extract audio*/
videoInfo.audioStreams = extractor.getAudioStreams(); videoInfo.audioStreams = extractor.getAudioStreams();
if(videoInfo.dashMpdUrl != null && !videoInfo.dashMpdUrl.isEmpty()) { if(videoInfo.dashMpdUrl != null && !videoInfo.dashMpdUrl.isEmpty()) {
if(videoInfo.audioStreams == null || videoInfo.audioStreams.length == 0) { if(videoInfo.audioStreams == null) {
videoInfo.audioStreams = videoInfo.audioStreams = new Vector<AudioStream>();
DashMpdParser.getAudioStreams(videoInfo.dashMpdUrl, downloader);
} }
videoInfo.audioStreams.addAll(
DashMpdParser.getAudioStreams(videoInfo.dashMpdUrl, downloader));
} }
/** Extract video stream url*/ /** Extract video stream url*/
videoInfo.videoStreams = extractor.getVideoStreams(); videoInfo.videoStreams = extractor.getVideoStreams();
@ -73,8 +75,8 @@ public class VideoInfo extends AbstractVideoInfo {
public String uploader_thumbnail_url = ""; public String uploader_thumbnail_url = "";
public String description = ""; public String description = "";
/*todo: make this lists over vectors*/ /*todo: make this lists over vectors*/
public VideoStream[] videoStreams = null; public List<VideoStream> videoStreams = null;
public AudioStream[] audioStreams = null; public List<AudioStream> audioStreams = null;
// video streams provided by the dash mpd do not need to be provided as VideoStream. // video streams provided by the dash mpd do not need to be provided as VideoStream.
// Later on this will also aplly to audio streams. Since dash mpd is standarized, // Later on this will also aplly to audio streams. Since dash mpd is standarized,
// crawling such a file is not service dependent. Therefore getting audio only streams by yust // crawling such a file is not service dependent. Therefore getting audio only streams by yust

View File

@ -24,6 +24,7 @@ import org.schabi.newpipe.crawler.VideoPreviewInfo;
import java.io.IOException; import java.io.IOException;
import java.net.URLDecoder; import java.net.URLDecoder;
import java.util.HashMap; import java.util.HashMap;
import java.util.List;
import java.util.Map; import java.util.Map;
import java.util.Vector; import java.util.Vector;
@ -251,13 +252,13 @@ public class YoutubeVideoExtractor implements VideoExtractor {
} }
@Override @Override
public VideoInfo.AudioStream[] getAudioStreams() throws ParsingException { public List<VideoInfo.AudioStream> getAudioStreams() throws ParsingException {
/* If we provide a valid dash manifest, we don't need to provide audio streams extra */ /* If we provide a valid dash manifest, we don't need to provide audio streams extra */
return null; return null;
} }
@Override @Override
public VideoInfo.VideoStream[] getVideoStreams() throws ParsingException { public List<VideoInfo.VideoStream> getVideoStreams() throws ParsingException {
Vector<VideoInfo.VideoStream> videoStreams = new Vector<>(); Vector<VideoInfo.VideoStream> videoStreams = new Vector<>();
try{ try{
String encoded_url_map = playerArgs.getString("url_encoded_fmt_stream_map"); String encoded_url_map = playerArgs.getString("url_encoded_fmt_stream_map");
@ -298,7 +299,7 @@ public class YoutubeVideoExtractor implements VideoExtractor {
throw new ParsingException("Failed to get any video stream"); throw new ParsingException("Failed to get any video stream");
} }
return videoStreams.toArray(new VideoInfo.VideoStream[videoStreams.size()]); return videoStreams;
} }
/**Attempts to parse (and return) the offset to start playing the video from. /**Attempts to parse (and return) the offset to start playing the video from.