add InfoItem

This commit is contained in:
Christian Schabesberger 2017-02-11 21:33:01 +01:00
parent 27f2c65e6d
commit ef15902ec4
20 changed files with 120 additions and 77 deletions

View File

@ -50,7 +50,7 @@ import org.schabi.newpipe.extractor.MediaFormat;
import org.schabi.newpipe.extractor.NewPipe; import org.schabi.newpipe.extractor.NewPipe;
import org.schabi.newpipe.extractor.stream_info.AudioStream; import org.schabi.newpipe.extractor.stream_info.AudioStream;
import org.schabi.newpipe.extractor.stream_info.StreamInfo; import org.schabi.newpipe.extractor.stream_info.StreamInfo;
import org.schabi.newpipe.extractor.stream_info.StreamPreviewInfo; import org.schabi.newpipe.extractor.stream_info.StreamInfoItem;
import org.schabi.newpipe.extractor.stream_info.VideoStream; import org.schabi.newpipe.extractor.stream_info.VideoStream;
import org.schabi.newpipe.info_list.InfoItemBuilder; import org.schabi.newpipe.info_list.InfoItemBuilder;
import org.schabi.newpipe.player.BackgroundPlayer; import org.schabi.newpipe.player.BackgroundPlayer;
@ -536,7 +536,7 @@ public class VideoItemDetailFragment extends Fragment {
private void initSimilarVideos(final StreamInfo info) { private void initSimilarVideos(final StreamInfo info) {
LinearLayout similarLayout = (LinearLayout) activity.findViewById(R.id.similar_streams_view); LinearLayout similarLayout = (LinearLayout) activity.findViewById(R.id.similar_streams_view);
for (final StreamPreviewInfo item : info.related_streams) { for (final StreamInfoItem item : info.related_streams) {
similarLayout.addView(infoItemBuilder.buildView(similarLayout, item)); similarLayout.addView(infoItemBuilder.buildView(similarLayout, item));
} }
infoItemBuilder.setOnItemSelectedListener(new InfoItemBuilder.OnItemSelectedListener() { infoItemBuilder.setOnItemSelectedListener(new InfoItemBuilder.OnItemSelectedListener() {

View File

@ -18,9 +18,9 @@ package org.schabi.newpipe.extractor;
* along with NewPipe. If not, see <http://www.gnu.org/licenses/>. * along with NewPipe. If not, see <http://www.gnu.org/licenses/>.
*/ */
/**Common properties between StreamInfo and StreamPreviewInfo.*/ /**Common properties between StreamInfo and StreamInfoItem.*/
public abstract class AbstractStreamInfo { public abstract class AbstractStreamInfo {
public static enum StreamType { public enum StreamType {
NONE, // placeholder to check if stream type was checked or not NONE, // placeholder to check if stream type was checked or not
VIDEO_STREAM, VIDEO_STREAM,
AUDIO_STREAM, AUDIO_STREAM,

View File

@ -0,0 +1,35 @@
package org.schabi.newpipe.extractor;
import android.icu.text.IDNA;
import static org.schabi.newpipe.extractor.InfoItem.InfoType.STREAM;
/**
* Created by the-scrabi on 11.02.17.
*
* Copyright (C) Christian Schabesberger 2017 <chris.schabesberger@mailbox.org>
* InfoItem.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
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* NewPipe is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with NewPipe. If not, see <http://www.gnu.org/licenses/>.
*/
public interface InfoItem {
public enum InfoType {
STREAM,
PLAYLIST,
CHANNEL
}
void setInfoType(InfoType iT);
InfoType getInfoType();
}

View File

@ -3,7 +3,7 @@ package org.schabi.newpipe.extractor.channel;
import org.schabi.newpipe.extractor.UrlIdHandler; import org.schabi.newpipe.extractor.UrlIdHandler;
import org.schabi.newpipe.extractor.exceptions.ExtractionException; 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.stream_info.StreamPreviewInfoCollector; import org.schabi.newpipe.extractor.stream_info.StreamInfoItemCollector;
import java.io.IOException; import java.io.IOException;
@ -31,7 +31,7 @@ public abstract class ChannelExtractor {
private int serviceId; private int serviceId;
private String url; private String url;
private UrlIdHandler urlIdHandler; private UrlIdHandler urlIdHandler;
private StreamPreviewInfoCollector previewInfoCollector; private StreamInfoItemCollector previewInfoCollector;
private int page = -1; private int page = -1;
public ChannelExtractor(UrlIdHandler urlIdHandler, String url, int page, int serviceId) public ChannelExtractor(UrlIdHandler urlIdHandler, String url, int page, int serviceId)
@ -40,12 +40,12 @@ public abstract class ChannelExtractor {
this.page = page; this.page = page;
this.serviceId = serviceId; this.serviceId = serviceId;
this.urlIdHandler = urlIdHandler; this.urlIdHandler = urlIdHandler;
previewInfoCollector = new StreamPreviewInfoCollector(urlIdHandler, serviceId); previewInfoCollector = new StreamInfoItemCollector(urlIdHandler, serviceId);
} }
public String getUrl() { return url; } public String getUrl() { return url; }
public UrlIdHandler getUrlIdHandler() { return urlIdHandler; } public UrlIdHandler getUrlIdHandler() { return urlIdHandler; }
public StreamPreviewInfoCollector getStreamPreviewInfoCollector() { public StreamInfoItemCollector getStreamPreviewInfoCollector() {
return previewInfoCollector; return previewInfoCollector;
} }
@ -53,7 +53,7 @@ public abstract class ChannelExtractor {
public abstract String getAvatarUrl() throws ParsingException; public abstract String getAvatarUrl() throws ParsingException;
public abstract String getBannerUrl() throws ParsingException; public abstract String getBannerUrl() throws ParsingException;
public abstract String getFeedUrl() throws ParsingException; public abstract String getFeedUrl() throws ParsingException;
public abstract StreamPreviewInfoCollector getStreams() throws ParsingException; public abstract StreamInfoItemCollector getStreams() throws ParsingException;
public abstract boolean hasNextPage() throws ParsingException; public abstract boolean hasNextPage() throws ParsingException;
public int getServiceId() { public int getServiceId() {
return serviceId; return serviceId;

View File

@ -1,8 +1,9 @@
package org.schabi.newpipe.extractor.channel; package org.schabi.newpipe.extractor.channel;
import org.schabi.newpipe.extractor.InfoItem;
import org.schabi.newpipe.extractor.exceptions.ParsingException; import org.schabi.newpipe.extractor.exceptions.ParsingException;
import org.schabi.newpipe.extractor.stream_info.StreamPreviewInfo; import org.schabi.newpipe.extractor.stream_info.StreamInfoItem;
import org.schabi.newpipe.extractor.stream_info.StreamPreviewInfoCollector; import org.schabi.newpipe.extractor.stream_info.StreamInfoItemCollector;
import java.util.List; import java.util.List;
import java.util.Vector; import java.util.Vector;
@ -59,7 +60,7 @@ public class ChannelInfo {
info.errors.add(e); info.errors.add(e);
} }
try { try {
StreamPreviewInfoCollector c = extractor.getStreams(); StreamInfoItemCollector c = extractor.getStreams();
info.related_streams = c.getItemList(); info.related_streams = c.getItemList();
info.errors.addAll(c.getErrors()); info.errors.addAll(c.getErrors());
} catch(Exception e) { } catch(Exception e) {
@ -74,7 +75,7 @@ public class ChannelInfo {
public String avatar_url = ""; public String avatar_url = "";
public String banner_url = ""; public String banner_url = "";
public String feed_url = ""; public String feed_url = "";
public List<StreamPreviewInfo> related_streams = null; public List<StreamInfoItem> related_streams = null;
public boolean hasNextPage = false; public boolean hasNextPage = false;
public List<Throwable> errors = new Vector<>(); public List<Throwable> errors = new Vector<>();

View File

@ -0,0 +1,8 @@
package org.schabi.newpipe.extractor.channel;
/**
* Created by the-scrabi on 11.02.17.
*/
public class ChannelInfoItem {
}

View File

@ -32,18 +32,18 @@ public abstract class SearchEngine {
} }
} }
private StreamPreviewInfoSearchCollector collector; private StreamInfoSearchItemCollector collector;
public SearchEngine(UrlIdHandler urlIdHandler, int serviceId) { public SearchEngine(UrlIdHandler urlIdHandler, int serviceId) {
collector = new StreamPreviewInfoSearchCollector(urlIdHandler, serviceId); collector = new StreamInfoSearchItemCollector(urlIdHandler, serviceId);
} }
protected StreamPreviewInfoSearchCollector getStreamPreviewInfoSearchCollector() { protected StreamInfoSearchItemCollector getStreamPreviewInfoSearchCollector() {
return collector; return collector;
} }
//Result search(String query, int page); //Result search(String query, int page);
public abstract StreamPreviewInfoSearchCollector search( public abstract StreamInfoSearchItemCollector search(
String query, int page, String contentCountry) String query, int page, String contentCountry)
throws ExtractionException, IOException; throws ExtractionException, IOException;
} }

View File

@ -1,7 +1,7 @@
package org.schabi.newpipe.extractor.search; package org.schabi.newpipe.extractor.search;
import org.schabi.newpipe.extractor.exceptions.ExtractionException; import org.schabi.newpipe.extractor.exceptions.ExtractionException;
import org.schabi.newpipe.extractor.stream_info.StreamPreviewInfo; import org.schabi.newpipe.extractor.stream_info.StreamInfoItem;
import java.io.IOException; import java.io.IOException;
import java.util.List; import java.util.List;
@ -45,6 +45,6 @@ public class SearchResult {
} }
public String suggestion = ""; public String suggestion = "";
public List<StreamPreviewInfo> resultList = new Vector<>(); public List<StreamInfoItem> resultList = new Vector<>();
public List<Throwable> errors = new Vector<>(); public List<Throwable> errors = new Vector<>();
} }

View File

@ -1,13 +1,13 @@
package org.schabi.newpipe.extractor.search; package org.schabi.newpipe.extractor.search;
import org.schabi.newpipe.extractor.UrlIdHandler; import org.schabi.newpipe.extractor.UrlIdHandler;
import org.schabi.newpipe.extractor.stream_info.StreamPreviewInfoCollector; import org.schabi.newpipe.extractor.stream_info.StreamInfoItemCollector;
/** /**
* Created by Christian Schabesberger on 11.05.16. * Created by Christian Schabesberger on 11.05.16.
* *
* Copyright (C) Christian Schabesberger 2016 <chris.schabesberger@mailbox.org> * Copyright (C) Christian Schabesberger 2016 <chris.schabesberger@mailbox.org>
* StreamPreviewInfoSearchCollector.java is part of NewPipe. * StreamInfoSearchItemCollector.java is part of NewPipe.
* *
* NewPipe is free software: you can redistribute it and/or modify * NewPipe is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by * it under the terms of the GNU General Public License as published by
@ -23,11 +23,11 @@ import org.schabi.newpipe.extractor.stream_info.StreamPreviewInfoCollector;
* along with NewPipe. If not, see <http://www.gnu.org/licenses/>. * along with NewPipe. If not, see <http://www.gnu.org/licenses/>.
*/ */
public class StreamPreviewInfoSearchCollector extends StreamPreviewInfoCollector { public class StreamInfoSearchItemCollector extends StreamInfoItemCollector {
private String suggestion = ""; private String suggestion = "";
public StreamPreviewInfoSearchCollector(UrlIdHandler handler, int serviceId) { public StreamInfoSearchItemCollector(UrlIdHandler handler, int serviceId) {
super(handler, serviceId); super(handler, serviceId);
} }

View File

@ -15,8 +15,8 @@ import org.schabi.newpipe.extractor.UrlIdHandler;
import org.schabi.newpipe.extractor.channel.ChannelExtractor; import org.schabi.newpipe.extractor.channel.ChannelExtractor;
import org.schabi.newpipe.extractor.exceptions.ExtractionException; 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.stream_info.StreamPreviewInfoCollector; import org.schabi.newpipe.extractor.stream_info.StreamInfoItemCollector;
import org.schabi.newpipe.extractor.stream_info.StreamPreviewInfoExtractor; import org.schabi.newpipe.extractor.stream_info.StreamInfoItemExtractor;
import java.io.IOException; import java.io.IOException;
@ -150,8 +150,8 @@ public class YoutubeChannelExtractor extends ChannelExtractor {
} }
@Override @Override
public StreamPreviewInfoCollector getStreams() throws ParsingException { public StreamInfoItemCollector getStreams() throws ParsingException {
StreamPreviewInfoCollector collector = getStreamPreviewInfoCollector(); StreamInfoItemCollector collector = getStreamPreviewInfoCollector();
Element ul = null; Element ul = null;
if(isAjaxPage) { if(isAjaxPage) {
ul = doc.select("body").first(); ul = doc.select("body").first();
@ -161,7 +161,7 @@ public class YoutubeChannelExtractor extends ChannelExtractor {
for(final Element li : ul.children()) { for(final Element li : ul.children()) {
if (li.select("div[class=\"feed-item-dismissable\"]").first() != null) { if (li.select("div[class=\"feed-item-dismissable\"]").first() != null) {
collector.commit(new StreamPreviewInfoExtractor() { collector.commit(new StreamInfoItemExtractor() {
@Override @Override
public AbstractStreamInfo.StreamType getStreamType() throws ParsingException { public AbstractStreamInfo.StreamType getStreamType() throws ParsingException {
return AbstractStreamInfo.StreamType.VIDEO_STREAM; return AbstractStreamInfo.StreamType.VIDEO_STREAM;

View File

@ -8,8 +8,8 @@ import org.schabi.newpipe.extractor.NewPipe;
import org.schabi.newpipe.extractor.UrlIdHandler; import org.schabi.newpipe.extractor.UrlIdHandler;
import org.schabi.newpipe.extractor.exceptions.ExtractionException; import org.schabi.newpipe.extractor.exceptions.ExtractionException;
import org.schabi.newpipe.extractor.search.SearchEngine; import org.schabi.newpipe.extractor.search.SearchEngine;
import org.schabi.newpipe.extractor.search.StreamPreviewInfoSearchCollector; import org.schabi.newpipe.extractor.search.StreamInfoSearchItemCollector;
import org.schabi.newpipe.extractor.stream_info.StreamPreviewInfoExtractor; import org.schabi.newpipe.extractor.stream_info.StreamInfoItemExtractor;
import java.net.URLEncoder; import java.net.URLEncoder;
import java.io.IOException; import java.io.IOException;
@ -45,9 +45,9 @@ public class YoutubeSearchEngine extends SearchEngine {
} }
@Override @Override
public StreamPreviewInfoSearchCollector search(String query, int page, String languageCode) public StreamInfoSearchItemCollector search(String query, int page, String languageCode)
throws IOException, ExtractionException { throws IOException, ExtractionException {
StreamPreviewInfoSearchCollector collector = getStreamPreviewInfoSearchCollector(); StreamInfoSearchItemCollector collector = getStreamPreviewInfoSearchCollector();
Downloader downloader = NewPipe.getDownloader(); Downloader downloader = NewPipe.getDownloader();
@ -107,7 +107,7 @@ public class YoutubeSearchEngine extends SearchEngine {
return collector; return collector;
} }
private StreamPreviewInfoExtractor extractPreviewInfo(final Element item) { private StreamInfoItemExtractor extractPreviewInfo(final Element item) {
return new YoutubeStreamPreviewInfoExtractor(item); return new YoutubeStreamInfoItemExtractor(item);
} }
} }

View File

@ -20,8 +20,8 @@ import org.schabi.newpipe.extractor.UrlIdHandler;
import org.schabi.newpipe.extractor.MediaFormat; import org.schabi.newpipe.extractor.MediaFormat;
import org.schabi.newpipe.extractor.stream_info.StreamExtractor; import org.schabi.newpipe.extractor.stream_info.StreamExtractor;
import org.schabi.newpipe.extractor.stream_info.StreamInfo; import org.schabi.newpipe.extractor.stream_info.StreamInfo;
import org.schabi.newpipe.extractor.stream_info.StreamPreviewInfoCollector; import org.schabi.newpipe.extractor.stream_info.StreamInfoItemCollector;
import org.schabi.newpipe.extractor.stream_info.StreamPreviewInfoExtractor; import org.schabi.newpipe.extractor.stream_info.StreamInfoItemExtractor;
import org.schabi.newpipe.extractor.stream_info.VideoStream; import org.schabi.newpipe.extractor.stream_info.VideoStream;
import java.io.IOException; import java.io.IOException;
@ -657,7 +657,7 @@ public class YoutubeStreamExtractor extends StreamExtractor {
} }
@Override @Override
public StreamPreviewInfoExtractor getNextVideo() throws ParsingException { public StreamInfoItemExtractor getNextVideo() throws ParsingException {
try { try {
return extractVideoPreviewInfo(doc.select("div[class=\"watch-sidebar-section\"]").first() return extractVideoPreviewInfo(doc.select("div[class=\"watch-sidebar-section\"]").first()
.select("li").first()); .select("li").first());
@ -667,9 +667,9 @@ public class YoutubeStreamExtractor extends StreamExtractor {
} }
@Override @Override
public StreamPreviewInfoCollector getRelatedVideos() throws ParsingException { public StreamInfoItemCollector getRelatedVideos() throws ParsingException {
try { try {
StreamPreviewInfoCollector collector = getStreamPreviewInfoCollector(); StreamInfoItemCollector collector = getStreamPreviewInfoCollector();
Element ul = doc.select("ul[id=\"watch-related\"]").first(); Element ul = doc.select("ul[id=\"watch-related\"]").first();
if(ul != null) { if(ul != null) {
for (Element li : ul.children()) { for (Element li : ul.children()) {
@ -707,10 +707,10 @@ public class YoutubeStreamExtractor extends StreamExtractor {
} }
/**Provides information about links to other videos on the video page, such as related videos. /**Provides information about links to other videos on the video page, such as related videos.
* This is encapsulated in a StreamPreviewInfo object, * This is encapsulated in a StreamInfoItem object,
* which is a subset of the fields in a full StreamInfo.*/ * which is a subset of the fields in a full StreamInfo.*/
private StreamPreviewInfoExtractor extractVideoPreviewInfo(final Element li) { private StreamInfoItemExtractor extractVideoPreviewInfo(final Element li) {
return new StreamPreviewInfoExtractor() { return new StreamInfoItemExtractor() {
@Override @Override
public AbstractStreamInfo.StreamType getStreamType() throws ParsingException { public AbstractStreamInfo.StreamType getStreamType() throws ParsingException {
return null; return null;

View File

@ -4,11 +4,11 @@ import org.jsoup.nodes.Element;
import org.schabi.newpipe.extractor.AbstractStreamInfo; import org.schabi.newpipe.extractor.AbstractStreamInfo;
import org.schabi.newpipe.extractor.Parser; import org.schabi.newpipe.extractor.Parser;
import org.schabi.newpipe.extractor.exceptions.ParsingException; import org.schabi.newpipe.extractor.exceptions.ParsingException;
import org.schabi.newpipe.extractor.stream_info.StreamPreviewInfoExtractor; import org.schabi.newpipe.extractor.stream_info.StreamInfoItemExtractor;
/** /**
* Copyright (C) Christian Schabesberger 2016 <chris.schabesberger@mailbox.org> * Copyright (C) Christian Schabesberger 2016 <chris.schabesberger@mailbox.org>
* YoutubeStreamPreviewInfoExtractor.java is part of NewPipe. * YoutubeStreamInfoItemExtractor.java is part of NewPipe.
* *
* NewPipe is free software: you can redistribute it and/or modify * NewPipe is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by * it under the terms of the GNU General Public License as published by
@ -24,11 +24,11 @@ import org.schabi.newpipe.extractor.stream_info.StreamPreviewInfoExtractor;
* along with NewPipe. If not, see <http://www.gnu.org/licenses/>. * along with NewPipe. If not, see <http://www.gnu.org/licenses/>.
*/ */
public class YoutubeStreamPreviewInfoExtractor implements StreamPreviewInfoExtractor { public class YoutubeStreamInfoItemExtractor implements StreamInfoItemExtractor {
private final Element item; private final Element item;
public YoutubeStreamPreviewInfoExtractor(Element item) { public YoutubeStreamInfoItemExtractor(Element item) {
this.item = item; this.item = item;
} }

View File

@ -35,7 +35,7 @@ public abstract class StreamExtractor {
private int serviceId; private int serviceId;
private String url; private String url;
private UrlIdHandler urlIdHandler; private UrlIdHandler urlIdHandler;
private StreamPreviewInfoCollector previewInfoCollector; private StreamInfoItemCollector previewInfoCollector;
public class ExtractorInitException extends ExtractionException { public class ExtractorInitException extends ExtractionException {
public ExtractorInitException(String message) { public ExtractorInitException(String message) {
@ -61,10 +61,10 @@ public abstract class StreamExtractor {
public StreamExtractor(UrlIdHandler urlIdHandler, String url, int serviceId) { public StreamExtractor(UrlIdHandler urlIdHandler, String url, int serviceId) {
this.serviceId = serviceId; this.serviceId = serviceId;
this.urlIdHandler = urlIdHandler; this.urlIdHandler = urlIdHandler;
previewInfoCollector = new StreamPreviewInfoCollector(urlIdHandler, serviceId); previewInfoCollector = new StreamInfoItemCollector(urlIdHandler, serviceId);
} }
protected StreamPreviewInfoCollector getStreamPreviewInfoCollector() { protected StreamInfoItemCollector getStreamPreviewInfoCollector() {
return previewInfoCollector; return previewInfoCollector;
} }
@ -94,8 +94,8 @@ public abstract class StreamExtractor {
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 StreamPreviewInfoExtractor getNextVideo() throws ParsingException; public abstract StreamInfoItemExtractor getNextVideo() throws ParsingException;
public abstract StreamPreviewInfoCollector getRelatedVideos() throws ParsingException; public abstract StreamInfoItemCollector getRelatedVideos() throws ParsingException;
public abstract String getPageUrl(); public abstract String getPageUrl();
public abstract StreamInfo.StreamType getStreamType() throws ParsingException; public abstract StreamInfo.StreamType getStreamType() throws ParsingException;
public int getServiceId() { public int getServiceId() {

View File

@ -55,14 +55,14 @@ public class StreamInfo extends AbstractStreamInfo {
this.view_count = avi.view_count; this.view_count = avi.view_count;
//todo: better than this //todo: better than this
if(avi instanceof StreamPreviewInfo) { if(avi instanceof StreamInfoItem) {
//shitty String to convert code //shitty String to convert code
/* /*
String dur = ((StreamPreviewInfo)avi).duration; String dur = ((StreamInfoItem)avi).duration;
int minutes = Integer.parseInt(dur.substring(0, dur.indexOf(":"))); int minutes = Integer.parseInt(dur.substring(0, dur.indexOf(":")));
int seconds = Integer.parseInt(dur.substring(dur.indexOf(":")+1, dur.length())); int seconds = Integer.parseInt(dur.substring(dur.indexOf(":")+1, dur.length()));
*/ */
this.duration = ((StreamPreviewInfo)avi).duration; this.duration = ((StreamInfoItem)avi).duration;
} }
} }
@ -241,9 +241,9 @@ public class StreamInfo extends AbstractStreamInfo {
// get next video // get next video
if(streamInfo.next_video != null) if(streamInfo.next_video != null)
{ {
StreamPreviewInfoCollector c = new StreamPreviewInfoCollector( StreamInfoItemCollector c = new StreamInfoItemCollector(
extractor.getUrlIdHandler(), extractor.getServiceId()); extractor.getUrlIdHandler(), extractor.getServiceId());
StreamPreviewInfoExtractor nextVideo = extractor.getNextVideo(); StreamInfoItemExtractor nextVideo = extractor.getNextVideo();
c.commit(nextVideo); c.commit(nextVideo);
if(c.getItemList().size() != 0) { if(c.getItemList().size() != 0) {
streamInfo.next_video = c.getItemList().get(0); streamInfo.next_video = c.getItemList().get(0);
@ -256,7 +256,7 @@ public class StreamInfo extends AbstractStreamInfo {
} }
try { try {
// get related videos // get related videos
StreamPreviewInfoCollector c = extractor.getRelatedVideos(); StreamInfoItemCollector c = extractor.getRelatedVideos();
streamInfo.related_streams = c.getItemList(); streamInfo.related_streams = c.getItemList();
streamInfo.errors.addAll(c.getErrors()); streamInfo.errors.addAll(c.getErrors());
} catch(Exception e) { } catch(Exception e) {
@ -284,8 +284,8 @@ public class StreamInfo extends AbstractStreamInfo {
public int like_count = -1; public int like_count = -1;
public int dislike_count = -1; public int dislike_count = -1;
public String average_rating = ""; public String average_rating = "";
public StreamPreviewInfo next_video = null; public StreamInfoItem next_video = null;
public List<StreamPreviewInfo> related_streams = null; public List<StreamInfoItem> related_streams = null;
//in seconds. some metadata is not passed using a StreamInfo object! //in seconds. some metadata is not passed using a StreamInfo object!
public int start_position = 0; public int start_position = 0;

View File

@ -4,7 +4,7 @@ package org.schabi.newpipe.extractor.stream_info;
* Created by Christian Schabesberger on 26.08.15. * Created by Christian Schabesberger on 26.08.15.
* *
* Copyright (C) Christian Schabesberger 2016 <chris.schabesberger@mailbox.org> * Copyright (C) Christian Schabesberger 2016 <chris.schabesberger@mailbox.org>
* StreamPreviewInfo.java is part of NewPipe. * StreamInfoItem.java is part of NewPipe.
* *
* NewPipe is free software: you can redistribute it and/or modify * NewPipe is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by * it under the terms of the GNU General Public License as published by
@ -23,6 +23,6 @@ package org.schabi.newpipe.extractor.stream_info;
import org.schabi.newpipe.extractor.AbstractStreamInfo; import org.schabi.newpipe.extractor.AbstractStreamInfo;
/**Info object for previews of unopened videos, eg search results, related videos*/ /**Info object for previews of unopened videos, eg search results, related videos*/
public class StreamPreviewInfo extends AbstractStreamInfo { public class StreamInfoItem extends AbstractStreamInfo {
public int duration; public int duration;
} }

View File

@ -4,7 +4,6 @@ import org.schabi.newpipe.extractor.NewPipe;
import org.schabi.newpipe.extractor.UrlIdHandler; import org.schabi.newpipe.extractor.UrlIdHandler;
import org.schabi.newpipe.extractor.exceptions.FoundAdException; import org.schabi.newpipe.extractor.exceptions.FoundAdException;
import org.schabi.newpipe.extractor.exceptions.ParsingException; import org.schabi.newpipe.extractor.exceptions.ParsingException;
import org.schabi.newpipe.extractor.services.youtube.YoutubeStreamUrlIdHandler;
import java.util.List; import java.util.List;
import java.util.Vector; import java.util.Vector;
@ -13,7 +12,7 @@ import java.util.Vector;
* Created by Christian Schabesberger on 28.02.16. * Created by Christian Schabesberger on 28.02.16.
* *
* Copyright (C) Christian Schabesberger 2016 <chris.schabesberger@mailbox.org> * Copyright (C) Christian Schabesberger 2016 <chris.schabesberger@mailbox.org>
* StreamPreviewInfoCollector.java is part of NewPipe. * StreamInfoItemCollector.java is part of NewPipe.
* *
* NewPipe is free software: you can redistribute it and/or modify * NewPipe is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by * it under the terms of the GNU General Public License as published by
@ -29,18 +28,18 @@ import java.util.Vector;
* along with NewPipe. If not, see <http://www.gnu.org/licenses/>. * along with NewPipe. If not, see <http://www.gnu.org/licenses/>.
*/ */
public class StreamPreviewInfoCollector { public class StreamInfoItemCollector {
private List<StreamPreviewInfo> itemList = new Vector<>(); private List<StreamInfoItem> itemList = new Vector<>();
private List<Throwable> errors = new Vector<>(); private List<Throwable> errors = new Vector<>();
private UrlIdHandler urlIdHandler; private UrlIdHandler urlIdHandler;
private int serviceId = -1; private int serviceId = -1;
public StreamPreviewInfoCollector(UrlIdHandler handler, int serviceId) { public StreamInfoItemCollector(UrlIdHandler handler, int serviceId) {
urlIdHandler = handler; urlIdHandler = handler;
this.serviceId = serviceId; this.serviceId = serviceId;
} }
public List<StreamPreviewInfo> getItemList() { public List<StreamInfoItem> getItemList() {
return itemList; return itemList;
} }
@ -52,9 +51,9 @@ public class StreamPreviewInfoCollector {
errors.add(e); errors.add(e);
} }
public void commit(StreamPreviewInfoExtractor extractor) throws ParsingException { public void commit(StreamInfoItemExtractor extractor) throws ParsingException {
try { try {
StreamPreviewInfo resultItem = new StreamPreviewInfo(); StreamInfoItem resultItem = new StreamInfoItem();
// importand information // importand information
resultItem.service_id = serviceId; resultItem.service_id = serviceId;
resultItem.webpage_url = extractor.getWebPageUrl(); resultItem.webpage_url = extractor.getWebPageUrl();

View File

@ -7,7 +7,7 @@ import org.schabi.newpipe.extractor.exceptions.ParsingException;
* Created by Christian Schabesberger on 28.02.16. * Created by Christian Schabesberger on 28.02.16.
* *
* Copyright (C) Christian Schabesberger 2016 <chris.schabesberger@mailbox.org> * Copyright (C) Christian Schabesberger 2016 <chris.schabesberger@mailbox.org>
* StreamPreviewInfoExtractor.java is part of NewPipe. * StreamInfoItemExtractor.java is part of NewPipe.
* *
* NewPipe is free software: you can redistribute it and/or modify * NewPipe is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by * it under the terms of the GNU General Public License as published by
@ -23,7 +23,7 @@ import org.schabi.newpipe.extractor.exceptions.ParsingException;
* along with NewPipe. If not, see <http://www.gnu.org/licenses/>. * along with NewPipe. If not, see <http://www.gnu.org/licenses/>.
*/ */
public interface StreamPreviewInfoExtractor { public interface StreamInfoItemExtractor {
AbstractStreamInfo.StreamType getStreamType() throws ParsingException; AbstractStreamInfo.StreamType getStreamType() throws ParsingException;
String getWebPageUrl() throws ParsingException; String getWebPageUrl() throws ParsingException;
String getTitle() throws ParsingException; String getTitle() throws ParsingException;

View File

@ -11,7 +11,7 @@ import com.nostra13.universalimageloader.core.ImageLoader;
import org.schabi.newpipe.ImageErrorLoadingListener; import org.schabi.newpipe.ImageErrorLoadingListener;
import org.schabi.newpipe.R; import org.schabi.newpipe.R;
import org.schabi.newpipe.extractor.AbstractStreamInfo; import org.schabi.newpipe.extractor.AbstractStreamInfo;
import org.schabi.newpipe.extractor.stream_info.StreamPreviewInfo; import org.schabi.newpipe.extractor.stream_info.StreamInfoItem;
/** /**
* Created by Christian Schabesberger on 26.09.16. * Created by Christian Schabesberger on 26.09.16.
@ -55,7 +55,7 @@ public class InfoItemBuilder {
this.onItemSelectedListener = onItemSelectedListener; this.onItemSelectedListener = onItemSelectedListener;
} }
public void buildByHolder(InfoItemHolder holder, final StreamPreviewInfo info) { public void buildByHolder(InfoItemHolder holder, final StreamInfoItem info) {
// fill holder with information // fill holder with information
holder.itemVideoTitleView.setText(info.title); holder.itemVideoTitleView.setText(info.title);
if(info.uploader != null && !info.uploader.isEmpty()) { if(info.uploader != null && !info.uploader.isEmpty()) {
@ -97,7 +97,7 @@ public class InfoItemBuilder {
}); });
} }
public View buildView(ViewGroup parent, final StreamPreviewInfo info) { public View buildView(ViewGroup parent, final StreamInfoItem info) {
View streamPreviewView = LayoutInflater.from(parent.getContext()) View streamPreviewView = LayoutInflater.from(parent.getContext())
.inflate(R.layout.video_item, parent, false); .inflate(R.layout.video_item, parent, false);
InfoItemHolder holder = new InfoItemHolder(streamPreviewView); InfoItemHolder holder = new InfoItemHolder(streamPreviewView);

View File

@ -7,7 +7,7 @@ import android.view.View;
import android.view.ViewGroup; import android.view.ViewGroup;
import org.schabi.newpipe.R; import org.schabi.newpipe.R;
import org.schabi.newpipe.extractor.stream_info.StreamPreviewInfo; import org.schabi.newpipe.extractor.stream_info.StreamInfoItem;
import java.util.List; import java.util.List;
import java.util.Vector; import java.util.Vector;
@ -35,7 +35,7 @@ import java.util.Vector;
public class InfoListAdapter extends RecyclerView.Adapter<InfoItemHolder> { public class InfoListAdapter extends RecyclerView.Adapter<InfoItemHolder> {
private final InfoItemBuilder infoItemBuilder; private final InfoItemBuilder infoItemBuilder;
private final List<StreamPreviewInfo> streamList; private final List<StreamInfoItem> streamList;
public InfoListAdapter(Activity a, View rootView) { public InfoListAdapter(Activity a, View rootView) {
infoItemBuilder = new InfoItemBuilder(a, rootView); infoItemBuilder = new InfoItemBuilder(a, rootView);
@ -47,7 +47,7 @@ public class InfoListAdapter extends RecyclerView.Adapter<InfoItemHolder> {
infoItemBuilder.setOnItemSelectedListener(onItemSelectedListener); infoItemBuilder.setOnItemSelectedListener(onItemSelectedListener);
} }
public void addStreamItemList(List<StreamPreviewInfo> videos) { public void addStreamItemList(List<StreamInfoItem> videos) {
if(videos!= null) { if(videos!= null) {
streamList.addAll(videos); streamList.addAll(videos);
notifyDataSetChanged(); notifyDataSetChanged();