From c31f13e47f6307f782ad57f2339f7c2b415f80b4 Mon Sep 17 00:00:00 2001 From: Barbara Miller Date: Tue, 13 Mar 2018 16:29:42 -0700 Subject: [PATCH 01/10] add idCheck feature, default: true --- brozzler/behaviors.yaml | 7 +++++++ brozzler/js-templates/umbraBehavior.js.j2 | 3 ++- 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/brozzler/behaviors.yaml b/brozzler/behaviors.yaml index 2b26d03..69f2c5f 100644 --- a/brozzler/behaviors.yaml +++ b/brozzler/behaviors.yaml @@ -21,6 +21,13 @@ url_regex: '^https?://(?:www\.)?facebook\.com/.*$' behavior_js_template: facebook.js request_idle_timeout_sec: 30 +- + url_regex: '^https?://americaspresidents\.si\.edu/gallery.*$' + behavior_js_template: umbraBehavior.js.j2 + default_parameters: + actions: + - selector: div.see-more, li.next + idcheck: false - url_regex: '^https?://(?:www\.)?marquette\.edu/.*$' behavior_js_template: marquette_edu.js diff --git a/brozzler/js-templates/umbraBehavior.js.j2 b/brozzler/js-templates/umbraBehavior.js.j2 index fb6b93d..5584e07 100644 --- a/brozzler/js-templates/umbraBehavior.js.j2 +++ b/brozzler/js-templates/umbraBehavior.js.j2 @@ -33,6 +33,7 @@ class UmbraBehavior { // should match older default and simpleclicks behavior, and more var k = this.index; var selector = this.actions[k].selector; + var idCheck = this.actions[k].idcheck ? this.actions[k].idcheck : true; var action = this.actions[k].do ? this.actions[k].do : 'click'; var closeSelector = this.actions[k].closeSelector ? this.actions[k].closeSelector : null; var didSomething = false; @@ -62,7 +63,7 @@ class UmbraBehavior { continue; } for ( var i = 0; i < doTargetsLength; i++) { - if (this.alreadyDone.indexOf(doTargets[i]) > -1) { + if idCheck and (this.alreadyDone.indexOf(doTargets[i]) > -1) { continue; } if (!this.isVisible(doTargets[i])) { From 8f12f0b0c008fa16045d0f6fcca1bcb80bd87cf6 Mon Sep 17 00:00:00 2001 From: Barbara Miller Date: Tue, 13 Mar 2018 17:36:38 -0700 Subject: [PATCH 02/10] better idCheck and configurable interval timing --- brozzler/js-templates/umbraBehavior.js.j2 | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/brozzler/js-templates/umbraBehavior.js.j2 b/brozzler/js-templates/umbraBehavior.js.j2 index 5584e07..7b3e46b 100644 --- a/brozzler/js-templates/umbraBehavior.js.j2 +++ b/brozzler/js-templates/umbraBehavior.js.j2 @@ -25,7 +25,7 @@ class UmbraBehavior { this.alreadyDone = []; this.idleSince = null; this.intervalId = null; - this.intervalTimeMs = 300; + this.intervalTimeMs = {{interval or '300'}}; this.index = 0; } @@ -33,7 +33,7 @@ class UmbraBehavior { // should match older default and simpleclicks behavior, and more var k = this.index; var selector = this.actions[k].selector; - var idCheck = this.actions[k].idcheck ? this.actions[k].idcheck : true; + var idCheck = this.actions[k].idcheck === false ? this.actions[k].idcheck : true; var action = this.actions[k].do ? this.actions[k].do : 'click'; var closeSelector = this.actions[k].closeSelector ? this.actions[k].closeSelector : null; var didSomething = false; @@ -63,7 +63,7 @@ class UmbraBehavior { continue; } for ( var i = 0; i < doTargetsLength; i++) { - if idCheck and (this.alreadyDone.indexOf(doTargets[i]) > -1) { + if (idCheck && this.alreadyDone.indexOf(doTargets[i]) > -1) { continue; } if (!this.isVisible(doTargets[i])) { From 5dfb081bb44f4a1932f10484b939ec02103a4dcd Mon Sep 17 00:00:00 2001 From: Barbara Miller Date: Tue, 13 Mar 2018 17:52:06 -0700 Subject: [PATCH 03/10] skipIDcheck, default false / no / 0 --- brozzler/js-templates/umbraBehavior.js.j2 | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/brozzler/js-templates/umbraBehavior.js.j2 b/brozzler/js-templates/umbraBehavior.js.j2 index 7b3e46b..24f268d 100644 --- a/brozzler/js-templates/umbraBehavior.js.j2 +++ b/brozzler/js-templates/umbraBehavior.js.j2 @@ -33,7 +33,7 @@ class UmbraBehavior { // should match older default and simpleclicks behavior, and more var k = this.index; var selector = this.actions[k].selector; - var idCheck = this.actions[k].idcheck === false ? this.actions[k].idcheck : true; + var skipIDCheck = this.actions[k].skipIDcheck ? this.actions[k].skipIDcheck !== false : false; var action = this.actions[k].do ? this.actions[k].do : 'click'; var closeSelector = this.actions[k].closeSelector ? this.actions[k].closeSelector : null; var didSomething = false; @@ -63,7 +63,7 @@ class UmbraBehavior { continue; } for ( var i = 0; i < doTargetsLength; i++) { - if (idCheck && this.alreadyDone.indexOf(doTargets[i]) > -1) { + if (!skipIDCheck && this.alreadyDone.indexOf(doTargets[i]) > -1) { continue; } if (!this.isVisible(doTargets[i])) { From 8f861389baf80901b4b1564a557a746352f32c4a Mon Sep 17 00:00:00 2001 From: Barbara Miller Date: Tue, 13 Mar 2018 18:47:32 -0700 Subject: [PATCH 04/10] amerciaspresidents.si.edu/gallery behavior --- brozzler/behaviors.yaml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/brozzler/behaviors.yaml b/brozzler/behaviors.yaml index 69f2c5f..e03c93e 100644 --- a/brozzler/behaviors.yaml +++ b/brozzler/behaviors.yaml @@ -25,9 +25,10 @@ url_regex: '^https?://americaspresidents\.si\.edu/gallery.*$' behavior_js_template: umbraBehavior.js.j2 default_parameters: + interval: 2000 actions: - selector: div.see-more, li.next - idcheck: false + skipIDcheck: 1 - url_regex: '^https?://(?:www\.)?marquette\.edu/.*$' behavior_js_template: marquette_edu.js From cc207763d58ae0494fa3653322c21d793b38724d Mon Sep 17 00:00:00 2001 From: Barbara Miller Date: Wed, 14 Mar 2018 13:05:10 -0700 Subject: [PATCH 05/10] add onceOnly config; other tweaks --- brozzler/js-templates/umbraBehavior.js.j2 | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/brozzler/js-templates/umbraBehavior.js.j2 b/brozzler/js-templates/umbraBehavior.js.j2 index 24f268d..278c956 100644 --- a/brozzler/js-templates/umbraBehavior.js.j2 +++ b/brozzler/js-templates/umbraBehavior.js.j2 @@ -25,7 +25,7 @@ class UmbraBehavior { this.alreadyDone = []; this.idleSince = null; this.intervalId = null; - this.intervalTimeMs = {{interval or '300'}}; + this.intervalTimeMs = {{interval or 300}}; this.index = 0; } @@ -33,7 +33,8 @@ class UmbraBehavior { // should match older default and simpleclicks behavior, and more var k = this.index; var selector = this.actions[k].selector; - var skipIDCheck = this.actions[k].skipIDcheck ? this.actions[k].skipIDcheck !== false : false; + var skipIDCheck = this.actions[k].skipIDcheck ? this.actions[k].skipIDcheck != false : false; + var onceOnly = this.actions[k].onceOnly ? this.actions[k].onceOnly != false: false; var action = this.actions[k].do ? this.actions[k].do : 'click'; var closeSelector = this.actions[k].closeSelector ? this.actions[k].closeSelector : null; var didSomething = false; @@ -57,7 +58,11 @@ class UmbraBehavior { doTarget(closeTargets[0], 'click'); } } - var doTargets = documents[j].querySelectorAll(selector); + if (onceOnly) { + var doTargets = [ documents[j].querySelector(selector) ]; + } else { + var doTargets = documents[j].querySelectorAll(selector); + } var doTargetsLength = doTargets.length; if (!(doTargetsLength > 0)) { continue; From 74fc7cd1024e80910919a34b8fa669ed0af40e5b Mon Sep 17 00:00:00 2001 From: Barbara Miller Date: Wed, 14 Mar 2018 13:05:49 -0700 Subject: [PATCH 06/10] update behaviors.yaml --- brozzler/behaviors.yaml | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/brozzler/behaviors.yaml b/brozzler/behaviors.yaml index e03c93e..9193325 100644 --- a/brozzler/behaviors.yaml +++ b/brozzler/behaviors.yaml @@ -25,9 +25,11 @@ url_regex: '^https?://americaspresidents\.si\.edu/gallery.*$' behavior_js_template: umbraBehavior.js.j2 default_parameters: - interval: 2000 + interval: 2500 actions: - - selector: div.see-more, li.next + - selector: div.see-more + onceOnly: 1 + - selector: li.next skipIDcheck: 1 - url_regex: '^https?://(?:www\.)?marquette\.edu/.*$' From ae6f72769abf354ebb9ca390630650d72c5c8cc0 Mon Sep 17 00:00:00 2001 From: Barbara Miller Date: Mon, 19 Mar 2018 16:02:07 -0700 Subject: [PATCH 07/10] better config names --- brozzler/behaviors.yaml | 4 ++-- brozzler/js-templates/umbraBehavior.js.j2 | 8 ++++---- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/brozzler/behaviors.yaml b/brozzler/behaviors.yaml index 9193325..dc2a038 100644 --- a/brozzler/behaviors.yaml +++ b/brozzler/behaviors.yaml @@ -28,9 +28,9 @@ interval: 2500 actions: - selector: div.see-more - onceOnly: 1 + firstMatchOnly: 1 - selector: li.next - skipIDcheck: 1 + repeatSameElement: 1 - url_regex: '^https?://(?:www\.)?marquette\.edu/.*$' behavior_js_template: marquette_edu.js diff --git a/brozzler/js-templates/umbraBehavior.js.j2 b/brozzler/js-templates/umbraBehavior.js.j2 index 278c956..7bc8a84 100644 --- a/brozzler/js-templates/umbraBehavior.js.j2 +++ b/brozzler/js-templates/umbraBehavior.js.j2 @@ -33,8 +33,8 @@ class UmbraBehavior { // should match older default and simpleclicks behavior, and more var k = this.index; var selector = this.actions[k].selector; - var skipIDCheck = this.actions[k].skipIDcheck ? this.actions[k].skipIDcheck != false : false; - var onceOnly = this.actions[k].onceOnly ? this.actions[k].onceOnly != false: false; + var repeatSameElement = this.actions[k].repeatSameElement ? this.actions[k].repeatSameElement != false : false; + var firstMatchOnly = this.actions[k].firstMatchOnly ? this.actions[k].firstMatchOnly != false: false; var action = this.actions[k].do ? this.actions[k].do : 'click'; var closeSelector = this.actions[k].closeSelector ? this.actions[k].closeSelector : null; var didSomething = false; @@ -58,7 +58,7 @@ class UmbraBehavior { doTarget(closeTargets[0], 'click'); } } - if (onceOnly) { + if (firstMatchOnly) { var doTargets = [ documents[j].querySelector(selector) ]; } else { var doTargets = documents[j].querySelectorAll(selector); @@ -68,7 +68,7 @@ class UmbraBehavior { continue; } for ( var i = 0; i < doTargetsLength; i++) { - if (!skipIDCheck && this.alreadyDone.indexOf(doTargets[i]) > -1) { + if (!repeatSameElement && this.alreadyDone.indexOf(doTargets[i]) > -1) { continue; } if (!this.isVisible(doTargets[i])) { From 745e6cc942ee411f09565386cad4def5f638f68b Mon Sep 17 00:00:00 2001 From: Barbara Miller Date: Mon, 19 Mar 2018 16:28:14 -0700 Subject: [PATCH 08/10] log behavior params better --- brozzler/__init__.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/brozzler/__init__.py b/brozzler/__init__.py index 7f068ba..06f3d0c 100644 --- a/brozzler/__init__.py +++ b/brozzler/__init__.py @@ -105,7 +105,7 @@ def behavior_script(url, template_parameters=None, behaviors_dir=None): ''' Returns the javascript behavior string populated with template_parameters. ''' - import re, logging + import re, logging, json for behavior in behaviors(behaviors_dir=behaviors_dir): if re.match(behavior['url_regex'], url): parameters = dict() @@ -118,7 +118,7 @@ def behavior_script(url, template_parameters=None, behaviors_dir=None): script = template.render(parameters) logging.info( 'using template=%r populated with parameters=%r for %r', - behavior['behavior_js_template'], parameters, url) + behavior['behavior_js_template'], json.dumps(parameters), url) return script return None From bc5a36e8a373e8f29c98a928b173b28613d2bee2 Mon Sep 17 00:00:00 2001 From: Barbara Miller Date: Mon, 19 Mar 2018 16:28:47 -0700 Subject: [PATCH 09/10] better booleans --- brozzler/behaviors.yaml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/brozzler/behaviors.yaml b/brozzler/behaviors.yaml index dc2a038..3f082c1 100644 --- a/brozzler/behaviors.yaml +++ b/brozzler/behaviors.yaml @@ -28,9 +28,9 @@ interval: 2500 actions: - selector: div.see-more - firstMatchOnly: 1 + firstMatchOnly: true - selector: li.next - repeatSameElement: 1 + repeatSameElement: true - url_regex: '^https?://(?:www\.)?marquette\.edu/.*$' behavior_js_template: marquette_edu.js From 1e2e7213c8af0064c02c50d9946d13acc254fd1b Mon Sep 17 00:00:00 2001 From: Barbara Miller Date: Mon, 19 Mar 2018 16:31:23 -0700 Subject: [PATCH 10/10] better booleans for umbraBehavior --- brozzler/js-templates/umbraBehavior.js.j2 | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/brozzler/js-templates/umbraBehavior.js.j2 b/brozzler/js-templates/umbraBehavior.js.j2 index 7bc8a84..6f0fb91 100644 --- a/brozzler/js-templates/umbraBehavior.js.j2 +++ b/brozzler/js-templates/umbraBehavior.js.j2 @@ -33,8 +33,8 @@ class UmbraBehavior { // should match older default and simpleclicks behavior, and more var k = this.index; var selector = this.actions[k].selector; - var repeatSameElement = this.actions[k].repeatSameElement ? this.actions[k].repeatSameElement != false : false; - var firstMatchOnly = this.actions[k].firstMatchOnly ? this.actions[k].firstMatchOnly != false: false; + var repeatSameElement = this.actions[k].repeatSameElement ? this.actions[k].repeatSameElement : false; + var firstMatchOnly = this.actions[k].firstMatchOnly ? this.actions[k].firstMatchOnly : false; var action = this.actions[k].do ? this.actions[k].do : 'click'; var closeSelector = this.actions[k].closeSelector ? this.actions[k].closeSelector : null; var didSomething = false;