Java 如何使用Jsoup从youtube获取图像?

Java 如何使用Jsoup从youtube获取图像?,java,android,youtube,jsoup,metadata,Java,Android,Youtube,Jsoup,Metadata,我想当用户点击图标“添加视频”按钮时,创建一个对话框,他可以在其中插入一个链接,并复制该链接 之后,按“确定”按钮将加载用户输入的页面(从youtube),并从那里获取视频ID。将存储有关此元素的所有信息 搜索ID可以通过JSOUP库的方式进行,但我找到了一些示例。一旦我们获得了身份证,我们就试图得到一张照片 请提示,因为有可能生成一个带有添加视频的图像并将其添加到列表中,如屏幕截图所示。 我的代码与对话框: private void showAddVideoDialog(){ Aler

我想当用户点击图标“添加视频”按钮时,创建一个对话框,他可以在其中插入一个链接,并复制该链接

之后,按“确定”按钮将加载用户输入的页面(从youtube),并从那里获取视频ID。将存储有关此元素的所有信息

搜索ID可以通过JSOUP库的方式进行,但我找到了一些示例。一旦我们获得了身份证,我们就试图得到一张照片

请提示,因为有可能生成一个带有添加视频的图像并将其添加到列表中,如屏幕截图所示。 我的代码与对话框:

private void showAddVideoDialog(){
    AlertDialog.Builder builder = new AlertDialog.Builder(getContext());
    builder.setTitle("Add video");
    View viewInflated = LayoutInflater.from(getContext()).inflate(R.layout.view_layout_add_video, (ViewGroup) getView(), false);
    final EditText input = (EditText) viewInflated.findViewById(R.id.edt_videoUrl);
    builder.setView(viewInflated);

    builder.setPositiveButton(android.R.string.ok, new DialogInterface.OnClickListener() {
        @Override
        public void onClick(DialogInterface dialog, int which) {
            dialog.dismiss();
            m_Text = input.getText().toString();
            Toast.makeText(getContext(), "ОК", Toast.LENGTH_SHORT).show();
        }
    });
    builder.setNegativeButton(android.R.string.cancel, new DialogInterface.OnClickListener() {
        @Override
        public void onClick(DialogInterface dialog, int which) {
            dialog.cancel();
            Toast.makeText(getContext(), "Отмена", Toast.LENGTH_SHORT).show();
        }
    });
    builder.show();
}
非常感谢非讽刺/非屈尊回应

在下面的回答中,我假设用户已将youtube URL(
youtubeUrl
)复制到您的应用程序输入字段中

示例代码 另见

使用此URL获取与youtube id{id}/hqdefault.jpg相关的图像


ID是你的youtube ID

社区只欢迎真诚的回应。你不必担心。如果你得到一个youtube链接,例如,那么你已经得到了id:
4XpnKHJAok8
,并且可以使用()@F.Klein检索图像。我真的不知道我应该在哪里/如何获得链接和id。看看这里:目前你的问题太广泛了(更简单的是:给我写一个应用程序),在stackoverflow的fitting topics定义范围内,尝试更具体或将问题分解为多个问题(请参见和)@F.Klein谢谢,但我在创建对话框方面没有问题。我不知道如何使用元数据(检查链接/获取id)超级响应,谢谢!但是我可以再问一个简短的问题,如何将它与我的对话结合起来?@vadimmorozov你能不能重新表述一下你的问题?当然可以,我会试试。我想将您的解决方案添加到我的片段中。因此,当用户插入指向“我的对话框”的链接并单击“确定”时,请运行您的解决方案。@VadimMorozov将解决方案放入一个方法中,然后调用该方法。是否可以在没有连接库(jsoup)的情况下实现?
String youtubeUrl = ...

// Extract video ID
Document videoPage = Jsoup.connect(youtubeUrl).get();

Element videoIdMeta = videoPage.select("div[itemtype=http://schema.org/VideoObject] meta[itemprop=videoId]").first();
if (videoIdMeta == null) {
    // Unable to determine videoId ...
} else {
    String videoId = videoIdMeta.attr("content");

    // Fetch video image
    String videoImageUrl = String.format("https://i.ytimg.com/vi/%s/hqdefault.jpg", videoId);
    Connection.Response response = Jsoup //
        .connect(videoImageUrl) //
        .ignoreContentType(true) // Needed for fetching image
        .execute();

    // Load image for later use
    Bitmap bmp = BitmapFactory.decodeStream(new ByteArrayInputStream(response.bodyAsBytes()));
}