Debian package: Add support for xulrunner 18
[conkeror.git] / modules / page-modes / google-video.js
blob34a3c88836821bc738a2e261b517a42fef6a526f
1 /**
2  * (C) Copyright 2008 Jeremy Maitin-Shepard
3  *
4  * Use, modification, and distribution are subject to the terms specified in the
5  * COPYING file.
6 **/
8 require("content-buffer.js");
9 require("media.js");
11 function media_scrape_google_video(buffer, results) {
13     var doc = buffer.document;
15     try {
16         let frame_doc = buffer.top_frame.frames[0].document;
17         let mime_type;
18         let ext;
19         let elem;
20         let target_uri;
21         if ((elem = frame_doc.getElementById('macdownloadlink'))) {
22             mime_type = "video/x-msvideo";
23             ext = "avi";
24             target_uri = elem.href;
25         } else if ((elem = frame_doc.getElementById('ipoddownloadlink'))) {
26             mime_type = "video/mp4";
27             ext = "mp4";
28             target_uri = elem.href;
29         } else if ((elem = frame_doc.getElementsByTagName('embed'))) {
30             elem = elem[0];
31             let tu = elem.src;
32             let l = tu.indexOf("videoUrl") + 9;
33             let r = tu.indexOf("&",l);
34             target_uri = unescape(tu.substr(l, r-l));
35             ext = "flv";
36             mime_type = "video/x-flv";
37         } else
38             return;
39         results.push(load_spec({uri: target_uri,
40                                 title: doc.title,
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);
53     },
54     function disable (buffer) {
55         media_disable_local_object_classes(buffer);
56     },
57     $display_name = "Google Video");
59 page_mode_activate(google_video_mode);
61 provide("google-video");