Получите URL YouTube видео неправильно с помощью Java - PullRequest
0 голосов
/ 29 октября 2018

Я использую Java для получения URL-адреса видео YouTube с URL-адреса YouTube. Кажется, мне нужно дважды декодировать URL-адрес видео, чтобы получить исходный URL-адрес видео, но что-то не так, когда я получаю доступ к URL-адресу видео, полученному из моего кода. Я уверен, что могу получить доступ к любому URL-адресу видео, которое я получаю, когда впервые запускаю код после того, как закончу код, но после этого я не могу получить доступ к любому URL-адресу видео, независимо от того, является ли URL-адрес видео декодированным первым или дважды. Я полагаю, возможно, только сам YouTube может получить доступ к URL-адресу видео, которое я получаю, или сервер заблокировал мой IP. Так что мне нужно, чтобы вы, ребята, помогли мне рассказать, что не так и как я могу получить URL-адрес видео, которое можно воспроизвести, спасибо. Мой код и ответ ниже:

        try {
        String ytUrl = "https://www.youtube.com/watch?v=Cj3AV92fJ90";

        HttpClient client = new DefaultHttpClient();

        HttpGet request = new HttpGet(ytUrl);
        HttpResponse response = client.execute(request);
        String html = "";
        InputStream in = response.getEntity().getContent();
        BufferedReader reader = new BufferedReader(new InputStreamReader(in));
        StringBuilder str = new StringBuilder();
        String line = null;
        while ((line = reader.readLine()) != null) {
            str.append(line.replace("\\u0026", "&"));
        }
        in.close();
        html = str.toString();

        String val=RegexUtil.find(html,"stream_map\":.*?\"(.*?)\"",1);

        if (!StringUtils.isEmpty(val)) {
            String url = URLDecoder.decode(val, "UTF-8");

            System.out.println("1 decode url: "+url);
            url = URLDecoder.decode(url, "UTF-8");;
            System.out.println("2 decode url: "+url );
        }

    } catch (Exception e) {
        e.printStackTrace();
    }

1 URL-адрес декодирования: url = https://r4 --- sn-i3b7knlk.googlevideo.com/videoplayback?id=o-AE4MBDOnLdC4X0a7wjJ63diBNkBpJ2XiuejUOXrB8onv&dur=44.4&=2=0-2e&ip2_p0_p0_p0_p0_p0_p0_p0_p0d_s0_p0e_p0e0e0e0e0e0em2 = да & ITAG = 22 & пл = 25 & sparams = Dur% 2Cei% 2Cid% 2Cinitcwndbps% 2Cip% 2Cipbits% 2Citag% 2Clmt% 2Cmime% 2Cmm% 2Cmn% 2Cms% 2Cmv% 2Cpl% 2Cratebypass% 2Crequiressl% 2Csource% 2Cexpire & источник = YouTube & мв = м & тп = СН-i3b7knlk % 2Csn-npoeene7 & LMT = 1537570091802082 & ключ = yt6 & е = 8LjWW9P1Ns2R8gOGhKO4AQ & с = WEB & истекают = 1540820305 & ф = 114.113.240.105 & ipbits = 0 & initcwndbps = 362500 & мм = 31% 2C26 & ITAG = 22 & тип = видео / MP4 ; codecs = "avc1.64001F, mp4a.40.2" & s = C8C80C74C92B4306498EE1183D683A0E60962F69BD.4F1AE9CE009B83425F389362CFC2FE23A45948D5 & качество = hd720 & sp = подпись

2 URL-адрес для декодирования: url = https://r4 --- sn-i3b7knlk.googlevideo.com/videoplayback?id=o-AE4MBDOnLdC4X0a7wjJ63diBNkBpJ2XiuejUOXrB8onv&dur=421vess=d==8e&&=4 = да & ITAG = 22 & пл = 25 & sparams = Dur, е, идентификатор, initcwndbps, внутрибрюшинно, ipbits, ITAG, LMT, мим, мм, млн, мс, мв, пл, ratebypass, RequireSSL, источник, истекает и источник = YouTube & мв = м & тп = СН-i3b7knlk , SN-npoeene7 & LMT = 1537570091802082 & ключ = yt6 & е = 8LjWW9P1Ns2R8gOGhKO4AQ & с = WEB & истекают = 1540820305 & ф = 114.113.240.105 & ipbits = 0 & initcwndbps = 362500 & мм = 31,26 & ITAG = 22 & тип = видео / MP4 ; codecs = "avc1.64001F, mp4a.40.2" & s = C8C80C74C92B4306498EE1183D683A0E60962F69BD.4F1AE9CE009B83425F389362CFC2FE23A45948D5 & качество = hd720 & sp = подпись

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...