kopia lustrzana https://github.com/TeamNewPipe/NewPipe
Merge pull request #73 from joshsoftware/feature_search_suggestion
Feature search suggestion (enhancement)pull/87/head
commit
4a938b81df
|
@ -1,5 +1,6 @@
|
||||||
package org.schabi.newpipe;
|
package org.schabi.newpipe;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
import java.util.Vector;
|
import java.util.Vector;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -31,6 +32,8 @@ public interface SearchEngine {
|
||||||
public Vector<VideoInfoItem> resultList = new Vector<>();
|
public Vector<VideoInfoItem> resultList = new Vector<>();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
ArrayList<String> suggestionList(String query);
|
||||||
|
|
||||||
//Result search(String query, int page);
|
//Result search(String query, int page);
|
||||||
Result search(String query, int page, String contentCountry);
|
Result search(String query, int page, String contentCountry);
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,7 +1,6 @@
|
||||||
package org.schabi.newpipe.youtube;
|
package org.schabi.newpipe.youtube;
|
||||||
|
|
||||||
import android.net.Uri;
|
import android.net.Uri;
|
||||||
import android.preference.PreferenceManager;
|
|
||||||
import android.util.Log;
|
import android.util.Log;
|
||||||
|
|
||||||
import org.jsoup.Jsoup;
|
import org.jsoup.Jsoup;
|
||||||
|
@ -10,10 +9,21 @@ import org.jsoup.nodes.Element;
|
||||||
import org.schabi.newpipe.Downloader;
|
import org.schabi.newpipe.Downloader;
|
||||||
import org.schabi.newpipe.SearchEngine;
|
import org.schabi.newpipe.SearchEngine;
|
||||||
import org.schabi.newpipe.VideoInfoItem;
|
import org.schabi.newpipe.VideoInfoItem;
|
||||||
|
import org.w3c.dom.Node;
|
||||||
|
import org.w3c.dom.NodeList;
|
||||||
|
import org.xml.sax.InputSource;
|
||||||
|
import org.xml.sax.SAXException;
|
||||||
|
|
||||||
|
import java.io.ByteArrayInputStream;
|
||||||
|
import java.io.IOException;
|
||||||
|
import java.util.ArrayList;
|
||||||
import java.util.regex.Matcher;
|
import java.util.regex.Matcher;
|
||||||
import java.util.regex.Pattern;
|
import java.util.regex.Pattern;
|
||||||
|
|
||||||
|
import javax.xml.parsers.DocumentBuilder;
|
||||||
|
import javax.xml.parsers.DocumentBuilderFactory;
|
||||||
|
import javax.xml.parsers.ParserConfigurationException;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Created by Christian Schabesberger on 09.08.15.
|
* Created by Christian Schabesberger on 09.08.15.
|
||||||
*
|
*
|
||||||
|
@ -130,4 +140,52 @@ public class YoutubeSearchEngine implements SearchEngine {
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public ArrayList<String> suggestionList(String query) {
|
||||||
|
|
||||||
|
ArrayList<String> suggestions = new ArrayList<>();
|
||||||
|
|
||||||
|
Uri.Builder builder = new Uri.Builder();
|
||||||
|
builder.scheme("https")
|
||||||
|
.authority("suggestqueries.google.com")
|
||||||
|
.appendPath("complete")
|
||||||
|
.appendPath("search")
|
||||||
|
.appendQueryParameter("client", "")
|
||||||
|
.appendQueryParameter("output", "toolbar")
|
||||||
|
.appendQueryParameter("ds", "yt")
|
||||||
|
.appendQueryParameter("q", query);
|
||||||
|
String url = builder.build().toString();
|
||||||
|
|
||||||
|
String response = Downloader.download(url);
|
||||||
|
|
||||||
|
//TODO: Parse xml data using Jsoup not done
|
||||||
|
DocumentBuilderFactory dbFactory = DocumentBuilderFactory.newInstance();
|
||||||
|
DocumentBuilder dBuilder;
|
||||||
|
org.w3c.dom.Document doc = null;
|
||||||
|
|
||||||
|
try {
|
||||||
|
dBuilder = dbFactory.newDocumentBuilder();
|
||||||
|
doc = dBuilder.parse(new InputSource(new ByteArrayInputStream(response.getBytes("utf-8"))));
|
||||||
|
doc.getDocumentElement().normalize();
|
||||||
|
}catch (ParserConfigurationException | SAXException | IOException e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
|
||||||
|
if(doc!=null){
|
||||||
|
NodeList nList = doc.getElementsByTagName("CompleteSuggestion");
|
||||||
|
for (int temp = 0; temp < nList.getLength(); temp++) {
|
||||||
|
|
||||||
|
NodeList nList1 = doc.getElementsByTagName("suggestion");
|
||||||
|
Node nNode1 = nList1.item(temp);
|
||||||
|
if (nNode1.getNodeType() == Node.ELEMENT_NODE) {
|
||||||
|
org.w3c.dom.Element eElement = (org.w3c.dom.Element) nNode1;
|
||||||
|
suggestions.add(eElement.getAttribute("data"));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}else {
|
||||||
|
Log.e(TAG, "GREAT FUCKING ERROR");
|
||||||
|
}
|
||||||
|
return suggestions;
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
Ładowanie…
Reference in New Issue