Merge pull request #69 from BitBaron/ari-5426

Thanks, Neil!
This commit is contained in:
Barbara Miller 2017-10-25 15:37:37 -07:00 committed by GitHub
commit 7f4deacdf7
2 changed files with 17 additions and 14 deletions

View File

@ -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

View File

@ -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]);
} }
} }