build_url_regex renamed to build_url_regexp
[conkeror.git] / modules / page-modes / google-video.js
blobe6b9c65ff495455bd70ece54b4e65aea1e5a3c79
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 in_module(null);
10 require("content-buffer.js");
11 require("media.js");
13 function media_scrape_google_video(buffer, results) {
15     var doc = buffer.document;
17     try {
18         let frame_doc = buffer.top_frame.frames[0].document;
19         let mime_type;
20         let ext;
21         let elem;
22         let target_uri;
23         if ((elem = frame_doc.getElementById('macdownloadlink'))) {
24             mime_type = "video/x-msvideo";
25             ext = "avi";
26             target_uri = elem.href;
27         } else if ((elem = frame_doc.getElementById('ipoddownloadlink'))) {
28             mime_type = "video/mp4";
29             ext = "mp4";
30             target_uri = elem.href;
31         } else if ((elem = frame_doc.getElementsByTagName('embed'))) {
32             elem = elem[0];
33             let tu = elem.src;
34             let l = tu.indexOf("videoUrl") + 9;
35             let r = tu.indexOf("&",l);
36             target_uri = unescape(tu.substr(l, r-l));
37             ext = "flv";
38             mime_type = "video/x-flv";
39         } else
40             return;
41         results.push(load_spec({uri: target_uri,
42                                 title: doc.title,
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_regexp($domain = "video.google"),
52     function enable (buffer) {
53         buffer.page.local.media_scraper = [media_scrape_google_video];
54         media_setup_local_object_classes(buffer);
55     },
56     function disable (buffer) {},
57     $display_name = "Google Video");
59 page_mode_activate(google_video_mode);
61 provide("google-video");