implemented optimised version of YoutubeExtractor.getVideoId().

new version uses a regular expression instead of creating a HashMap and looping over them.
Needs testing before pushing to origin
This commit is contained in:
Adam Howard 2015-11-11 01:48:44 +00:00
parent 873564f2aa
commit 3411b53450
3 changed files with 23 additions and 4 deletions

View File

@ -24,7 +24,7 @@ package org.schabi.newpipe;
public enum MediaFormat { public enum MediaFormat {
// id name suffix mime type // id name suffix mime type
MPEG_4 (0x0, "MPEG-4", "mp4", "video/mp4"), MPEG_4 (0x0, "MPEG-4", "mp4", "video/mp4"),
v3GPP (0x1, "3GPP", "3gp", "video/3gpp"), v3GPP (0x1, "3GPP", "3gp", "video/3gpp"),
WEBM (0x2, "WebM", "webm", "video/webm"), WEBM (0x2, "WebM", "webm", "video/webm"),
M4A (0x3, "m4a", "m4a", "audio/mp4"), M4A (0x3, "m4a", "m4a", "audio/mp4"),
WEBMA (0x4, "WebM", "webm", "audio/webm"); WEBMA (0x4, "WebM", "webm", "audio/webm");

View File

@ -67,8 +67,7 @@ public class VideoItemDetailActivity extends AppCompatActivity {
arguments.putInt(VideoItemDetailFragment.STREAMING_SERVICE, i); arguments.putInt(VideoItemDetailFragment.STREAMING_SERVICE, i);
try { try {
currentStreamingService = i; currentStreamingService = i;
extractor = ServiceList.getService(i) extractor = ServiceList.getService(i).getExtractorInstance();
.getExtractorInstance();
} catch (Exception e) { } catch (Exception e) {
e.printStackTrace(); e.printStackTrace();
} }

View File

@ -130,6 +130,26 @@ public class YoutubeExtractor implements Extractor {
} }
} }
@Override
public String getVideoId(String videoUrl) {
//https://www.youtube.com/watch?v=laF2D3QyAFQ
String id;
Pattern pat;
if(videoUrl.contains("youtube")) {
pat = Pattern.compile("youtube\\.com/watch\\?v=([a-zA-Z0-9_]{11})");
}
else if(videoUrl.contains("youtu.be")) {
pat = Pattern.compile("youtu\\.be/([a-zA-Z0-9_]{11})");
}
else {
Log.e(TAG, "Error could not parse url: " + videoUrl);
return "";
}
Matcher mat = pat.matcher(videoUrl);
id = mat.group(1);
return (id == null ? "" : id);
}
/*
@Override @Override
public String getVideoId(String videoUrl) { public String getVideoId(String videoUrl) {
try { try {
@ -165,7 +185,7 @@ public class YoutubeExtractor implements Extractor {
} }
return null; return null;
} }
*/
@Override @Override
public String getVideoUrl(String videoId) { public String getVideoUrl(String videoId) {
return "https://www.youtube.com/watch?v=" + videoId; return "https://www.youtube.com/watch?v=" + videoId;