mirror of https://github.com/TeamNewPipe/NewPipe
replaced content tountry selection with search language selection.Should now allows users to search for videos in their preferred language. Needs testing before pushing to origin.
This commit is contained in:
parent
4a938b81df
commit
8aff134c56
|
@ -1,6 +1,7 @@
|
||||||
package org.schabi.newpipe;
|
package org.schabi.newpipe;
|
||||||
|
|
||||||
import java.io.BufferedReader;
|
import java.io.BufferedReader;
|
||||||
|
import java.io.IOException;
|
||||||
import java.io.InputStreamReader;
|
import java.io.InputStreamReader;
|
||||||
import java.net.HttpURLConnection;
|
import java.net.HttpURLConnection;
|
||||||
import java.net.URL;
|
import java.net.URL;
|
||||||
|
@ -29,12 +30,25 @@ import java.net.UnknownHostException;
|
||||||
public class Downloader {
|
public class Downloader {
|
||||||
|
|
||||||
private static final String USER_AGENT = "Mozilla/5.0";
|
private static final String USER_AGENT = "Mozilla/5.0";
|
||||||
public static String download(String siteUrl) {
|
|
||||||
|
|
||||||
StringBuffer response = new StringBuffer();
|
public static String download(String siteUrl, String language) {
|
||||||
|
String ret = "";
|
||||||
try {
|
try {
|
||||||
URL url = new URL(siteUrl);
|
URL url = new URL(siteUrl);
|
||||||
HttpURLConnection con = (HttpURLConnection) url.openConnection();
|
HttpURLConnection con = (HttpURLConnection) url.openConnection();
|
||||||
|
con.setRequestProperty("Accept-Language", language);
|
||||||
|
ret = dl(con);
|
||||||
|
}
|
||||||
|
catch(Exception e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
|
private static String dl(HttpURLConnection con) {
|
||||||
|
StringBuffer response = new StringBuffer();
|
||||||
|
|
||||||
|
try {
|
||||||
con.setRequestMethod("GET");
|
con.setRequestMethod("GET");
|
||||||
con.setRequestProperty("User-Agent", USER_AGENT);
|
con.setRequestProperty("User-Agent", USER_AGENT);
|
||||||
|
|
||||||
|
@ -57,4 +71,20 @@ public class Downloader {
|
||||||
}
|
}
|
||||||
return response.toString();
|
return response.toString();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public static String download(String siteUrl) {
|
||||||
|
String ret = "";
|
||||||
|
|
||||||
|
try {
|
||||||
|
URL url = new URL(siteUrl);
|
||||||
|
HttpURLConnection con = (HttpURLConnection) url.openConnection();
|
||||||
|
ret = dl(con);
|
||||||
|
}
|
||||||
|
catch(Exception e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -93,10 +93,10 @@ public class VideoItemListFragment extends ListFragment {
|
||||||
public void run() {
|
public void run() {
|
||||||
try {
|
try {
|
||||||
SharedPreferences sp = PreferenceManager.getDefaultSharedPreferences(getContext());
|
SharedPreferences sp = PreferenceManager.getDefaultSharedPreferences(getContext());
|
||||||
String contentCountryKey = getContext().getString(R.string.contentCountry);
|
String searchLanguageKey = getContext().getString(R.string.searchLanguage);
|
||||||
String contentCountry = sp.getString(contentCountryKey, "");
|
String searchLanguage = sp.getString(searchLanguageKey, "");
|
||||||
SearchEngine.Result result = engine.search(query, page, contentCountry);
|
SearchEngine.Result result = engine.search(query, page, searchLanguage);
|
||||||
Log.i(TAG, "countryCode passed:\""+contentCountry+"\"");
|
Log.i(TAG, "countryCode passed:\""+searchLanguage+"\"");
|
||||||
if(run) {
|
if(run) {
|
||||||
h.post(new ResultRunnable(result, requestId));
|
h.post(new ResultRunnable(result, requestId));
|
||||||
}
|
}
|
||||||
|
|
|
@ -49,7 +49,7 @@ public class YoutubeSearchEngine implements SearchEngine {
|
||||||
private static final String TAG = YoutubeSearchEngine.class.toString();
|
private static final String TAG = YoutubeSearchEngine.class.toString();
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Result search(String query, int page, String countryCode) {
|
public Result search(String query, int page, String languageCode) {
|
||||||
//String contentCountry = PreferenceManager.getDefaultSharedPreferences(this).getString(getString(R.string., "");
|
//String contentCountry = PreferenceManager.getDefaultSharedPreferences(this).getString(getString(R.string., "");
|
||||||
Uri.Builder builder = new Uri.Builder();
|
Uri.Builder builder = new Uri.Builder();
|
||||||
builder.scheme("https")
|
builder.scheme("https")
|
||||||
|
@ -59,20 +59,25 @@ public class YoutubeSearchEngine implements SearchEngine {
|
||||||
.appendQueryParameter("page", Integer.toString(page))
|
.appendQueryParameter("page", Integer.toString(page))
|
||||||
.appendQueryParameter("filters", "video");
|
.appendQueryParameter("filters", "video");
|
||||||
|
|
||||||
//if we've been passed a valid, non-empty country code, append it to the URL
|
String site;
|
||||||
if(countryCode.length() > 0) {
|
String url = builder.build().toString();
|
||||||
if(countryCode.length() == 2) {
|
//if we've been passed a valid, non-empty language code, append it to the URL
|
||||||
builder.appendQueryParameter("gl", countryCode);
|
if(languageCode.length() > 0) {
|
||||||
builder.appendQueryParameter("persist_gl", "1");
|
if(languageCode.length() == 2) {
|
||||||
Log.i(TAG, "URI: \""+builder+"\"");
|
Log.i(TAG, "URI: \""+builder+"\"");
|
||||||
|
site = Downloader.download(url, languageCode);
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
Log.e(TAG, "invalid country code passed to search(): \""+countryCode+"\"");
|
Log.e(TAG, "invalid language code passed to search(): \""+languageCode+"\"");
|
||||||
|
site = Downloader.download(url);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
String url = builder.build().toString();
|
else {
|
||||||
|
site = Downloader.download(url);
|
||||||
|
}
|
||||||
|
|
||||||
String site = Downloader.download(url);
|
|
||||||
|
//String site = Downloader.download(url);
|
||||||
Document doc = Jsoup.parse(site, url);
|
Document doc = Jsoup.parse(site, url);
|
||||||
Result result = new Result();
|
Result result = new Result();
|
||||||
Element list = doc.select("ol[class=\"item-section\"]").first();
|
Element list = doc.select("ol[class=\"item-section\"]").first();
|
||||||
|
|
|
@ -24,183 +24,163 @@
|
||||||
</string-array>
|
</string-array>
|
||||||
<string name="defaultAudioFormat">m4a</string>
|
<string name="defaultAudioFormat">m4a</string>
|
||||||
<string name="showNextVideo">show_next_video</string>
|
<string name="showNextVideo">show_next_video</string>
|
||||||
<string name="contentCountry">content_country</string>
|
<string name="searchLanguage">search_language</string>
|
||||||
<!-- TODO: scrape these programmatically, then store in a local cache -->
|
<!-- TODO: scrape these programmatically, then store in a local cache -->
|
||||||
<!-- alternatively, load these from some local android data store -->
|
<!-- alternatively, load these from some local android data store -->
|
||||||
<string-array name="countryCodes">
|
<string-array name='languageCodes'>
|
||||||
<item></item><!--NONE-->
|
<item>af</item>
|
||||||
<item>US</item>
|
<item>az</item>
|
||||||
<item>DZ</item>
|
<item>id</item>
|
||||||
<item>AR</item>
|
<item>ms</item>
|
||||||
<item>AU</item>
|
<item>ca</item>
|
||||||
<item>AT</item>
|
<item>cs</item>
|
||||||
<item>AZ</item>
|
<item>da</item>
|
||||||
<item>BH</item>
|
<item>de</item>
|
||||||
<item>BY</item>
|
<item>et</item>
|
||||||
<item>BE</item>
|
<item>en-GB</item>
|
||||||
<item>BA</item>
|
<item>en</item>
|
||||||
<item>BR</item>
|
<item>es</item>
|
||||||
<item>BG</item>
|
<item>es-419</item>
|
||||||
<item>CA</item>
|
<item>eu</item>
|
||||||
<item>CL</item>
|
<item>fil</item>
|
||||||
<item>CO</item>
|
<item>fr</item>
|
||||||
<item>HR</item>
|
<item>fr-CA</item>
|
||||||
<item>CZ</item>
|
<item>gl</item>
|
||||||
<item>DK</item>
|
<item>hr</item>
|
||||||
<item>EG</item>
|
<item>zu</item>
|
||||||
<item>EE</item>
|
<item>is</item>
|
||||||
<item>FI</item>
|
<item>it</item>
|
||||||
<item>FR</item>
|
<item>sw</item>
|
||||||
<item>GE</item>
|
<item>lv</item>
|
||||||
<item>DE</item>
|
<item>lt</item>
|
||||||
<item>GH</item>
|
<item>hu</item>
|
||||||
<item>GR</item>
|
<item>nl</item>
|
||||||
<item>HK</item>
|
<item>no</item>
|
||||||
<item>HU</item>
|
<item>uz</item>
|
||||||
<item>IS</item>
|
<item>pl</item>
|
||||||
<item>IN</item>
|
<item>pt-PT</item>
|
||||||
<item>ID</item>
|
<item>pt</item>
|
||||||
<item>IE</item>
|
<item>ro</item>
|
||||||
<item>IL</item>
|
<item>sq</item>
|
||||||
<item>IT</item>
|
<item>sk</item>
|
||||||
<item>JP</item>
|
<item>sl</item>
|
||||||
<item>JO</item>
|
<item>fi</item>
|
||||||
<item>KZ</item>
|
<item>sv</item>
|
||||||
<item>KE</item>
|
<item>vi</item>
|
||||||
<item>KW</item>
|
<item>tr</item>
|
||||||
<item>LV</item>
|
<item>bg</item>
|
||||||
<item>LB</item>
|
<item>ky</item>
|
||||||
<item>LY</item>
|
<item>kk</item>
|
||||||
<item>LT</item>
|
<item>mk</item>
|
||||||
<item>LU</item>
|
<item>mn</item>
|
||||||
<item>MK</item>
|
<item>ru</item>
|
||||||
<item>MY</item>
|
<item>sr</item>
|
||||||
<item>MX</item>
|
<item>uk</item>
|
||||||
<item>ME</item>
|
<item>el</item>
|
||||||
<item>MA</item>
|
<item>hy</item>
|
||||||
<item>NL</item>
|
<item>iw</item>
|
||||||
<item>NZ</item>
|
<item>ur</item>
|
||||||
<item>NG</item>
|
<item>ar</item>
|
||||||
<item>NO</item>
|
<item>fa</item>
|
||||||
<item>OM</item>
|
<item>ne</item>
|
||||||
<item>PE</item>
|
<item>mr</item>
|
||||||
<item>PH</item>
|
<item>hi</item>
|
||||||
<item>PL</item>
|
<item>bn</item>
|
||||||
<item>PT</item>
|
<item>pa</item>
|
||||||
<item>PR</item>
|
<item>gu</item>
|
||||||
<item>QA</item>
|
<item>ta</item>
|
||||||
<item>RO</item>
|
<item>te</item>
|
||||||
<item>RU</item>
|
<item>kn</item>
|
||||||
<item>SA</item>
|
<item>ml</item>
|
||||||
<item>SN</item>
|
<item>si</item>
|
||||||
<item>RS</item>
|
<item>th</item>
|
||||||
<item>SG</item>
|
<item>lo</item>
|
||||||
<item>SK</item>
|
<item>my</item>
|
||||||
<item>SI</item>
|
<item>ka</item>
|
||||||
<item>ZA</item>
|
<item>am</item>
|
||||||
<item>KR</item>
|
<item>km</item>
|
||||||
<item>ES</item>
|
<item>zh-CN</item>
|
||||||
<item>SE</item>
|
<item>zh-TW</item>
|
||||||
<item>CH</item>
|
<item>zh-HK</item>
|
||||||
<item>TW</item>
|
<item>ja</item>
|
||||||
<item>TZ</item>
|
<item>ko</item>
|
||||||
<item>TH</item>
|
|
||||||
<item>TN</item>
|
|
||||||
<item>TR</item>
|
|
||||||
<item>UG</item>
|
|
||||||
<item>UA</item>
|
|
||||||
<item>AE</item>
|
|
||||||
<item>GB</item>
|
|
||||||
<item>VN</item>
|
|
||||||
<item>YE</item>
|
|
||||||
<item>ZW</item>
|
|
||||||
</string-array>
|
</string-array>
|
||||||
<string-array name="countryNames">
|
<string-array name='languageNames'>
|
||||||
<item>(None)</item>
|
<item>Afrikaans</item>
|
||||||
<item>Worldwide (USA)</item>
|
<item>Azərbaycan</item>
|
||||||
<item>Algeria</item>
|
<item>Bahasa Indonesia</item>
|
||||||
<item>Argentina</item>
|
<item>Bahasa Malaysia</item>
|
||||||
<item>Australia</item>
|
<item>Català</item>
|
||||||
<item>Austria</item>
|
<item>Čeština</item>
|
||||||
<item>Azerbaijan</item>
|
<item>Dansk</item>
|
||||||
<item>Bahrain</item>
|
<item>Deutsch</item>
|
||||||
<item>Belarus</item>
|
<item>Eesti</item>
|
||||||
<item>Belgium</item>
|
<item>English (UK)</item>
|
||||||
<item>Bosnia and Herzegovina</item>
|
<item>English (US)</item>
|
||||||
<item>Brazil</item>
|
<item>Español (España)</item>
|
||||||
<item>Bulgaria</item>
|
<item>Español (Latinoamérica)</item>
|
||||||
<item>Canada</item>
|
<item>Euskara</item>
|
||||||
<item>Chile</item>
|
<item>Filipino</item>
|
||||||
<item>Colombia</item>
|
<item>Français</item>
|
||||||
<item>Croatia</item>
|
<item>Français (Canada)</item>
|
||||||
<item>Czech Republic</item>
|
<item>Galego</item>
|
||||||
<item>Denmark</item>
|
<item>Hrvatski</item>
|
||||||
<item>Egypt</item>
|
<item>IsiZulu</item>
|
||||||
<item>Estonia</item>
|
<item>Íslenska</item>
|
||||||
<item>Finland</item>
|
<item>Italiano</item>
|
||||||
<item>France</item>
|
<item>Kiswahili</item>
|
||||||
<item>Georgia</item>
|
<item>Latviešu valoda</item>
|
||||||
<item>Germany</item>
|
<item>Lietuvių</item>
|
||||||
<item>Ghana</item>
|
<item>Magyar</item>
|
||||||
<item>Greece</item>
|
<item>Nederlands</item>
|
||||||
<item>Hong Kong</item>
|
<item>Norsk</item>
|
||||||
<item>Hungary</item>
|
<item>O‘zbek</item>
|
||||||
<item>Iceland</item>
|
<item>Polski</item>
|
||||||
<item>India</item>
|
<item>Português</item>
|
||||||
<item>Indonesia</item>
|
<item>Português (Brasil)</item>
|
||||||
<item>Ireland</item>
|
<item>Română</item>
|
||||||
<item>Israel</item>
|
<item>Shqip</item>
|
||||||
<item>Italy</item>
|
<item>Slovenčina</item>
|
||||||
<item>Japan</item>
|
<item>Slovenščina</item>
|
||||||
<item>Jordan</item>
|
<item>Suomi</item>
|
||||||
<item>Kazakhstan</item>
|
<item>Svenska</item>
|
||||||
<item>Kenya</item>
|
<item>Tiếng Việt</item>
|
||||||
<item>Kuwait</item>
|
<item>Türkçe</item>
|
||||||
<item>Latvia</item>
|
<item>Български</item>
|
||||||
<item>Lebanon</item>
|
<item>Кыргызча</item>
|
||||||
<item>Libya</item>
|
<item>Қазақ Тілі</item>
|
||||||
<item>Lithuania</item>
|
<item>Македонски</item>
|
||||||
<item>Luxembourg</item>
|
<item>Монгол</item>
|
||||||
<item>Macedonia</item>
|
<item>Русский</item>
|
||||||
<item>Malaysia</item>
|
<item>Српски</item>
|
||||||
<item>Mexico</item>
|
<item>Українська</item>
|
||||||
<item>Montenegro</item>
|
<item>Ελληνικά</item>
|
||||||
<item>Morocco</item>
|
<item>Հայերեն</item>
|
||||||
<item>Netherlands</item>
|
<item>עברית</item>
|
||||||
<item>New Zealand</item>
|
<item>اردو</item>
|
||||||
<item>Nigeria</item>
|
<item>العربية</item>
|
||||||
<item>Norway</item>
|
<item>فارسی</item>
|
||||||
<item>Oman</item>
|
<item>नेपाली</item>
|
||||||
<item>Peru</item>
|
<item>मराठी</item>
|
||||||
<item>Philippines</item>
|
<item>हिन्दी</item>
|
||||||
<item>Poland</item>
|
<item>বাংলা</item>
|
||||||
<item>Portugal</item>
|
<item>ਪੰਜਾਬੀ</item>
|
||||||
<item>Puerto Rico</item>
|
<item>ગુજરાતી</item>
|
||||||
<item>Qatar</item>
|
<item>தமிழ்</item>
|
||||||
<item>Romania</item>
|
<item>తెలుగు</item>
|
||||||
<item>Russia</item>
|
<item>ಕನ್ನಡ</item>
|
||||||
<item>Saudi Arabia</item>
|
<item>മലയാളം</item>
|
||||||
<item>Senegal</item>
|
<item>සිංහල</item>
|
||||||
<item>Serbia</item>
|
<item>ภาษาไทย</item>
|
||||||
<item>Singapore</item>
|
<item>ລາວ</item>
|
||||||
<item>Slovakia</item>
|
<item>ဗမာ</item>
|
||||||
<item>Slovenia</item>
|
<item>ქართული</item>
|
||||||
<item>South Africa</item>
|
<item>አማርኛ</item>
|
||||||
<item>South Korea</item>
|
<item>ខ្មែរ</item>
|
||||||
<item>Spain</item>
|
<item>中文 (简体)</item>
|
||||||
<item>Sweden</item>
|
<item>中文 (繁體)</item>
|
||||||
<item>Switzerland</item>
|
<item>中文 (香港)</item>
|
||||||
<item>Taiwan</item>
|
<item>日本語</item>
|
||||||
<item>Tanzania</item>
|
<item>한국어</item>
|
||||||
<item>Thailand</item>
|
|
||||||
<item>Tunisia</item>
|
|
||||||
<item>Turkey</item>
|
|
||||||
<item>Uganda</item>
|
|
||||||
<item>Ukraine</item>
|
|
||||||
<item>United Arab Emirates</item>
|
|
||||||
<item>United Kingdom</item>
|
|
||||||
<item>Vietnam</item>
|
|
||||||
<item>Yemen</item>
|
|
||||||
<item>Zimbabwe</item>
|
|
||||||
</string-array>
|
</string-array>
|
||||||
</resources>
|
</resources>
|
|
@ -49,5 +49,5 @@
|
||||||
<string name="showNextVideoTitle">Show \"Next video\" item.</string>
|
<string name="showNextVideoTitle">Show \"Next video\" item.</string>
|
||||||
<string name="urlNotSupportedText">Url not Supported.</string>
|
<string name="urlNotSupportedText">Url not Supported.</string>
|
||||||
<string name="showSimilarVideosButtonText">Similar Videos</string>
|
<string name="showSimilarVideosButtonText">Similar Videos</string>
|
||||||
<string name="contentCountryTitle">Video Content Country</string>
|
<string name="searchLanguageTitle">Video Search Language</string>
|
||||||
</resources>
|
</resources>
|
|
@ -52,9 +52,9 @@
|
||||||
android:defaultValue="true" />
|
android:defaultValue="true" />
|
||||||
|
|
||||||
<ListPreference
|
<ListPreference
|
||||||
android:key="@string/contentCountry"
|
android:key="@string/searchLanguage"
|
||||||
android:title="@string/contentCountryTitle"
|
android:title="@string/searchLanguageTitle"
|
||||||
android:entries="@array/countryNames"
|
android:entries="@array/languageNames"
|
||||||
android:entryValues="@array/countryCodes"
|
android:entryValues="@array/languageCodes"
|
||||||
android:defaultValue="" /> <!-- default will include no country code in URL-->
|
android:defaultValue="" /> <!-- default will include no country code in URL-->
|
||||||
</PreferenceScreen>
|
</PreferenceScreen>
|
Loading…
Reference in New Issue