2 * (C) Copyright 2008 Jeremy Maitin-Shepard
4 * Use, modification, and distribution are subject to the terms specified in the
10 require("content-buffer.js");
13 function media_scrape_google_video(buffer, results) {
15 var doc = buffer.document;
18 let frame_doc = buffer.top_frame.frames[0].document;
23 if ((elem = frame_doc.getElementById('macdownloadlink'))) {
24 mime_type = "video/x-msvideo";
26 target_uri = elem.href;
27 } else if ((elem = frame_doc.getElementById('ipoddownloadlink'))) {
28 mime_type = "video/mp4";
30 target_uri = elem.href;
31 } else if ((elem = frame_doc.getElementsByTagName('embed'))) {
34 let l = tu.indexOf("videoUrl") + 9;
35 let r = tu.indexOf("&",l);
36 target_uri = unescape(tu.substr(l, r-l));
38 mime_type = "video/x-flv";
41 results.push(load_spec({uri: target_uri,
43 filename_extension: ext,
44 source_frame: buffer.top_frame,
45 mime_type: mime_type}));
46 } catch (e if !(e instanceof interactive_error)) {}
50 define_page_mode("google-video-mode",
51 build_url_regex($domain = "video.google"),
52 function enable (buffer) {
53 buffer.page.local.media_scraper = [media_scrape_google_video];
54 media_setup_local_object_classes(buffer);
56 function disable (buffer) {},
57 $display_name = "Google Video");
59 page_mode_activate(google_video_mode);
61 provide("google-video");