Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/233.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 使用jsoup从站点url提取youtube视频url_Android_Youtube_Jsoup - Fatal编程技术网

Android 使用jsoup从站点url提取youtube视频url

Android 使用jsoup从站点url提取youtube视频url,android,youtube,jsoup,Android,Youtube,Jsoup,我在同一个网站上使用了这段代码,但是他们改变了主题,现在我很挣扎获取youtube视频的url时,我在这里会做错什么?以下是我的方法。该站点的示例链接是 到目前为止,代码是正确的,但我只是从视频url错误地提取了视频id。使用这种方法是有效的 public static String extractVideoId(String ytUrl) { String vId = null; Pattern pattern = Pattern.compile(".*(?:youtu.be\

我在同一个网站上使用了这段代码,但是他们改变了主题,现在我很挣扎获取youtube视频的url时,我在这里会做错什么?以下是我的方法。该站点的示例链接是


到目前为止,代码是正确的,但我只是从视频url错误地提取了视频id。使用这种方法是有效的

public static String extractVideoId(String ytUrl) {
    String vId = null;
    Pattern pattern = Pattern.compile(".*(?:youtu.be\\/|v\\/|u\\/\\w\\/|embed\\/|watch\\?v=)([^#\\&\\?]*).*");
    Matcher matcher = pattern.matcher(ytUrl);
    if (matcher.matches()){
        vId = matcher.group(1);
    }
    return vId;
}

或者,这里是一个只支持Jsoup的解决方案:

/**
 * 
 * /!\ Exceptions raised by this method are NOT logged. /!\ 
 * 
 * @param youtubeUrl
 * @return videoId or null if an exception occured
 * 
 */
public static String extractVideoId(String youtubeUrl) {
    String videoId = null;

    try {
        Document videoPage = Jsoup.connect(youtubeUrl).get();

        Element videoIdMeta = videoPage.select("div[itemtype=http://schema.org/VideoObject] meta[itemprop=videoId]").first();
        if (videoIdMeta == null) {
            throw new IOException("Unable to find videoId in HTML content.");
        }

        videoId = videoIdMeta.attr("content");
    } catch (Exception e) {
        e.printStackTrace(); // alternatively you may log this exception...
    }

    return videoId;
}
最好的办法是

code =youtubeUrl.substring(youtubeUrl.length() - 11);

事实上,我似乎已经得到它的问题是,我有一个问题,提取视频ID,但链接来如果你解决了问题后,修复和选择,这样的主题可以被视为关闭
code =youtubeUrl.substring(youtubeUrl.length() - 11);