From b0fd1df1ef587df5f6e17b0082c4bcd0e2cb6af1 Mon Sep 17 00:00:00 2001 From: Neil Minton Date: Fri, 18 Aug 2017 13:55:04 -0700 Subject: [PATCH 1/3] Generalize default behavior. --- brozzler/js-templates/default.js | 27 ++++++++++++++------------- 1 file changed, 14 insertions(+), 13 deletions(-) diff --git a/brozzler/js-templates/default.js b/brozzler/js-templates/default.js index 8eedd21..f9c9caa 100644 --- a/brozzler/js-templates/default.js +++ b/brozzler/js-templates/default.js @@ -1,6 +1,6 @@ /* * 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 * @@ -28,27 +28,28 @@ var umbraAboveBelowOrOnScreen = function(e) { } } -var UMBRA_IFRAME_SOUNDCLOUD_EMBEDDED_SELECTOR = "iframe"; -var UMBRA_THINGS_TO_CLICK_SOUNDCLOUD_EMBEDDED_SELECTOR = "button.sc-button-play, button.playButton, div.soundItem"; +var UMBRA_IFRAME_EMBEDDED_SELECTOR = "iframe"; +//elements selected for SoundCloud.com +var UMBRA_THINGS_TO_CLICK_EMBEDDED_SELECTOR = "button.sc-button-play, button.playButton, div.soundItem"; var MAX_IFRAME_RECURSE_DEPTH = 1; //0-based var umbraState = {'idleSince':null}; var umbraAlreadyClicked = {}; var umbraFinished = false; var umbraIntervalFunc = function() { - var umbraSoundCloudEmbeddedElements = []; + var umbraEmbeddedElements = []; - getUmbraSoundCloudEmbeddedElements(umbraSoundCloudEmbeddedElements); + getUmbraEmbeddedElements(umbraEmbeddedElements); var clickedSomething = false; var somethingLeftBelow = false; var somethingLeftAbove = false; 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 target = umbraSoundCloudEmbeddedElements[i].target; + var targetId = umbraEmbeddedElements[i].id; + var target = umbraEmbeddedElements[i].target; if (!(targetId in umbraAlreadyClicked)) { @@ -97,7 +98,7 @@ var umbraIntervalFunc = function() { } //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) { //set default values for parameters @@ -111,21 +112,21 @@ var getUmbraSoundCloudEmbeddedElements = function(soundCloudEmbeddedElements, cu //collect all buttons on current document first 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) : ""; 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 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++) { - getUmbraSoundCloudEmbeddedElements(soundCloudEmbeddedElements, currentIframeDepth + 1, iframe[i].contentWindow.document.body, iframe[i]); + getUmbraEmbeddedElements(embeddedElements, currentIframeDepth + 1, iframe[i].contentWindow.document.body, iframe[i]); } } From a8a624fbbf04b9a40fd08c71d8c3aff027709f05 Mon Sep 17 00:00:00 2001 From: Neil Minton Date: Fri, 18 Aug 2017 14:08:19 -0700 Subject: [PATCH 2/3] Add Archive.org playlists to default behavior. --- brozzler/js-templates/default.js | 2 ++ 1 file changed, 2 insertions(+) diff --git a/brozzler/js-templates/default.js b/brozzler/js-templates/default.js index f9c9caa..0025cd2 100644 --- a/brozzler/js-templates/default.js +++ b/brozzler/js-templates/default.js @@ -31,6 +31,8 @@ var umbraAboveBelowOrOnScreen = function(e) { var UMBRA_IFRAME_EMBEDDED_SELECTOR = "iframe"; //elements selected for SoundCloud.com var UMBRA_THINGS_TO_CLICK_EMBEDDED_SELECTOR = "button.sc-button-play, button.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 umbraState = {'idleSince':null}; var umbraAlreadyClicked = {}; From 4733b0ac7d7dd81b4093d03664f2c76263557c36 Mon Sep 17 00:00:00 2001 From: Neil Minton Date: Fri, 18 Aug 2017 14:11:13 -0700 Subject: [PATCH 3/3] Update SoundCloud.com behavior selectors. --- brozzler/behaviors.yaml | 2 +- brozzler/js-templates/default.js | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/brozzler/behaviors.yaml b/brozzler/behaviors.yaml index fb2e15b..6f899a1 100644 --- a/brozzler/behaviors.yaml +++ b/brozzler/behaviors.yaml @@ -73,7 +73,7 @@ url_regex: '^https?://(?:www\.)?soundcloud.com/.*$' behavior_js_template: simpleclicks.js.j2 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 request_idle_timeout_sec: 10 - # https://webarchive.jira.com/browse/AITFIVE-463 diff --git a/brozzler/js-templates/default.js b/brozzler/js-templates/default.js index 0025cd2..a469828 100644 --- a/brozzler/js-templates/default.js +++ b/brozzler/js-templates/default.js @@ -30,7 +30,7 @@ var umbraAboveBelowOrOnScreen = function(e) { var UMBRA_IFRAME_EMBEDDED_SELECTOR = "iframe"; //elements selected for SoundCloud.com -var UMBRA_THINGS_TO_CLICK_EMBEDDED_SELECTOR = "button.sc-button-play, button.playButton, div.soundItem"; +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