Author: max
Date: 2007-08-26 16:19:10 -0700 (Sun, 26 Aug 2007)
New Revision: 6248

Modified:
   openlaszlo/branches/legals/demos/youtube/youtube.jsp
Log:
Change 20070825-maxcarlson-W by [EMAIL PROTECTED] on 2007-08-25 15:59:44 PDT
    in /Users/maxcarlson/openlaszlo/legals-checkin
    for http://svn.openlaszlo.org/openlaszlo/branches/legals

Summary: Fix youtube player

New Features:

Bugs Fixed: LPP-4582 - YouTube demo not working due to changes of Youtube.com 
FLV url pattern

Technical Reviewer: promanik
QA Reviewer: jcrowley
Doc Reviewer: (pending)

Documentation:

Release Notes:

Details: Update URL pattern.
    

Tests: http://localhost:8080/legals-checkin/demos/youtube/youtube.lzx works 
again.



Modified: openlaszlo/branches/legals/demos/youtube/youtube.jsp
===================================================================
--- openlaszlo/branches/legals/demos/youtube/youtube.jsp        2007-08-26 
19:53:24 UTC (rev 6247)
+++ openlaszlo/branches/legals/demos/youtube/youtube.jsp        2007-08-26 
23:19:10 UTC (rev 6248)
@@ -1,5 +1,6 @@
 <%@ page contentType="text/xml" %>
 <%@ page import="java.util.*" %>
+<%@ page import="java.util.regex.*" %>
 <%@ page import="java.io.*" %>
 <%@ page import="java.net.*" %>
 <%@ page import="java.text.*" %>
@@ -15,15 +16,15 @@
      * X_LZ_COPYRIGHT_END 
