-2

我编写了一个大代码,我的应用程序中的一个选项是检索此语句的所有匹配结果:

new conn().execute("https://gdata.youtube.com/feeds/api/videos?q=google&v=2&alt=json");

例如,如果 q=google,那么视频的所有标题都包含“google”,现在我想检索所有相关结果,如果我在 youtube 上输入用户名并获取他的所有视频.. 对此有何修改声明执行那个?

4

1 回答 1

0

通过将网址替换为: http ://gdata.youtube.com/feeds/api/videos?author=username&v=2&alt=json我可以获得同一用户的所有视频:

new conn().execute("http://gdata.youtube.com/feeds/api/videos?author=username&v=2&alt=json");

这是 conn 的类:

class conn extends AsyncTask<String, Integer, String>{


        @Override
        protected void onPreExecute() {
            Log.d("after make conn", "ok");
            progress.show(); 
            super.onPreExecute();

        }
        @Override
        protected String doInBackground(String... arg0) {
            Log.d("doInBackground", "ok");
            String s = GetUrlBody(arg0[0]); 

            return s;
        }

        @Override
        protected void onPostExecute(String result) {

        try{

            Log.d("onPostExecute befor parsing", "ok");

        /*************************************************************************/

            JSONObject jo =(JSONObject) new JSONTokener(result).nextValue();


           JSONObject feed = jo.optJSONObject("feed");


           JSONArray ent = feed.optJSONArray("entry");

           Log.d(" after parsing before loop", "ok");

         /*************************************************************************/ 

        for(int i = 0 ; i<ent.length() ; i++){

        String title = ent.optJSONObject(i).
                optJSONObject("title").optString("$t");

        String views = ent.optJSONObject(i).optJSONObject("yt$statistics").optString("viewCount");

        String authorName=ent.optJSONObject(i).optJSONArray("author").optJSONObject(0).optJSONObject("name").optString("$t");

        String numDisLikes = ent.optJSONObject(i).
                optJSONObject("yt$rating").optString("numDislikes");

        String numLikes = ent.optJSONObject(i).
                optJSONObject("yt$rating").optString("numLikes");

        String description = ent.optJSONObject(i).
                optJSONObject("media$group").optJSONObject("media$description").optString("$t");
        String shortDescribtion=description.substring(0,49);
        Log.d(" value of url", description);

        String url=ent.optJSONObject(i).optJSONObject("media$group").optJSONArray("media$thumbnail").optJSONObject(0).optString("url");
        Log.d(" value of array", url);

        String link=ent.optJSONObject(i).optJSONArray("link").optJSONObject(0).optString("href");

         Log.d(" after parsing in loop", "ok");




        /*************************************************************************/



    videoInfo.add("Title:"+title+"\n"+"By:"+authorName+"\n"+shortDescribtion); 


         Log.d(" after parsing in loop  after list", "ok");

        db.insertRow(title, numLikes, numDisLikes,views, authorName, link, description, url, vedioName);
         Log.d(" after parsing in loop after insert", "ok");




        }

         Log.d("finish  parsing ", "ok");
         db.close();

        /*************************************************************************/

         Listadapter.notifyDataSetChanged();


        Log.d("  after notify", "ok");

        /*************************************************************************/

        }catch(Exception exx) {


             Log.getStackTraceString(exx.getCause().getCause());

        }

        /*************************************************************************/

            progress.dismiss(); 

        /*************************************************************************/

            super.onPostExecute(result); 


        } 



///////////////////////////////////////////////////////////////////////////////////////////////////////////////////     

        String GetUrlBody (String Url ){

             Log.d(" in GetUrlBody", "ok");

            HttpClient cli = new DefaultHttpClient(); 


            HttpGet g = new HttpGet(Url); 


            try{



            HttpResponse res = cli.execute(g);


            if(res.getStatusLine().getStatusCode() == 200){


                String s =EntityUtils.toString(res.getEntity(), HTTP.UTF_8); 


                return s; 

            }else {



                return "Not Found"; 


            }




            }catch(Exception exx){



                Log.getStackTraceString(exx.getCause().getCause());


            }

            return "!"; 
        }

///////////////////////////////////////////////////////////////////////////////////////////////////////////////////     



    }
于 2013-07-22T11:52:38.840 回答