made all arrays into lists
This commit is contained in:
parent
61471fdd3c
commit
1bf046a8ba
|
@ -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);
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -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)
|
||||||
|
|
|
@ -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();
|
||||||
}
|
}
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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.
|
||||||
|
|
Loading…
Reference in New Issue