Как получить прямую ссылку удаленного видео со встроенного URL в Android с помощью Jsoup? - PullRequest
0 голосов
/ 21 января 2020

Ранее я задавал вопрос о том, как извлечь встроенный URL для видеофайла, и успешно это сделал.

Теперь у меня другая проблема.

Ответ json для ответа веб-камеры API WUnderground дает следующий URL:

https://anime2001.com/episode/somali-to-mori-no-kamisama-%d8%a7%d9%84%d8%ad%d9%84%d9%82%d8%a9-2/

При попытке выполнить потоковую передачу «видео с этого URL в VideoView, я продолжал получать сообщение об ошибке« не могу воспроизвести видео ». Посмотрев источник по этой ссылке, я заметил, что видеофайл, который нужно воспроизвести, не указан в html, а скорее javascript.

Как получить прямую ссылку на видеофайл, который необходимо воспроизвести? Используя JSoup или другой процесс?

    public class VideoActivity extends AppCompatActivity {
        private static final String TAG = "VideoActivity";
        private RequestQueue mQuere;
        private String url = "http://www.anime1.com/watch/darwins-game/episode-1";
        private VideoView video;
        private MediaController ctlr;
        private ProgressBar progressBar;


        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_video);

            video = (VideoView) findViewById(R.id.videoView);
            video.setVisibility(View.INVISIBLE);
            ctlr = new MediaController(this);
            ctlr.setVisibility(View.INVISIBLE);
            progressBar= findViewById(R.id.progressBar);
            progressBar.setVisibility(View.VISIBLE);


            mQuere = MySingleton.getInstance(this).getRequestQueue();
            StringRequest stringRequest = new StringRequest(Request.Method.GET, url, new Response.Listener<String>() {
                @Override
                public void onResponse(String response) {

                    try {


                        progressBar.setVisibility(View.INVISIBLE);
                        video.setVisibility(View.VISIBLE);
                        ctlr.setVisibility(View.VISIBLE);
                        String js = "";
                        Document document = Jsoup.parse(response);
                        Element divElement = document.getElementById("Movie");
                        for (Element javascript : divElement.children()) {
                            if (javascript.tagName().equals("script")) {
                                js = javascript.html();
                            }
                        }


                        int firstIndex = js.indexOf("\"", js.indexOf("file"));
                        int secondIndex = js.indexOf("\"", firstIndex + 1);
                        String videourl = js.substring(firstIndex + 1, secondIndex);
                        Uri uri= Uri.parse(videourl);


                            video.setVideoURI(uri);
                            ctlr.setAnchorView(video);
                            video.setMediaController(ctlr);
                            video.requestFocus();
                            video.start();
                            Log.e("items","title: " + videourl);


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

                }
            },new Response.ErrorListener() {
                @Override
                public void onErrorResponse(VolleyError error) {
                    Log.d(TAG, "error in connection");
                }
            });
            MySingleton.getInstance(this).addToRequestQueue(stringRequest);
        }
    }
...