mirror of
https://github.com/internetarchive/brozzler.git
synced 2025-02-24 08:39:59 -05:00
commit
7f4deacdf7
@ -73,7 +73,7 @@
|
|||||||
url_regex: '^https?://(?:www\.)?soundcloud.com/.*$'
|
url_regex: '^https?://(?:www\.)?soundcloud.com/.*$'
|
||||||
behavior_js_template: simpleclicks.js.j2
|
behavior_js_template: simpleclicks.js.j2
|
||||||
default_parameters:
|
default_parameters:
|
||||||
click_css_selector: button.sc-button-play, button.playButton, div.compactTrackListItem
|
click_css_selector: button.sc-button-play, .playButton, div.compactTrackListItem
|
||||||
click_until_hard_timeout: False
|
click_until_hard_timeout: False
|
||||||
request_idle_timeout_sec: 10
|
request_idle_timeout_sec: 10
|
||||||
- # https://webarchive.jira.com/browse/AITFIVE-463
|
- # https://webarchive.jira.com/browse/AITFIVE-463
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
/*
|
/*
|
||||||
* brozzler/behaviors.d/default.js - default behavior, scrolls to the bottom of
|
* brozzler/behaviors.d/default.js - default behavior, scrolls to the bottom of
|
||||||
* the page and clicks on embedded soundcloud elements
|
* the page and clicks on selected embedded elements
|
||||||
*
|
*
|
||||||
* Copyright (C) 2014-2016 Internet Archive
|
* Copyright (C) 2014-2016 Internet Archive
|
||||||
*
|
*
|
||||||
@ -28,27 +28,30 @@ var umbraAboveBelowOrOnScreen = function(e) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
var UMBRA_IFRAME_SOUNDCLOUD_EMBEDDED_SELECTOR = "iframe";
|
var UMBRA_IFRAME_EMBEDDED_SELECTOR = "iframe";
|
||||||
var UMBRA_THINGS_TO_CLICK_SOUNDCLOUD_EMBEDDED_SELECTOR = "button.sc-button-play, button.playButton, div.soundItem";
|
//elements selected for SoundCloud.com
|
||||||
|
var UMBRA_THINGS_TO_CLICK_EMBEDDED_SELECTOR = "button.sc-button-play, .playButton, div.soundItem";
|
||||||
|
//elements selected for Archive.org Playlists
|
||||||
|
UMBRA_THINGS_TO_CLICK_EMBEDDED_SELECTOR += ", .jwlist>a"
|
||||||
var MAX_IFRAME_RECURSE_DEPTH = 1; //0-based
|
var MAX_IFRAME_RECURSE_DEPTH = 1; //0-based
|
||||||
var umbraState = {'idleSince':null};
|
var umbraState = {'idleSince':null};
|
||||||
var umbraAlreadyClicked = {};
|
var umbraAlreadyClicked = {};
|
||||||
var umbraFinished = false;
|
var umbraFinished = false;
|
||||||
var umbraIntervalFunc = function() {
|
var umbraIntervalFunc = function() {
|
||||||
|
|
||||||
var umbraSoundCloudEmbeddedElements = [];
|
var umbraEmbeddedElements = [];
|
||||||
|
|
||||||
getUmbraSoundCloudEmbeddedElements(umbraSoundCloudEmbeddedElements);
|
getUmbraEmbeddedElements(umbraEmbeddedElements);
|
||||||
|
|
||||||
var clickedSomething = false;
|
var clickedSomething = false;
|
||||||
var somethingLeftBelow = false;
|
var somethingLeftBelow = false;
|
||||||
var somethingLeftAbove = false;
|
var somethingLeftAbove = false;
|
||||||
var missedAbove = 0;
|
var missedAbove = 0;
|
||||||
|
|
||||||
for (var i = 0; i < umbraSoundCloudEmbeddedElements.length; i++) {
|
for (var i = 0; i < umbraEmbeddedElements.length; i++) {
|
||||||
|
|
||||||
var targetId = umbraSoundCloudEmbeddedElements[i].id;
|
var targetId = umbraEmbeddedElements[i].id;
|
||||||
var target = umbraSoundCloudEmbeddedElements[i].target;
|
var target = umbraEmbeddedElements[i].target;
|
||||||
|
|
||||||
if (!(targetId in umbraAlreadyClicked)) {
|
if (!(targetId in umbraAlreadyClicked)) {
|
||||||
|
|
||||||
@ -97,7 +100,7 @@ var umbraIntervalFunc = function() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
//try to detect sound cloud "Play" buttons and return them as targets for clicking
|
//try to detect sound cloud "Play" buttons and return them as targets for clicking
|
||||||
var getUmbraSoundCloudEmbeddedElements = function(soundCloudEmbeddedElements, currentIframeDepth, currentDocument,
|
var getUmbraEmbeddedElements = function(embeddedElements, currentIframeDepth, currentDocument,
|
||||||
iframeElement) {
|
iframeElement) {
|
||||||
|
|
||||||
//set default values for parameters
|
//set default values for parameters
|
||||||
@ -111,21 +114,21 @@ var getUmbraSoundCloudEmbeddedElements = function(soundCloudEmbeddedElements, cu
|
|||||||
//collect all buttons on current document first
|
//collect all buttons on current document first
|
||||||
var button = [];
|
var button = [];
|
||||||
|
|
||||||
button = currentDocument.querySelectorAll(UMBRA_THINGS_TO_CLICK_SOUNDCLOUD_EMBEDDED_SELECTOR);
|
button = currentDocument.querySelectorAll(UMBRA_THINGS_TO_CLICK_EMBEDDED_SELECTOR);
|
||||||
|
|
||||||
var cssPathIframe = iframeElement ? getElementCssPath(iframeElement) : "";
|
var cssPathIframe = iframeElement ? getElementCssPath(iframeElement) : "";
|
||||||
|
|
||||||
for (var i = 0; i < button.length; i++) {
|
for (var i = 0; i < button.length; i++) {
|
||||||
soundCloudEmbeddedElements.push({"id" : cssPathIframe + getElementCssPath(button.item(i)), "target" : button.item(i)});
|
embeddedElements.push({"id" : cssPathIframe + getElementCssPath(button.item(i)), "target" : button.item(i)});
|
||||||
}
|
}
|
||||||
|
|
||||||
//now get all buttons in embedded iframes
|
//now get all buttons in embedded iframes
|
||||||
var iframe = [];
|
var iframe = [];
|
||||||
|
|
||||||
iframe = currentDocument.querySelectorAll(UMBRA_IFRAME_SOUNDCLOUD_EMBEDDED_SELECTOR);
|
iframe = currentDocument.querySelectorAll(UMBRA_IFRAME_EMBEDDED_SELECTOR);
|
||||||
|
|
||||||
for (var i = 0; i < iframe.length; i++) {
|
for (var i = 0; i < iframe.length; i++) {
|
||||||
getUmbraSoundCloudEmbeddedElements(soundCloudEmbeddedElements, currentIframeDepth + 1, iframe[i].contentWindow.document.body, iframe[i]);
|
getUmbraEmbeddedElements(embeddedElements, currentIframeDepth + 1, iframe[i].contentWindow.document.body, iframe[i]);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user