mirror of
https://github.com/TeamNewPipe/NewPipe.git
synced 2024-11-21 18:42:35 +01:00
tryna merge dem files
This commit is contained in:
commit
d0877c3132
@ -77,7 +77,7 @@ public class ActionBarHandler {
|
||||
int defaultResolutionPos = 0;
|
||||
|
||||
for(int i = 0; i < videoStreams.length; i++) {
|
||||
itemArray[i] = VideoInfo.getNameById(videoStreams[i].format) + " " + videoStreams[i].resolution;
|
||||
itemArray[i] = MediaFormat.getNameById(videoStreams[i].format) + " " + videoStreams[i].resolution;
|
||||
if(defaultResolution.equals(videoStreams[i].resolution)) {
|
||||
defaultResolutionPos = i;
|
||||
}
|
||||
@ -98,14 +98,14 @@ public class ActionBarHandler {
|
||||
.getString(activity.getString(R.string.defaultAudioFormatPreference), "webm");
|
||||
if(preferedFormat.equals("webm")) {
|
||||
for(VideoInfo.AudioStream s : audioStreams) {
|
||||
if(s.format == VideoInfo.I_WEBMA) {
|
||||
if(s.format == MediaFormat.WEBMA.id) {
|
||||
audioStream = s;
|
||||
}
|
||||
}
|
||||
} else if(preferedFormat.equals("m4a")){
|
||||
for(VideoInfo.AudioStream s : audioStreams) {
|
||||
Log.d(TAG, VideoInfo.getMimeById(s.format) + " : " + Integer.toString(s.bandwidth));
|
||||
if(s.format == VideoInfo.I_M4A &&
|
||||
Log.d(TAG, MediaFormat.getMimeById(s.format) + " : " + Integer.toString(s.bandwidth));
|
||||
if(s.format == MediaFormat.M4A.id &&
|
||||
(audioStream == null || audioStream.bandwidth > s.bandwidth)) {
|
||||
audioStream = s;
|
||||
Log.d(TAG, "last choosen");
|
||||
@ -196,7 +196,7 @@ public class ActionBarHandler {
|
||||
intent.setAction(Intent.ACTION_VIEW);
|
||||
|
||||
intent.setDataAndType(Uri.parse(videoStreams[selectedStream].url),
|
||||
VideoInfo.getMimeById(videoStreams[selectedStream].format));
|
||||
MediaFormat.getMimeById(videoStreams[selectedStream].format));
|
||||
intent.putExtra(Intent.EXTRA_TITLE, videoTitle);
|
||||
intent.putExtra("title", videoTitle);
|
||||
|
||||
@ -237,8 +237,8 @@ public class ActionBarHandler {
|
||||
public void downloadVideo() {
|
||||
Log.d(TAG, "bla");
|
||||
if(!videoTitle.isEmpty()) {
|
||||
String videoSuffix = "." + VideoInfo.getSuffixById(videoStreams[selectedStream].format);
|
||||
String audioSuffix = "." + VideoInfo.getSuffixById(audioStream.format);
|
||||
String videoSuffix = "." + MediaFormat.getSuffixById(videoStreams[selectedStream].format);
|
||||
String audioSuffix = "." + MediaFormat.getSuffixById(audioStream.format);
|
||||
Bundle args = new Bundle();
|
||||
args.putString(DownloadDialog.FILE_SUFFIX_VIDEO, videoSuffix);
|
||||
args.putString(DownloadDialog.FILE_SUFFIX_AUDIO, audioSuffix);
|
||||
@ -297,7 +297,7 @@ public class ActionBarHandler {
|
||||
try {
|
||||
intent.setAction(Intent.ACTION_VIEW);
|
||||
intent.setDataAndType(Uri.parse(audioStream.url),
|
||||
VideoInfo.getMimeById(audioStream.format));
|
||||
MediaFormat.getMimeById(audioStream.format));
|
||||
intent.putExtra(Intent.EXTRA_TITLE, videoTitle);
|
||||
intent.putExtra("title", videoTitle);
|
||||
activity.startActivity(intent); // HERE !!!
|
||||
|
@ -1,6 +1,7 @@
|
||||
package org.schabi.newpipe;
|
||||
|
||||
import java.io.BufferedReader;
|
||||
import java.io.IOException;
|
||||
import java.io.InputStreamReader;
|
||||
import java.net.HttpURLConnection;
|
||||
import java.net.URL;
|
||||
@ -29,12 +30,25 @@ import java.net.UnknownHostException;
|
||||
public class Downloader {
|
||||
|
||||
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 {
|
||||
URL url = new URL(siteUrl);
|
||||
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.setRequestProperty("User-Agent", USER_AGENT);
|
||||
|
||||
@ -57,4 +71,20 @@ public class Downloader {
|
||||
}
|
||||
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;
|
||||
}
|
||||
}
|
||||
|
64
app/src/main/java/org/schabi/newpipe/MediaFormat.java
Normal file
64
app/src/main/java/org/schabi/newpipe/MediaFormat.java
Normal file
@ -0,0 +1,64 @@
|
||||
package org.schabi.newpipe;
|
||||
|
||||
/**
|
||||
* Created by Adam Howard on 08/11/15.
|
||||
*
|
||||
* Copyright (c) Christian Schabesberger <chris.schabesberger@mailbox.org>
|
||||
* and Adam Howard <achdisposable1@gmail.com> 2015
|
||||
*
|
||||
* VideoListAdapter.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 enum MediaFormat {
|
||||
// id name suffix mime type
|
||||
MPEG_4 (0x0, "MPEG-4", "mp4", "video/mp4"),
|
||||
v3GPP (0x1, "3GPP", "3gp", "video/3gpp"),
|
||||
WEBM (0x2, "WebM", "webm", "video/webm"),
|
||||
M4A (0x3, "m4a", "m4a", "audio/mp4"),
|
||||
WEBMA (0x4, "WebM", "webm", "audio/webm");
|
||||
|
||||
public final int id;
|
||||
public final String name;
|
||||
public final String suffix;
|
||||
public final String mimeType;
|
||||
|
||||
MediaFormat(int id, String name, String suffix, String mimeType) {
|
||||
this.id = id;
|
||||
this.name = name;
|
||||
this.suffix = suffix;
|
||||
this.mimeType = mimeType;
|
||||
}
|
||||
|
||||
public static String getNameById(int ident) {
|
||||
for (MediaFormat vf : MediaFormat.values()) {
|
||||
if(vf.id == ident) return vf.name;
|
||||
}
|
||||
return "";
|
||||
}
|
||||
|
||||
public static String getSuffixById(int ident) {
|
||||
for (MediaFormat vf : MediaFormat.values()) {
|
||||
if(vf.id == ident) return vf.suffix;
|
||||
}
|
||||
return "";
|
||||
}
|
||||
|
||||
public static String getMimeById(int ident) {
|
||||
for (MediaFormat vf : MediaFormat.values()) {
|
||||
if(vf.id == ident) return vf.mimeType;
|
||||
}
|
||||
return "";
|
||||
}
|
||||
}
|
@ -1,5 +1,9 @@
|
||||
package org.schabi.newpipe;
|
||||
|
||||
import android.graphics.Bitmap;
|
||||
import android.util.Log;
|
||||
import java.util.Vector;
|
||||
|
||||
/**
|
||||
* Created by Christian Schabesberger on 26.08.15.
|
||||
*
|
||||
@ -20,82 +24,36 @@ package org.schabi.newpipe;
|
||||
* along with NewPipe. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
import android.graphics.Bitmap;
|
||||
import android.util.Log;
|
||||
|
||||
import java.util.Vector;
|
||||
|
||||
public class VideoInfo {
|
||||
public String id = "";
|
||||
public String title = "";
|
||||
public String uploader = "";
|
||||
public String thumbnail_url = "";
|
||||
public Bitmap thumbnail = null;
|
||||
public String webpage_url = "";
|
||||
public String upload_date = "";
|
||||
public String view_count = "";
|
||||
|
||||
public String uploader_thumbnail_url = "";
|
||||
public Bitmap uploader_thumbnail = null;
|
||||
public String description = "";
|
||||
public int duration = -1;
|
||||
public int age_limit = 0;
|
||||
public String like_count = "";
|
||||
public String dislike_count = "";
|
||||
public String average_rating = "";
|
||||
public VideoStream[] videoStreams = null;
|
||||
public AudioStream[] audioStreams = null;
|
||||
public VideoInfoItem nextVideo = null;
|
||||
public VideoInfoItem[] relatedVideos = null;
|
||||
public int videoAvailableStatus = VIDEO_AVAILABLE;
|
||||
|
||||
private static final String TAG = VideoInfo.class.toString();
|
||||
|
||||
// format identifier
|
||||
public static final int I_MPEG_4 = 0x0;
|
||||
public static final int I_3GPP = 0x1;
|
||||
public static final int I_WEBM = 0x2;
|
||||
public static final int I_M4A = 0x3;
|
||||
public static final int I_WEBMA = 0x4;
|
||||
|
||||
// format name
|
||||
public static final String F_MPEG_4 = "MPEG-4";
|
||||
public static final String F_3GPP = "3GPP";
|
||||
public static final String F_WEBM = "WebM";
|
||||
public static final String F_M4A = "m4a";
|
||||
public static final String F_WEBMA = "WebM";
|
||||
|
||||
// file suffix
|
||||
public static final String C_MPEG_4 = "mp4";
|
||||
public static final String C_3GPP = "3gp";
|
||||
public static final String C_WEBM = "webm";
|
||||
public static final String C_M4A = "m4a";
|
||||
public static final String C_WEBMA = "webm";
|
||||
|
||||
// mimeType
|
||||
public static final String M_MPEG_4 = "video/mp4";
|
||||
public static final String M_3GPP = "video/3gpp";
|
||||
public static final String M_WEBM = "video/webm";
|
||||
public static final String M_M4A = "audio/mp4";
|
||||
public static final String M_WEBMA = "audio/webm";
|
||||
|
||||
public static final int VIDEO_AVAILABLE = 0x00;
|
||||
public static final int VIDEO_UNAVAILABLE = 0x01;
|
||||
public static final int VIDEO_UNAVAILABLE_GEMA = 0x02;//German DRM organisation; sound pretty draconian
|
||||
|
||||
public static String getNameById(int id) {
|
||||
switch(id) {
|
||||
case I_MPEG_4: return F_MPEG_4;
|
||||
case I_3GPP: return F_3GPP;
|
||||
case I_WEBM: return F_WEBM;
|
||||
case I_M4A: return F_M4A;
|
||||
case I_WEBMA: return F_WEBMA;
|
||||
default: formatNotKnown(id);
|
||||
}
|
||||
return "";
|
||||
}
|
||||
|
||||
public static String getSuffixById(int id) {
|
||||
switch(id) {
|
||||
case I_MPEG_4: return C_MPEG_4;
|
||||
case I_3GPP: return C_3GPP;
|
||||
case I_WEBM: return C_WEBM;
|
||||
case I_M4A: return C_M4A;
|
||||
case I_WEBMA: return C_WEBMA;
|
||||
default: formatNotKnown(id);
|
||||
}
|
||||
return "";
|
||||
}
|
||||
|
||||
public static String getMimeById(int id) {
|
||||
switch(id) {
|
||||
case I_MPEG_4: return M_MPEG_4;
|
||||
case I_3GPP: return M_3GPP;
|
||||
case I_WEBM: return M_WEBM;
|
||||
case I_M4A: return M_M4A;
|
||||
case I_WEBMA: return M_WEBMA;
|
||||
default: formatNotKnown(id);
|
||||
}
|
||||
return "";
|
||||
}
|
||||
public static final int VIDEO_UNAVAILABLE_GEMA = 0x02;//German DRM organisation
|
||||
|
||||
public static class VideoStream {
|
||||
public VideoStream(String url, int format, String res) {
|
||||
@ -123,25 +81,4 @@ public class VideoInfo {
|
||||
|
||||
}
|
||||
|
||||
public String id = "";
|
||||
public String uploader = "";
|
||||
public String upload_date = "";
|
||||
public String uploader_thumbnail_url = "";
|
||||
public Bitmap uploader_thumbnail = null;
|
||||
public String title = "";
|
||||
public String thumbnail_url = "";
|
||||
public Bitmap thumbnail = null;
|
||||
public String description = "";
|
||||
public int duration = -1;
|
||||
public int age_limit = 0;
|
||||
public String webpage_url = "";
|
||||
public String view_count = "";
|
||||
public String like_count = "";
|
||||
public String dislike_count = "";
|
||||
public String average_rating = "";
|
||||
public VideoStream[] videoStreams = null;
|
||||
public AudioStream[] audioStreams = null;
|
||||
public VideoInfoItem nextVideo = null;
|
||||
public VideoInfoItem[] relatedVideos = null;
|
||||
public int videoAvailableStatus = VIDEO_AVAILABLE;
|
||||
}
|
@ -28,13 +28,14 @@ public class VideoInfoItem implements Parcelable {
|
||||
public String id = "";
|
||||
public String title = "";
|
||||
public String uploader = "";
|
||||
public String duration = "";
|
||||
public String thumbnail_url = "";
|
||||
public Bitmap thumbnail = null;
|
||||
public String webpage_url = "";
|
||||
public String upload_date = "";
|
||||
public String view_count = "";
|
||||
|
||||
public String duration = "";
|
||||
|
||||
protected VideoInfoItem(Parcel in) {
|
||||
id = in.readString();
|
||||
title = in.readString();
|
||||
|
@ -93,10 +93,10 @@ public class VideoItemListFragment extends ListFragment {
|
||||
public void run() {
|
||||
try {
|
||||
SharedPreferences sp = PreferenceManager.getDefaultSharedPreferences(getContext());
|
||||
String contentCountryKey = getContext().getString(R.string.contentCountry);
|
||||
String contentCountry = sp.getString(contentCountryKey, "");
|
||||
SearchEngine.Result result = engine.search(query, page, contentCountry);
|
||||
Log.i(TAG, "countryCode passed:\""+contentCountry+"\"");
|
||||
String searchLanguageKey = getContext().getString(R.string.searchLanguage);
|
||||
String searchLanguage = sp.getString(searchLanguageKey, "en");
|
||||
SearchEngine.Result result = engine.search(query, page, searchLanguage);
|
||||
Log.i(TAG, "language code passed:\""+searchLanguage+"\"");
|
||||
if(run) {
|
||||
h.post(new ResultRunnable(result, requestId));
|
||||
}
|
||||
|
@ -3,7 +3,6 @@ package org.schabi.newpipe.youtube;
|
||||
import android.util.Log;
|
||||
import android.util.Xml;
|
||||
|
||||
import org.json.JSONException;
|
||||
import org.json.JSONObject;
|
||||
import org.jsoup.Jsoup;
|
||||
import org.jsoup.nodes.Document;
|
||||
@ -14,6 +13,7 @@ import org.mozilla.javascript.Function;
|
||||
import org.mozilla.javascript.ScriptableObject;
|
||||
import org.schabi.newpipe.Downloader;
|
||||
import org.schabi.newpipe.Extractor;
|
||||
import org.schabi.newpipe.MediaFormat;
|
||||
import org.schabi.newpipe.VideoInfo;
|
||||
import org.schabi.newpipe.VideoInfoItem;
|
||||
import org.xmlpull.v1.XmlPullParser;
|
||||
@ -57,16 +57,16 @@ public class YoutubeExtractor implements Extractor {
|
||||
public static int resolveFormat(int itag) {
|
||||
switch(itag) {
|
||||
// video
|
||||
case 17: return VideoInfo.I_3GPP;
|
||||
case 18: return VideoInfo.I_MPEG_4;
|
||||
case 22: return VideoInfo.I_MPEG_4;
|
||||
case 36: return VideoInfo.I_3GPP;
|
||||
case 37: return VideoInfo.I_MPEG_4;
|
||||
case 38: return VideoInfo.I_MPEG_4;
|
||||
case 43: return VideoInfo.I_WEBM;
|
||||
case 44: return VideoInfo.I_WEBM;
|
||||
case 45: return VideoInfo.I_WEBM;
|
||||
case 46: return VideoInfo.I_WEBM;
|
||||
case 17: return MediaFormat.v3GPP.id;
|
||||
case 18: return MediaFormat.MPEG_4.id;
|
||||
case 22: return MediaFormat.MPEG_4.id;
|
||||
case 36: return MediaFormat.v3GPP.id;
|
||||
case 37: return MediaFormat.MPEG_4.id;
|
||||
case 38: return MediaFormat.MPEG_4.id;
|
||||
case 43: return MediaFormat.WEBM.id;
|
||||
case 44: return MediaFormat.WEBM.id;
|
||||
case 45: return MediaFormat.WEBM.id;
|
||||
case 46: return MediaFormat.WEBM.id;
|
||||
default:
|
||||
//Log.i(TAG, "Itag " + Integer.toString(itag) + " not known or not supported.");
|
||||
return -1;
|
||||
@ -288,8 +288,8 @@ public class YoutubeExtractor implements Extractor {
|
||||
videoInfo.upload_date = doc.select("strong[class=\"watch-time-text\"").first()
|
||||
.text();
|
||||
|
||||
// Extracting the date itself from header
|
||||
videoInfo.upload_date = matchGroup1("([A-Za-z]{3}\\s[\\d]{1,2},\\s[\\d]{4}$)", videoInfo.upload_date);
|
||||
// Try to only use date not the text around it
|
||||
videoInfo.upload_date = matchGroup1("([0-9.]*$)", videoInfo.upload_date);
|
||||
|
||||
// description
|
||||
videoInfo.description = doc.select("p[id=\"eow-description\"]").first()
|
||||
@ -320,8 +320,6 @@ public class YoutubeExtractor implements Extractor {
|
||||
// view count
|
||||
videoInfo.view_count = doc.select("div[class=\"watch-view-count\"]").first().text();
|
||||
|
||||
videoInfo.view_count = matchGroup1("([0-9,]*$)", videoInfo.view_count);
|
||||
|
||||
// next video
|
||||
videoInfo.nextVideo = extractVideoInfoItem(doc.select("div[class=\"watch-sidebar-section\"]").first()
|
||||
.select("li").first());
|
||||
@ -379,13 +377,13 @@ public class YoutubeExtractor implements Extractor {
|
||||
if(currentTagIsBaseUrl &&
|
||||
(currentMimeType.contains("audio"))) {
|
||||
int format = -1;
|
||||
if(currentMimeType.equals(VideoInfo.M_WEBMA)) {
|
||||
format = VideoInfo.I_WEBMA;
|
||||
} else if(currentMimeType.equals(VideoInfo.M_M4A)) {
|
||||
format = VideoInfo.I_M4A;
|
||||
if(currentMimeType.equals(MediaFormat.WEBMA.mimeType)) {
|
||||
format = MediaFormat.WEBMA.id;
|
||||
} else if(currentMimeType.equals(MediaFormat.M4A.mimeType)) {
|
||||
format = MediaFormat.M4A.id;
|
||||
}
|
||||
audioStreams.add(new VideoInfo.AudioStream(parser.getText(),
|
||||
format, currentBandwidth, currentSamplingRate));
|
||||
format, currentBandwidth, currentSamplingRate));
|
||||
}
|
||||
case XmlPullParser.END_TAG:
|
||||
if(tagName.equals("AdaptationSet")) {
|
||||
|
@ -49,7 +49,7 @@ public class YoutubeSearchEngine implements SearchEngine {
|
||||
private static final String TAG = YoutubeSearchEngine.class.toString();
|
||||
|
||||
@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., "");
|
||||
Uri.Builder builder = new Uri.Builder();
|
||||
builder.scheme("https")
|
||||
@ -59,20 +59,19 @@ public class YoutubeSearchEngine implements SearchEngine {
|
||||
.appendQueryParameter("page", Integer.toString(page))
|
||||
.appendQueryParameter("filters", "video");
|
||||
|
||||
//if we've been passed a valid, non-empty country code, append it to the URL
|
||||
if(countryCode.length() > 0) {
|
||||
if(countryCode.length() == 2) {
|
||||
builder.appendQueryParameter("gl", countryCode);
|
||||
builder.appendQueryParameter("persist_gl", "1");
|
||||
Log.i(TAG, "URI: \""+builder+"\"");
|
||||
}
|
||||
else {
|
||||
Log.e(TAG, "invalid country code passed to search(): \""+countryCode+"\"");
|
||||
}
|
||||
}
|
||||
String site;
|
||||
String url = builder.build().toString();
|
||||
//if we've been passed a valid language code, append it to the URL
|
||||
if(languageCode.length() > 0) {
|
||||
//assert Pattern.matches("[a-z]{2}(-([A-Z]{2}|[0-9]{1,3}))?", languageCode);
|
||||
Log.i(TAG, "URI: \""+builder+"\"");
|
||||
site = Downloader.download(url, languageCode);
|
||||
}
|
||||
else {
|
||||
site = Downloader.download(url);
|
||||
}
|
||||
|
||||
|
||||
String site = Downloader.download(url);
|
||||
Document doc = Jsoup.parse(site, url);
|
||||
Result result = new Result();
|
||||
Element list = doc.select("ol[class=\"item-section\"]").first();
|
||||
|
@ -24,183 +24,163 @@
|
||||
</string-array>
|
||||
<string name="defaultAudioFormat">m4a</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 -->
|
||||
<!-- alternatively, load these from some local android data store -->
|
||||
<string-array name="countryCodes">
|
||||
<item></item><!--NONE-->
|
||||
<item>US</item>
|
||||
<item>DZ</item>
|
||||
<item>AR</item>
|
||||
<item>AU</item>
|
||||
<item>AT</item>
|
||||
<item>AZ</item>
|
||||
<item>BH</item>
|
||||
<item>BY</item>
|
||||
<item>BE</item>
|
||||
<item>BA</item>
|
||||
<item>BR</item>
|
||||
<item>BG</item>
|
||||
<item>CA</item>
|
||||
<item>CL</item>
|
||||
<item>CO</item>
|
||||
<item>HR</item>
|
||||
<item>CZ</item>
|
||||
<item>DK</item>
|
||||
<item>EG</item>
|
||||
<item>EE</item>
|
||||
<item>FI</item>
|
||||
<item>FR</item>
|
||||
<item>GE</item>
|
||||
<item>DE</item>
|
||||
<item>GH</item>
|
||||
<item>GR</item>
|
||||
<item>HK</item>
|
||||
<item>HU</item>
|
||||
<item>IS</item>
|
||||
<item>IN</item>
|
||||
<item>ID</item>
|
||||
<item>IE</item>
|
||||
<item>IL</item>
|
||||
<item>IT</item>
|
||||
<item>JP</item>
|
||||
<item>JO</item>
|
||||
<item>KZ</item>
|
||||
<item>KE</item>
|
||||
<item>KW</item>
|
||||
<item>LV</item>
|
||||
<item>LB</item>
|
||||
<item>LY</item>
|
||||
<item>LT</item>
|
||||
<item>LU</item>
|
||||
<item>MK</item>
|
||||
<item>MY</item>
|
||||
<item>MX</item>
|
||||
<item>ME</item>
|
||||
<item>MA</item>
|
||||
<item>NL</item>
|
||||
<item>NZ</item>
|
||||
<item>NG</item>
|
||||
<item>NO</item>
|
||||
<item>OM</item>
|
||||
<item>PE</item>
|
||||
<item>PH</item>
|
||||
<item>PL</item>
|
||||
<item>PT</item>
|
||||
<item>PR</item>
|
||||
<item>QA</item>
|
||||
<item>RO</item>
|
||||
<item>RU</item>
|
||||
<item>SA</item>
|
||||
<item>SN</item>
|
||||
<item>RS</item>
|
||||
<item>SG</item>
|
||||
<item>SK</item>
|
||||
<item>SI</item>
|
||||
<item>ZA</item>
|
||||
<item>KR</item>
|
||||
<item>ES</item>
|
||||
<item>SE</item>
|
||||
<item>CH</item>
|
||||
<item>TW</item>
|
||||
<item>TZ</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 name='languageCodes'>
|
||||
<item>af</item>
|
||||
<item>az</item>
|
||||
<item>id</item>
|
||||
<item>ms</item>
|
||||
<item>ca</item>
|
||||
<item>cs</item>
|
||||
<item>da</item>
|
||||
<item>de</item>
|
||||
<item>et</item>
|
||||
<item>en-GB</item>
|
||||
<item>en</item>
|
||||
<item>es</item>
|
||||
<item>es-419</item>
|
||||
<item>eu</item>
|
||||
<item>fil</item>
|
||||
<item>fr</item>
|
||||
<item>fr-CA</item>
|
||||
<item>gl</item>
|
||||
<item>hr</item>
|
||||
<item>zu</item>
|
||||
<item>is</item>
|
||||
<item>it</item>
|
||||
<item>sw</item>
|
||||
<item>lv</item>
|
||||
<item>lt</item>
|
||||
<item>hu</item>
|
||||
<item>nl</item>
|
||||
<item>no</item>
|
||||
<item>uz</item>
|
||||
<item>pl</item>
|
||||
<item>pt-PT</item>
|
||||
<item>pt</item>
|
||||
<item>ro</item>
|
||||
<item>sq</item>
|
||||
<item>sk</item>
|
||||
<item>sl</item>
|
||||
<item>fi</item>
|
||||
<item>sv</item>
|
||||
<item>vi</item>
|
||||
<item>tr</item>
|
||||
<item>bg</item>
|
||||
<item>ky</item>
|
||||
<item>kk</item>
|
||||
<item>mk</item>
|
||||
<item>mn</item>
|
||||
<item>ru</item>
|
||||
<item>sr</item>
|
||||
<item>uk</item>
|
||||
<item>el</item>
|
||||
<item>hy</item>
|
||||
<item>iw</item>
|
||||
<item>ur</item>
|
||||
<item>ar</item>
|
||||
<item>fa</item>
|
||||
<item>ne</item>
|
||||
<item>mr</item>
|
||||
<item>hi</item>
|
||||
<item>bn</item>
|
||||
<item>pa</item>
|
||||
<item>gu</item>
|
||||
<item>ta</item>
|
||||
<item>te</item>
|
||||
<item>kn</item>
|
||||
<item>ml</item>
|
||||
<item>si</item>
|
||||
<item>th</item>
|
||||
<item>lo</item>
|
||||
<item>my</item>
|
||||
<item>ka</item>
|
||||
<item>am</item>
|
||||
<item>km</item>
|
||||
<item>zh-CN</item>
|
||||
<item>zh-TW</item>
|
||||
<item>zh-HK</item>
|
||||
<item>ja</item>
|
||||
<item>ko</item>
|
||||
</string-array>
|
||||
<string-array name="countryNames">
|
||||
<item>(None)</item>
|
||||
<item>Worldwide (USA)</item>
|
||||
<item>Algeria</item>
|
||||
<item>Argentina</item>
|
||||
<item>Australia</item>
|
||||
<item>Austria</item>
|
||||
<item>Azerbaijan</item>
|
||||
<item>Bahrain</item>
|
||||
<item>Belarus</item>
|
||||
<item>Belgium</item>
|
||||
<item>Bosnia and Herzegovina</item>
|
||||
<item>Brazil</item>
|
||||
<item>Bulgaria</item>
|
||||
<item>Canada</item>
|
||||
<item>Chile</item>
|
||||
<item>Colombia</item>
|
||||
<item>Croatia</item>
|
||||
<item>Czech Republic</item>
|
||||
<item>Denmark</item>
|
||||
<item>Egypt</item>
|
||||
<item>Estonia</item>
|
||||
<item>Finland</item>
|
||||
<item>France</item>
|
||||
<item>Georgia</item>
|
||||
<item>Germany</item>
|
||||
<item>Ghana</item>
|
||||
<item>Greece</item>
|
||||
<item>Hong Kong</item>
|
||||
<item>Hungary</item>
|
||||
<item>Iceland</item>
|
||||
<item>India</item>
|
||||
<item>Indonesia</item>
|
||||
<item>Ireland</item>
|
||||
<item>Israel</item>
|
||||
<item>Italy</item>
|
||||
<item>Japan</item>
|
||||
<item>Jordan</item>
|
||||
<item>Kazakhstan</item>
|
||||
<item>Kenya</item>
|
||||
<item>Kuwait</item>
|
||||
<item>Latvia</item>
|
||||
<item>Lebanon</item>
|
||||
<item>Libya</item>
|
||||
<item>Lithuania</item>
|
||||
<item>Luxembourg</item>
|
||||
<item>Macedonia</item>
|
||||
<item>Malaysia</item>
|
||||
<item>Mexico</item>
|
||||
<item>Montenegro</item>
|
||||
<item>Morocco</item>
|
||||
<item>Netherlands</item>
|
||||
<item>New Zealand</item>
|
||||
<item>Nigeria</item>
|
||||
<item>Norway</item>
|
||||
<item>Oman</item>
|
||||
<item>Peru</item>
|
||||
<item>Philippines</item>
|
||||
<item>Poland</item>
|
||||
<item>Portugal</item>
|
||||
<item>Puerto Rico</item>
|
||||
<item>Qatar</item>
|
||||
<item>Romania</item>
|
||||
<item>Russia</item>
|
||||
<item>Saudi Arabia</item>
|
||||
<item>Senegal</item>
|
||||
<item>Serbia</item>
|
||||
<item>Singapore</item>
|
||||
<item>Slovakia</item>
|
||||
<item>Slovenia</item>
|
||||
<item>South Africa</item>
|
||||
<item>South Korea</item>
|
||||
<item>Spain</item>
|
||||
<item>Sweden</item>
|
||||
<item>Switzerland</item>
|
||||
<item>Taiwan</item>
|
||||
<item>Tanzania</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 name='languageNames'>
|
||||
<item>Afrikaans</item>
|
||||
<item>Azərbaycan</item>
|
||||
<item>Bahasa Indonesia</item>
|
||||
<item>Bahasa Malaysia</item>
|
||||
<item>Català</item>
|
||||
<item>Čeština</item>
|
||||
<item>Dansk</item>
|
||||
<item>Deutsch</item>
|
||||
<item>Eesti</item>
|
||||
<item>English (UK)</item>
|
||||
<item>English (US)</item>
|
||||
<item>Español (España)</item>
|
||||
<item>Español (Latinoamérica)</item>
|
||||
<item>Euskara</item>
|
||||
<item>Filipino</item>
|
||||
<item>Français</item>
|
||||
<item>Français (Canada)</item>
|
||||
<item>Galego</item>
|
||||
<item>Hrvatski</item>
|
||||
<item>IsiZulu</item>
|
||||
<item>Íslenska</item>
|
||||
<item>Italiano</item>
|
||||
<item>Kiswahili</item>
|
||||
<item>Latviešu valoda</item>
|
||||
<item>Lietuvių</item>
|
||||
<item>Magyar</item>
|
||||
<item>Nederlands</item>
|
||||
<item>Norsk</item>
|
||||
<item>O‘zbek</item>
|
||||
<item>Polski</item>
|
||||
<item>Português</item>
|
||||
<item>Português (Brasil)</item>
|
||||
<item>Română</item>
|
||||
<item>Shqip</item>
|
||||
<item>Slovenčina</item>
|
||||
<item>Slovenščina</item>
|
||||
<item>Suomi</item>
|
||||
<item>Svenska</item>
|
||||
<item>Tiếng Việt</item>
|
||||
<item>Türkçe</item>
|
||||
<item>Български</item>
|
||||
<item>Кыргызча</item>
|
||||
<item>Қазақ Тілі</item>
|
||||
<item>Македонски</item>
|
||||
<item>Монгол</item>
|
||||
<item>Русский</item>
|
||||
<item>Српски</item>
|
||||
<item>Українська</item>
|
||||
<item>Ελληνικά</item>
|
||||
<item>Հայերեն</item>
|
||||
<item>עברית</item>
|
||||
<item>اردو</item>
|
||||
<item>العربية</item>
|
||||
<item>فارسی</item>
|
||||
<item>नेपाली</item>
|
||||
<item>मराठी</item>
|
||||
<item>हिन्दी</item>
|
||||
<item>বাংলা</item>
|
||||
<item>ਪੰਜਾਬੀ</item>
|
||||
<item>ગુજરાતી</item>
|
||||
<item>தமிழ்</item>
|
||||
<item>తెలుగు</item>
|
||||
<item>ಕನ್ನಡ</item>
|
||||
<item>മലയാളം</item>
|
||||
<item>සිංහල</item>
|
||||
<item>ภาษาไทย</item>
|
||||
<item>ລາວ</item>
|
||||
<item>ဗမာ</item>
|
||||
<item>ქართული</item>
|
||||
<item>አማርኛ</item>
|
||||
<item>ខ្មែរ</item>
|
||||
<item>中文 (简体)</item>
|
||||
<item>中文 (繁體)</item>
|
||||
<item>中文 (香港)</item>
|
||||
<item>日本語</item>
|
||||
<item>한국어</item>
|
||||
</string-array>
|
||||
</resources>
|
@ -49,5 +49,5 @@
|
||||
<string name="showNextAndSimilarTitle">Show next and similar videos</string>
|
||||
<string name="urlNotSupportedText">URL not supported.</string>
|
||||
<string name="showSimilarVideosButtonText">Similar videos</string>
|
||||
<string name="contentCountryTitle">Preferable content location</string>
|
||||
<string name="contentCountryTitle">Preferable content language</string>
|
||||
</resources>
|
@ -51,12 +51,11 @@
|
||||
android:title="@string/showNextAndSimilarTitle"
|
||||
android:defaultValue="true" />
|
||||
|
||||
<!-- This function is not yet available
|
||||
<ListPreference
|
||||
android:key="@string/contentCountry"
|
||||
android:title="@string/contentCountryTitle"
|
||||
android:entries="@array/countryNames"
|
||||
android:entryValues="@array/countryCodes"
|
||||
android:defaultValue="" /> <!- default will include no country code in URL-->
|
||||
-->
|
||||
android:key="@string/searchLanguage"
|
||||
android:title="@string/searchLanguageTitle"
|
||||
android:entries="@array/languageNames"
|
||||
android:entryValues="@array/languageCodes"
|
||||
android:defaultValue="en" />
|
||||
|
||||
</PreferenceScreen>
|
Loading…
Reference in New Issue
Block a user