用java实现的获取优酷等视频缩略图的实现代码
发布时间:2022-03-11 14:19:32
想要php版的朋友可以到这里下载测试 https://www.jb51.net/codes/83179.html
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.MalformedURLException;
import java.net.URL;
import net.sf.json.*;
public class test2 {
/**
* @param args
* @throws IOException
*/
public static void main(String[] args) throws IOException {
// TODO Auto-generated method stub
String url = "http://v.youku.com/v_show/id_XMjU0MjI2NzY0.html";
//获取id后面的字符串,也就是"XMjU0MjI2NzY0.html"
int no = url.indexOf("id_");
//获取id值,也就是"XMjU0MjI2NzY0"
String videoId = url.substring(no+3, url.indexOf(".html"));
//获取视频信息数据的URL对象
URL myurl = new URL("http://v.youku.com/player/getPlayList/VideoIDS/"+videoId+"/timezone/+08/version/5/source/out?password=&ran=2513&n=3");
//从URL对象中获取输入流
InputStreamReader isr = new InputStreamReader(myurl.openStream());
//封装
BufferedReader br = new BufferedReader(isr);
//readLine获取文本
String urls = br.readLine();
//关闭流
br.close();
//获取json对象
JSONObject json = JSONObject.fromObject(urls);
//获取json数据(data内)
JSONArray arr = json.getJSONArray("data");
//获取logo的值并打印
System.out.println(JSONObject.fromObject(arr.get(0)).get("logo"));
}
}
另一种没有用json的方案,比较小白,也是本人第一次的方法。
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.URL;
public class test1 {
/**
* @param args
* @throws IOException
*/
public static void main(String[] args) throws IOException {
// TODO Auto-generated method stub
//设定视频地址
String url = "http://v.youku.com/v_show/id_XMjU0MjI2NzY0.html";
//获取id后面的字符串,也就是"XMjU0MjI2NzY0.html"
int no = url.indexOf("id_");
//获取id值,也就是"XMjU0MjI2NzY0"
String videoId = url.substring(no+3, url.indexOf(".html"));
//获取视频信息数据的URL对象
URL myurl = new URL("http://v.youku.com/player/getPlayList/VideoIDS/"+videoId+"/timezone/+08/version/5/source/out?password=&ran=2513&n=3");
//从URL对象中获取输入流
InputStreamReader isr = new InputStreamReader(myurl.openStream());
//封装
BufferedReader br = new BufferedReader(isr);
//readLine获取文本,然后以"\/"切割文本中的信息
String[] urls = br.readLine().split("\\/");
isr.close();
br.close();
//因为信息数据是固定格式的,所以直接第四个元素肯定是我们所需要的。
String target = urls[3];
//对上面结果继续以"切割
String imgid = target.substring(0,target.indexOf("\""));
//拼凑一下,就是我们需要的地址了
String img = "http://g2.ykimg.com/" + imgid;
System.out.println(img);
/*
结果为:http://g2.ykimg.com/1100641F464D8FBF5FA3D90209C8DF96B67E2C-567E-AB53-C132-D7787FC966AB
*/
}
}


猜你喜欢
- 前言作为大数据家族中的重要一员,在大数据以及海量数据存储方面,hbase具有重要的地方,本篇将从java对hbase的操作上,进行详细的说明
- 省流/// <summary>/// 是否有效的文件,文件夹路径/// </summary>/// <para
- 简介Java 在 1.5 引入了泛型机制,泛型本质是参数化类型,也就是说变量的类型是一个参数,在使用时再指定为具体类型。泛型可以用于类、接口
- Jenkins 关闭和重启我们用jar -jar jenkins.war来启动jenkins服务器,那么我们如何关闭或者重启jenkins服
- 一、C#和JS互相调用 1、js调用C# C#代码如下: webView.CoreWebView2.AddHo
- 本文实例讲述了C#启动进程的几种常用方法。分享给大家供大家参考。具体如下:1.启动子进程,不等待子进程结束private void simp
- SpringBoot是什么?Spring Boot 是由 Pivotal 团队提供的全新框架,其设计目的是用来简化新 Spring 应用的初
- FrameLayout(帧布局),LinearLayout (线性布局),AbsoluteLayout(绝对布局),RelativeLayo
- Java 线程对比Thread,Runnable,Callablejava 使用 Thread 类代表线程,所有现场对象都必须是 Threa
- 本文实例讲述了Android之日期及时间选择对话框用法。分享给大家供大家参考。具体如下:清单文件:<?xml version=&quo
- 云计算、大数据地快速发展催生了不少热门的应用及工具。作为老牌语言Java,其生态圈也出来了一些有关云服务、监控、文档分享方面的工具。本文总结
- 今晚上在编写udp传输文件的时候发现无法用JSON传输字节数组,试了很多种办法都会报错,最后查资料找到了Base64这个类,这个类可以将字节
- 前言String 类在Java中是很常用的类,很重要的类,在后续的学习中经常会用到,是后续学习的基础一、认识String1.JDK中的Str
- java 对象的克隆一、对象的浅克隆(1)需要克隆类需要重写Object类的clone方法,并且实现Cloneable接口(标识接口,无需实
- 本文实例讲述了Android获取手机系统版本等信息的方法。分享给大家供大家参考。具体如下:String phoneInfo = "
- 当需要重绘TabControl的背景颜色时,有两种方法。方法一网上有很多文章介绍,将tabControl的DrawMode属性设为Owner
- 在C#中,可以使用一些第三方库或内置类库实现动态执行脚本的功能。以下是几个常用的方案:1.使用Roslyn编译器Roslyn是微软推出的一个
- 最近由于编程的需要,对 C# 的类型转换做了一些研究,其内容涉及 C# 的装箱/拆箱/别名、数值类型间相互转换、字符的 ASCII 码和 U
- 前言前段时间在写RPC框架的时候用到了Kryo、Hessian、Protostuff三种序列化方式。但是当时因为急于实现功能,就只是简单的的
- 这篇文章主要介绍了MyBatis传入数组集合类并使用foreach遍历,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学