******************************************************/
 
 
-    public String devId = 
+    public String devId =
         "cdVNj_FoE_w";
 
 
     public void reportError(
-        String message, 
+        String message,
         Document result)
     {
-        Element el = 
+        Element el =
             new Element("error");
 
         el.setAttribute("message", message);
@@ -39,7 +40,7 @@
         BufferedReader inputFile = null;
         try {
             URL u = new URL(url);
-            inputFile = 
+            inputFile =
                 new BufferedReader(
                     new InputStreamReader(
                         u.openStream()));
@@ -53,7 +54,7 @@
             return null;
         }
 
-        SAXBuilder builder = 
+        SAXBuilder builder =
             new SAXBuilder();
         Document doc = null;
 
@@ -113,10 +114,10 @@
         Iterator videoListIt =
             videoList.iterator();
         while (videoListIt.hasNext()) {
-            Element videoEl = 
+            Element videoEl =
                 (Element)videoListIt.next();
 
-            Element resultEl = 
+            Element resultEl =
                 new Element("video");
 
             libraryEl.addContent(
@@ -124,7 +125,7 @@
 
             Element el;
 
-            el = 
+            el =
                 videoEl.getChild("id");
             if (el == null) {
                 reportError("Expected id element.", result);
@@ -134,7 +135,7 @@
                 "id",
                 el.getText());
 
-            el = 
+            el =
                 videoEl.getChild("url");
             if (el == null) {
                 reportError("Expected url element.", result);
@@ -144,17 +145,17 @@
                 "pageUrl",
                 el.getText());
 
-            el = 
+            el =
                 videoEl.getChild("thumbnail_url");
             if (el == null) {
                 reportError("Expected thumbnail_url element.", result);
                 return false;
             }
             resultEl.setAttribute(
-                "icon", 
+                "icon",
                 el.getText());
 
-            el = 
+            el =
                 videoEl.getChild("title");
             if (el == null) {
                 reportError("Expected title element.", result);
@@ -164,7 +165,7 @@
                 "title",
                 el.getText());
 
-            el = 
+            el =
                 videoEl.getChild("description");
             if (el == null) {
                 reportError("Expected description element.", result);
@@ -174,14 +175,14 @@
                 "description",
                 el.getText());
 
-            el = 
+            el =
                 videoEl.getChild("length_seconds");
             if (el == null) {
                 reportError("Expected length_seconds element.", result);
                 return false;
             }
             resultEl.setAttribute(
-                "duration", 
+                "duration",
                 el.getText());
 
         }
@@ -204,7 +205,7 @@
         BufferedReader inputFile = null;
         try {
             URL u = new URL(pageUrl);
-            inputFile = 
+            inputFile =
                 new BufferedReader(
                     new InputStreamReader(
                         u.openStream()));
@@ -213,6 +214,10 @@
             return;
         } // try
 
+        Element resultEl =
+            new Element("videoGetFlvUrlResult");
+
+               String videoId = "";
         while (true) {
             String line = null;
 
@@ -227,51 +232,29 @@
             }
 
             int start =
-                line.indexOf("SWFObject");
+                line.indexOf("swfArgs");
             if (start == -1) {
                 continue;
+            } else {
+               // Extract the video_id from the args line
+                               Pattern p = 
Pattern.compile("video_id:'[\\w\\d]+'?");
+                               Matcher m = p.matcher(line);
+                               if ( m.find() ) {
+                                   videoId = (line.substring(m.start(), 
m.end()));
+                                   videoId = videoId.substring(10, 
videoId.length()-1);
+                               } else {
+                                       reportError("video_id argument not 
found in HTML page", result);
+                                       return;
+                               }
             }
 
-            start = 
-                 line.indexOf("\"", start);
-            if (start == -1) {
-                reportError("Could not find first double quote.", result);
-                return;
-            }
+            String url =
+                "http://cache.googlevideo.com/get_video?video_id="; + videoId;
 
-            start =
-                line.indexOf("?", start);
-            if (start == -1) {
-                reportError("Could not find question mark.", result);
-                return;
-            }
-
-            start++;
-
-            int finish =
-                line.indexOf("\"", start);
-            if (finish == -1) {
-                reportError("Could not find second double quote.", result);
-                return;
-            }
-
-            String params = 
-                line.substring(start, finish);
-
-            String url = 
-                "http://www.YouTube.com/get_video.php?"; +
-                params +
-                "&.flv";
-
-            Element resultEl =
-                new Element("videoGetFlvUrlResult");
-
-            resultEl.setAttribute("id", id);
+            resultEl.setAttribute("id", videoId);
             resultEl.setAttribute("url", url);
+            result.setRootElement(resultEl);
 
-            result.setRootElement(
-                resultEl);
-
             return;
         }
 
@@ -283,7 +266,7 @@
         String id,
         Document result)
     {
-        String url = 
+        String url =
             
"http://www.youtube.com/api2_rest.php?method=youtube.videos.get_details&dev_id=";;
         url += devId;
         url += "&video_id=";
@@ -325,7 +308,7 @@
             "id",
             id);
 
-        el = 
+        el =
             videoDetailsEl.getChild("author");
         if (el == null) {
             reportError("Expected author element.", result);
@@ -335,7 +318,7 @@
             "author",
             el.getText());
 
-        el = 
+        el =
             videoDetailsEl.getChild("title");
         if (el == null) {
             reportError("Expected title element.", result);
@@ -345,7 +328,7 @@
             "title",
             el.getText());
 
-        el = 
+        el =
             videoDetailsEl.getChild("rating_avg");
         if (el == null) {
             reportError("Expected rating_avg element.", result);
@@ -355,7 +338,7 @@
             "rating_avg",
             el.getText());
 
-        el = 
+        el =
             videoDetailsEl.getChild("rating_count");
         if (el == null) {
             reportError("Expected rating_count element.", result);
@@ -365,7 +348,7 @@
             "rating_count",
             el.getText());
 
-        el = 
+        el =
             videoDetailsEl.getChild("tags");
         if (el == null) {
             reportError("Expected tags element.", result);
@@ -375,7 +358,7 @@
             "tags",
             el.getText());
 
-        el = 
+        el =
             videoDetailsEl.getChild("description");
         if (el == null) {
             reportError("Expected description element.", result);
@@ -385,37 +368,37 @@
             "description",
             el.getText());
 
-        el = 
+        el =
             videoDetailsEl.getChild("view_count");
         if (el == null) {
             reportError("Expected view_count element.", result);
             return;
         }
         detailsEl.setAttribute(
-            "view_count", 
+            "view_count",
             el.getText());
 
-        el = 
+        el =
             videoDetailsEl.getChild("upload_time");
         if (el == null) {
             reportError("Expected upload_time element.", result);
             return;
         }
         detailsEl.setAttribute(
-            "upload_time", 
+            "upload_time",
             el.getText());
 
-        el = 
+        el =
             videoDetailsEl.getChild("length_seconds");
         if (el == null) {
             reportError("Expected length_seconds element.", result);
             return;
         }
         detailsEl.setAttribute(
-            "duration", 
+            "duration",
             el.getText());
 
-        el = 
+        el =
             videoDetailsEl.getChild("comment_list");
         if (el == null) {
             reportError("Expected comment_list element.", result);
@@ -428,7 +411,7 @@
             reportError("Expected comment children.", result);
             return;
         }
-        
+
         Element commentsEl =
             new Element("comments");
 
@@ -438,16 +421,16 @@
         Iterator commentListIt =
             commentList.iterator();
         while (commentListIt.hasNext()) {
-            Element commentEl = 
+            Element commentEl =
                 (Element)commentListIt.next();
 
-            Element commentResultEl = 
+            Element commentResultEl =
                 new Element("comment");
 
             commentsEl.addContent(
                 commentResultEl);
 
-            el = 
+            el =
                 commentEl.getChild("author");
             if (el == null) {
                 reportError("Expected author element.", result);
@@ -457,7 +440,7 @@
                 "author",
                 el.getText());
 
-            el = 
+            el =
                 commentEl.getChild("time");
             if (el == null) {
                 reportError("Expected time element.", result);
@@ -467,14 +450,14 @@
                 "time",
                 el.getText());
 
-            el = 
+            el =
                 commentEl.getChild("text");
             if (el == null) {
                 reportError("Expected text element.", result);
                 return;
             }
             commentResultEl.setAttribute(
-                "text", 
+                "text",
                 el.getText());
 
         }
@@ -487,7 +470,7 @@
     public void videosListFeatured(
         Document result)
     {
-        String url = 
+        String url =
             
"http://www.youtube.com/api2_rest.php?method=youtube.videos.list_featured&dev_id=";;
         url += devId;
 
@@ -497,7 +480,7 @@
         if (doc == null) {
             return;
         }
-        
+
         returnLibrary(doc, result);
     }
 
@@ -506,7 +489,7 @@
         String tag,
         Document result)
     {
-        String url = 
+        String url =
             
"http://www.youtube.com/api2_rest.php?method=youtube.videos.list_by_tag&dev_id=";;
         url += devId;
         url += "&tag=";
@@ -518,7 +501,7 @@
         if (doc == null) {
             return;
         }
-        
+
         returnLibrary(doc, result);
     }
 
