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