diff options
-rw-r--r-- | crocoite/cli.py | 12 | ||||
-rw-r--r-- | crocoite/data/fixups.instagram.js | 21 | ||||
-rw-r--r-- | crocoite/data/scroll.js | 2 |
3 files changed, 32 insertions, 3 deletions
diff --git a/crocoite/cli.py b/crocoite/cli.py index 54a31d9..9a22d24 100644 --- a/crocoite/cli.py +++ b/crocoite/cli.py @@ -327,7 +327,7 @@ def main (): parser.add_argument('--browser', default='http://127.0.0.1:9222', help='DevTools URL') parser.add_argument('--timeout', default=10, type=int, help='Maximum time for archival') parser.add_argument('--idle-timeout', default=2, type=int, help='Maximum idle seconds (i.e. no requests)', dest='idleTimeout') - parser.add_argument('--onload', default=packageData ('scroll.js'), help='') + parser.add_argument('--onload', action='append', help='') parser.add_argument('--log-buffer', default=1000, type=int, dest='logBuffer') parser.add_argument('--keep-tab', action='store_true', default=False, dest='keepTab', help='Keep tab open') parser.add_argument('url', help='Website URL') @@ -338,8 +338,14 @@ def main (): stopVarname = '__' + __package__ + '_stop__' # avoid sites messing with our scripts by using a random stop variable name newStopVarname = randomString () - with open (args.onload, 'r') as fd: - onload = 'var {} = false;\n'.format (newStopVarname) + fd.read ().replace (stopVarname, newStopVarname) + onload = ['var {} = false;\n'.format (newStopVarname)] + for path in args.onload: + if not os.path.exists (path): + # search for defaults scripts in package data directory + path = packageData (path) + with open (path, 'r') as fd: + onload.append (fd.read ().replace (stopVarname, newStopVarname)) + onload = '\n'.join (onload) stopVarname = newStopVarname # temporary store for requests diff --git a/crocoite/data/fixups.instagram.js b/crocoite/data/fixups.instagram.js new file mode 100644 index 0000000..da7b5ea --- /dev/null +++ b/crocoite/data/fixups.instagram.js @@ -0,0 +1,21 @@ +/* Fixups for instagram: searches for the “show more” button and clicks it + */ +(function(){ +function fixup () { + var links = document.querySelectorAll ("main a"); + for (var i = 0; i < links.length; i++) { + var href = links[i].getAttribute ("href"); + if (href.search (/\?max_id=\d+$/) != -1) { + var click = new MouseEvent('click', { + view: window, + bubbles: true, + cancelable: true + }); + console.log ('clicking', href); + links[i].dispatchEvent (click); + break; + } + } +} +window.addEventListener("load", fixup); +}()); diff --git a/crocoite/data/scroll.js b/crocoite/data/scroll.js index d16383c..2b4dff1 100644 --- a/crocoite/data/scroll.js +++ b/crocoite/data/scroll.js @@ -1,3 +1,5 @@ +/* Continuously scrolls the page + */ (function(){ function scroll (event) { if (__crocoite_stop__) { |