@@ -527,7 +510,7 @@
         String user,
         Document result)
     {
-        String url = 
+        String url =
             
"http://www.youtube.com/api2_rest.php?method=youtube.videos.list_by_user&dev_id=";;
         url += devId;
         url += "&user=";
@@ -539,7 +522,7 @@
         if (doc == null) {
             return;
         }
-        
+
         returnLibrary(doc, result);
     }
 
@@ -553,10 +536,10 @@
     Document result =
         new Document();
 
-    Enumeration params = 
+    Enumeration params =
         request.getParameterNames();
 
-    String method = 
+    String method =
         request.getParameter("method");
 
     if (method == null) {
@@ -565,27 +548,27 @@
 
     } else if (method.equals("videoGetDetails")) {
 
-        String id = 
+        String id =
             request.getParameter("id");
-        
+
         if (id == null) {
             reportError("Undefined id parameter.", result);
         } else {
             videoGetDetails(
-                id, 
+                id,
                 result);
         }
 
     } else if (method.equals("videoGetFlvUrl")) {
 
-        String id = 
+        String id =
             request.getParameter("id");
-        
+
         if (id == null) {
             reportError("Undefined id parameter.", result);
         } else {
             videoGetFlvUrl(
-                id, 
+                id,
                 result);
         }
 
@@ -596,27 +579,27 @@
 
     } else if (method.equals("videosListByTag")) {
 
-        String tag = 
+        String tag =
             request.getParameter("tag");
-        
+
         if (tag == null) {
             reportError("Undefined tag parameter.", result);
         } else {
             videosListByTag(
-                tag, 
+                tag,
                 result);
         }
 
     } else if (method.equals("videosListByUser")) {
 
-        String user = 
+        String user =
             request.getParameter("user");
 
         if (user == null) {
             reportError("Undefined user parameter.", result);
         } else {
             videosListByUser(
-                user, 
+                user,
                 result);
         }
 
@@ -626,7 +609,7 @@
 
     }
 
-    org.jdom.output.Format format = 
+    org.jdom.output.Format format =
         org.jdom.output.Format.getCompactFormat();
     format.setOmitDeclaration(
         true);


_______________________________________________
Laszlo-checkins mailing list
[email protected]
http://www.openlaszlo.org/mailman/listinfo/laszlo-checkins

Reply via email to