mirror of
https://github.com/TeamNewPipe/NewPipe
synced 2024-12-23 16:40:32 +00:00
add InfoItem
This commit is contained in:
parent
27f2c65e6d
commit
ef15902ec4
@ -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() {
|
||||||
|
@ -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,
|
||||||
|
35
app/src/main/java/org/schabi/newpipe/extractor/InfoItem.java
Normal file
35
app/src/main/java/org/schabi/newpipe/extractor/InfoItem.java
Normal 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();
|
||||||
|
}
|
@ -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;
|
||||||
|
@ -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<>();
|
||||||
|
@ -0,0 +1,8 @@
|
|||||||
|
package org.schabi.newpipe.extractor.channel;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Created by the-scrabi on 11.02.17.
|
||||||
|
*/
|
||||||
|
|
||||||
|
public class ChannelInfoItem {
|
||||||
|
}
|
@ -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;
|
||||||
}
|
}
|
||||||
|
@ -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<>();
|
||||||
}
|
}
|
||||||
|
@ -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);
|
||||||
}
|
}
|
||||||
|
|
@ -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;
|
||||||
|
@ -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);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -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;
|
||||||
|
@ -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;
|
||||||
}
|
}
|
||||||
|
|
@ -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() {
|
||||||
|
@ -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;
|
||||||
|
|
||||||
|
@ -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;
|
||||||
}
|
}
|
@ -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();
|
@ -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;
|
@ -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);
|
||||||
|
@ -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();
|
||||||
|
Loading…
Reference in New Issue
Block a user