mirror of
https://github.com/TeamPiped/Piped-Backend.git
synced 2024-12-13 22:00:29 +05:30
Add search.
This commit is contained in:
parent
26b92c751a
commit
709478605a
@ -124,6 +124,20 @@ public class Main {
|
|||||||
|
|
||||||
});
|
});
|
||||||
|
|
||||||
|
routes.get("/search", (req, res) -> {
|
||||||
|
|
||||||
|
QueryStringDecoder query = new QueryStringDecoder(req.uri());
|
||||||
|
|
||||||
|
try {
|
||||||
|
return writeResponse(res, ResponseHelper.searchResponse(query.parameters().get("q").get(0)), 200,
|
||||||
|
"public, max-age=600");
|
||||||
|
} catch (Exception e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
return writeResponse(res, ExceptionUtils.getStackTrace(e), 500, "private");
|
||||||
|
}
|
||||||
|
|
||||||
|
});
|
||||||
|
|
||||||
routes.get("/trending", (req, res) -> {
|
routes.get("/trending", (req, res) -> {
|
||||||
|
|
||||||
try {
|
try {
|
||||||
|
@ -21,6 +21,7 @@ import org.schabi.newpipe.extractor.comments.CommentsInfo;
|
|||||||
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.kiosk.KioskInfo;
|
import org.schabi.newpipe.extractor.kiosk.KioskInfo;
|
||||||
|
import org.schabi.newpipe.extractor.search.SearchInfo;
|
||||||
import org.schabi.newpipe.extractor.stream.Stream;
|
import org.schabi.newpipe.extractor.stream.Stream;
|
||||||
import org.schabi.newpipe.extractor.stream.StreamInfo;
|
import org.schabi.newpipe.extractor.stream.StreamInfo;
|
||||||
import org.schabi.newpipe.extractor.stream.StreamInfoItem;
|
import org.schabi.newpipe.extractor.stream.StreamInfoItem;
|
||||||
@ -37,6 +38,8 @@ import me.kavin.piped.utils.obj.PipedStream;
|
|||||||
import me.kavin.piped.utils.obj.StreamItem;
|
import me.kavin.piped.utils.obj.StreamItem;
|
||||||
import me.kavin.piped.utils.obj.Streams;
|
import me.kavin.piped.utils.obj.Streams;
|
||||||
import me.kavin.piped.utils.obj.Subtitle;
|
import me.kavin.piped.utils.obj.Subtitle;
|
||||||
|
import me.kavin.piped.utils.obj.search.SearchItem;
|
||||||
|
import me.kavin.piped.utils.obj.search.SearchStream;
|
||||||
|
|
||||||
public class ResponseHelper {
|
public class ResponseHelper {
|
||||||
|
|
||||||
@ -205,6 +208,33 @@ public class ResponseHelper {
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static final String searchResponse(String q) throws IOException, ExtractionException, InterruptedException {
|
||||||
|
|
||||||
|
final SearchInfo info = SearchInfo.getInfo(Constants.YOUTUBE_SERVICE,
|
||||||
|
Constants.YOUTUBE_SERVICE.getSearchQHFactory().fromQuery(q));
|
||||||
|
|
||||||
|
ObjectArrayList<SearchItem> items = new ObjectArrayList<>();
|
||||||
|
|
||||||
|
info.getRelatedItems().forEach(item -> {
|
||||||
|
switch (item.getInfoType()) {
|
||||||
|
case STREAM:
|
||||||
|
StreamInfoItem stream = (StreamInfoItem) item;
|
||||||
|
items.add(new SearchStream(item.getName(), rewriteURL(item.getThumbnailUrl()),
|
||||||
|
item.getUrl().substring(23), stream.getViewCount(), stream.getDuration()));
|
||||||
|
break;
|
||||||
|
case CHANNEL:
|
||||||
|
items.add(new SearchItem(item.getName(), rewriteURL(item.getThumbnailUrl()),
|
||||||
|
item.getUrl().substring(23)));
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
return Constants.mapper.writeValueAsString(items);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
private static final String getLBRYStreamURL(String videoId) throws IOException, InterruptedException {
|
private static final String getLBRYStreamURL(String videoId) throws IOException, InterruptedException {
|
||||||
|
|
||||||
String lbryId = new JSONObject(Constants.h2client.send(HttpRequest
|
String lbryId = new JSONObject(Constants.h2client.send(HttpRequest
|
||||||
|
@ -0,0 +1,24 @@
|
|||||||
|
package me.kavin.piped.utils.obj.search;
|
||||||
|
|
||||||
|
public class SearchItem {
|
||||||
|
|
||||||
|
private String name, thumbnail, url;
|
||||||
|
|
||||||
|
public SearchItem(String name, String thumbnail, String url) {
|
||||||
|
this.name = name;
|
||||||
|
this.thumbnail = thumbnail;
|
||||||
|
this.url = url;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getName() {
|
||||||
|
return name;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getThumbnail() {
|
||||||
|
return thumbnail;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getUrl() {
|
||||||
|
return url;
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,20 @@
|
|||||||
|
package me.kavin.piped.utils.obj.search;
|
||||||
|
|
||||||
|
public class SearchStream extends SearchItem {
|
||||||
|
|
||||||
|
private long views, duration;
|
||||||
|
|
||||||
|
public SearchStream(String name, String thumbnail, String url, long views, long duration) {
|
||||||
|
super(name, thumbnail, url);
|
||||||
|
this.views = views;
|
||||||
|
this.duration = duration;
|
||||||
|
}
|
||||||
|
|
||||||
|
public long getViews() {
|
||||||
|
return views;
|
||||||
|
}
|
||||||
|
|
||||||
|
public long getDuration() {
|
||||||
|
return duration;
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user