CINXE.COM

ArchiveBot dashboard 3.0

<!doctype html> <html lang="en" ng-app="dashboardApp"> <head> <base href="http://www.archivebot.com/beta"> <meta charset="UTF-8"> <meta name="referrer" content="never"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta http-equiv="x-dns-prefetch-control" content="off"> <meta name="viewport" content="width=device-width, initial-scale=1"><base target="_blank"> <link rel="alternate" type="application/rss+xml" title="RSS Feed" href="https://translate.google.com/website?sl=auto&amp;tl=en&amp;hl=en-GB&amp;u=http://www.archivebot.com/feed/archivebot.rss"> <link rel="alternate" type="application/atom+xml" title="Atom Feed" href="https://translate.google.com/website?sl=auto&amp;tl=en&amp;hl=en-GB&amp;u=http://www.archivebot.com/feed/archivebot.atom"> <link rel="icon" type="image/png" href="https://translate.google.com/website?sl=auto&amp;tl=en&amp;hl=en-GB&amp;u=http://www.archivebot.com/assets/favicon.png"> <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.1/css/bootstrap.min.css"> <title>ArchiveBot dashboard 3.0</title> <style> html { /* Always show scrollbar to prevent jumpiness when filtering */ overflow-y: scroll; } html, body { background-color: ghostwhite; padding-left: 1em; padding-right: 1em; } #banner { font-size: larger; } #message_box { padding: 0.5em; position: fixed; top: 0px; right: 0px; opacity: 0.8; } #body-wrapper { margin-top: 1em; margin-bottom: 1em; max-width: 100em; margin-left: auto; margin-right: auto; } #dashboardTable { table-layout: fixed; } .tablesort { cursor: pointer; } .clickable { cursor: pointer; } .numeric { text-align: right; } .height-limit-small { overflow: hidden; max-height: 10em; } .height-limit-big { overflow: auto; max-height: 30em; } .job-summary td { word-wrap: break-word; } .job-ident-clicky { border: none; background: inherit; color: inherit; } .job-log { /* override bootstrap 'well' */ margin-bottom: 0px; } .job-log-line { white-space: nowrap; } .job-log-line-message { display: block; white-space: pre; } a.job-log-line-url { color: inherit; } .job-log-paused { overflow: auto; } .job-detail-handle { text-align: center; } .job-detail-handle-active { border-bottom: 0.2em groove mediumaquamarine; border-radius: 0.5em; } .job-progress { height: 0.5em; margin-bottom: 0.5em; } .autoscroll-paused { position: absolute; top: 0px; left: 0px; opacity: 0.8; } .extra-links { margin-top: 3em; } .pipeline { font-size: smaller; } </style> <meta http-equiv="X-Translated-By" content="Google"> <meta http-equiv="X-Translated-To" content="en"> <script type="text/javascript" src="https://www.gstatic.com/_/translate_http/_/js/k=translate_http.tr.en_GB.1hbgkFx4Qn8.O/am=DgY/d=1/rs=AN8SPfqlmAPxwfG457BPbRXwNq39oSMGHg/m=corsproxy" data-sourceurl="http://www.archivebot.com/beta"></script> <link href="https://fonts.googleapis.com/css2?family=Material+Symbols+Outlined:opsz,wght,FILL,GRAD@20..48,100..700,0..1,-50..200" rel="stylesheet"> <script type="text/javascript" src="https://www.gstatic.com/_/translate_http/_/js/k=translate_http.tr.en_GB.1hbgkFx4Qn8.O/am=DgY/d=1/exm=corsproxy/ed=1/rs=AN8SPfqlmAPxwfG457BPbRXwNq39oSMGHg/m=phishing_protection" data-phishing-protection-enabled="false" data-forms-warning-enabled="true" data-source-url="http://www.archivebot.com/beta"></script> <meta name="robots" content="none"> </head> <body ng-controller="DashboardController"> <script type="text/javascript" src="https://www.gstatic.com/_/translate_http/_/js/k=translate_http.tr.en_GB.1hbgkFx4Qn8.O/am=DgY/d=1/exm=corsproxy,phishing_protection/ed=1/rs=AN8SPfqlmAPxwfG457BPbRXwNq39oSMGHg/m=navigationui" data-environment="prod" data-proxy-url="https://www-archivebot-com.translate.goog" data-proxy-full-url="https://www-archivebot-com.translate.goog/beta?_x_tr_sl=auto&amp;_x_tr_tl=en&amp;_x_tr_hl=en-GB&amp;_x_tr_sch=http" data-source-url="http://www.archivebot.com/beta" data-source-language="auto" data-target-language="en" data-display-language="en-GB" data-detected-source-language="en" data-is-source-untranslated="false" data-source-untranslated-url="https://translate.google.com/website?sl=auto&amp;tl=en&amp;hl=en-GB&amp;u=http://www.archivebot.com/beta&amp;anno=2" data-client="tr"></script> <div id="body-wrapper"> <noscript> <p class="bg-warning">Yo buddy! You're gonna need JavaScript (ES5+) and WebSocket -&gt; TCP:4568 in order to view this fancy dashboard.</p> </noscript> <div id="banner"><a href="https://translate.google.com/website?sl=auto&amp;tl=en&amp;hl=en-GB&amp;u=http://archiveteam.org/index.php?title%3DArchiveBot" class="underlined-a">ArchiveBot</a> tracking ~<span id="num-crawls" ng-bind="jobs.length"></span> crawls. See also <a href="https://www-archivebot-com.translate.goog/pipelines?_x_tr_sl=auto&amp;_x_tr_tl=en&amp;_x_tr_hl=en-GB&amp;_x_tr_sch=http" class="underlined-a">pipeline</a> or <a href="https://www-archivebot-com.translate.goog/logs/recent?_x_tr_sl=auto&amp;_x_tr_tl=en&amp;_x_tr_hl=en-GB&amp;_x_tr_sch=http" class="underlined-a">job</a> reports. <button ng-click="helpVisible = true" class="btn btn-default" ng-hide="helpVisible">Help!</button> </div> <div id="help" ng-show="helpVisible" class="well"> <p>This page shows all of the crawls that <a href="https://translate.google.com/website?sl=auto&amp;tl=en&amp;hl=en-GB&amp;u=http://archiveteam.org/index.php?title%3DArchiveBot">ArchiveBot</a> is currently running.</p> <p>To clear all finished jobs, reload the page.</p> <p>If your adblocker is enabled for this domain, you will see slower performance, and some URLs will not be displayed.</p> <p>To use ArchiveBot, drop by <a href="https://translate.google.com/website?sl=auto&amp;tl=en&amp;hl=en-GB&amp;u=https://webirc.hackint.org/%23irc://irc.hackint.org/archivebot">#archivebot</a> on hackint. <a href="https://translate.google.com/website?sl=auto&amp;tl=en&amp;hl=en-GB&amp;u=http://archivebot.readthedocs.org/en/latest/">Issue commands</a> by typing them into the channel. You will need channel operator (@) or voice (+) status to issue archiving jobs; just ask for help or leave a message with the website you want to archive.</p> <p>These <a href="https://translate.google.com/website?sl=auto&amp;tl=en&amp;hl=en-GB&amp;u=https://github.com/ArchiveTeam/ArchiveBot/tree/master/db/ignore_patterns">ignore sets</a> are available for crawls. The <a href="https://translate.google.com/website?sl=auto&amp;tl=en&amp;hl=en-GB&amp;u=https://github.com/ArchiveTeam/ArchiveBot/blob/master/db/ignore_patterns/global.json">global</a> ignore set automatically applies to all crawls.</p> <p>GitHub: <a href="https://translate.google.com/website?sl=auto&amp;tl=en&amp;hl=en-GB&amp;u=https://github.com/ArchiveTeam/ArchiveBot">ArchiveBot</a>.</p> <p><button ng-click="helpVisible = false" class="btn btn-primary">OK!</button></p> </div> <div id="message_box" class="alert alert-info"> Loading... </div> <div><label for="filterBox">Filter:</label> <input type="search" ng-model="filterQuery" id="filterBox" placeholder="{{ :: showNicks ? 'URL, ident, or nick' : 'URL or ident'}}"> <button class="btn btn-default" ng-click="applyFilterQuery('')"><span class="glyphicon glyphicon-remove" aria-hidden="true"></span> Clear</button> </div> <div><input type="checkbox" ng-model="hideDetails" id="detailsCheckbox"> <label for="detailsCheckbox">Hide Details</label> <input type="checkbox" ng-model="paused" id="pauseCheckbox"> <label for="pauseCheckbox">Pause</label> <input type="checkbox" ng-model="drawInterval" ng-true-value="250" ng-false-value="1000" id="fastCheckbox"> <label for="fastCheckbox">Go fast</label> </div> <table id="dashboardTable" class="table table-condensed table-striped table-bordered"> <tbody> <tr> <th class="col-sm-4 tablesort" ng-click="sortParam = 'url'">URL<span class="caret" ng-if="sortParam == 'url'"></span></th> <th class="col-sm-2 tablesort" ng-click="sortParam = 'startedBy'" ng-show="::showNicks">Started by<span class="caret" ng-if="sortParam == 'startedBy'"></span></th> <th class="col-sm-1 tablesort" ng-click="sortParam = 'startedAt'">Started<span class="caret" ng-if="sortParam == 'startedAt'"></span></th> <th class="col-sm-1 tablesort" ng-click="sortParam = 'itemsDownloaded'">Fetched<span class="caret" ng-if="sortParam == 'itemsDownloaded'"></span></th> <th class="col-sm-1 tablesort" ng-click="sortParam = 'bytesDownloaded'">Size<span class="caret" ng-if="sortParam == 'bytesDownloaded'"></span></th> <th class="col-sm-1 tablesort" ng-click="sortParam = 'queueRemaining'">Remain<span class="caret" ng-if="sortParam == 'queueRemaining'"></span></th> <th class="col-sm-2 tablesort" ng-click="sortParam = 'ident'">Ident<span class="caret" ng-if="sortParam == 'ident'"></span></th> </tr> <tr class="job-summary" ng-repeat-start="job in jobs | filter: filterOperator | orderBy:sortParam:true"> <td>!{{ :: job.depth == 'shallow' ? 'ao' : 'a' }} <a href="{{ ::job.url }}?_x_tr_sl=auto&amp;_x_tr_tl=en&amp;_x_tr_hl=en-GB&amp;_x_tr_sch=http" ng-bind="::job.url"></a></td> <td ng-bind="job.startedBy" ng-if="::showNicks"></td> <td ng-bind=":: job.startedAt * 1000|date:'MM-dd'" title="{{:: job.startedAt * 1000|date:'medium'}}"></td> <td ng-bind="job.itemsDownloaded|number" class="numeric"></td> <td ng-bind="job.bytesDownloaded|bytes" class="numeric"></td> <td ng-bind="job.queueRemaining|number" class="numeric"></td> <td><input class="job-ident-clicky" readonly spellcheck="false" type="text" value="{{ ::job.ident }}" size="28" onclick="this.select()"></td> </tr> <tr class="job-detail" ng-repeat-end ng-if="!hideDetails"> <td colspan="{{ :: showNicks ? 7 : 6}}"> <div class="job-detail-container container-fluid"> <div class="row"> <div class="job-detail-datatable col-sm-3" ng-class="{ 'height-limit-small': !job.fullview, 'height-limit-big': job.fullview }"> <p title="Note" ng-bind="job.note"></p> <p title="Speed"><span ng-bind="job.concurrency"></span> with {{ job.delayMin | number }}-{{ job.delayMax | number }} ms delay. {{ job.responsePerSecond | number }} resp/sec. {{ job.suppressIgnoreReports ? 'Hiding' : 'Showing' }} ignores.</p> <div class="progress job-progress clickable" ng-click="job.showResponseBreakdown = !job.showResponseBreakdown"> <div class="progress-bar" style="width: {{ job.r1xx / (job.totalResponses + job.queueRemaining) * 100 }}%;"> </div> <div class="progress-bar progress-bar-success" style="width: {{ job.r2xx / (job.totalResponses + job.queueRemaining) * 100 }}%;"> </div> <div class="progress-bar progress-bar-info" style="width: {{ job.r3xx / (job.totalResponses + job.queueRemaining) * 100 }}%;"> </div> <div class="progress-bar progress-bar-warning" style="width: {{ job.r4xx / (job.totalResponses + job.queueRemaining) * 100 }}%;"> </div> <div class="progress-bar progress-bar-danger" style="width: {{ job.r5xx / (job.totalResponses + job.queueRemaining) * 100 }}%;"> </div> <div class="progress-bar progress-bar-danger progress-bar-striped" style="width: {{ job.errorCount / (job.totalResponses + job.queueRemaining) * 100 }}%;"> </div><span class="sr-only"> {{ job.itemsDownloaded / job.queueRemaining * 100 | number}}% complete. </span> </div> <table class="table table-condensed table-striped table-bordered" ng-if="job.showResponseBreakdown"> <tbody> <tr> <th>Done</th> <td ng-bind="job.itemsDownloaded|number" class="numeric"></td> </tr> <tr> <th>Total</th> <td ng-bind="job.itemsQueued|number" class="numeric"></td> </tr> <tr> <th>100s</th> <td ng-bind="job.r1xx|number" class="numeric text-primary"></td> </tr> <tr> <th>200s</th> <td ng-bind="job.r2xx|number" class="numeric text-success"></td> </tr> <tr> <th>300s</th> <td ng-bind="job.r3xx|number" class="numeric text-info"></td> </tr> <tr> <th>400s</th> <td ng-bind="job.r4xx|number" class="numeric text-warning"></td> </tr> <tr> <th>500s</th> <td ng-bind="job.r5xx|number" class="numeric text-danger"></td> </tr> <tr> <th>Errs</th> <td ng-bind="job.errorCount|number" class="numeric text-danger"></td> </tr> </tbody> </table> <p>Queued <span ng-bind="::job.queuedAt * 1000|date:'yyyy-MM-dd HH:mm:ss'"></span> <span ng-if="::showNicks">by <span ng-bind="::job.startedBy"></span></span>.</p> <p><tt ng-bind="::job.pipelineId" class="pipeline"></tt></p> <p class="extra-links"><a href="https://translate.google.com/website?sl=auto&amp;tl=en&amp;hl=en-GB&amp;u=https://archive.fart.website/archivebot/viewer/job/%7B%7B::+job.ident+%7C+limitTo:5+%7D%7D">ArchiveBot viewer</a> • <a href="https://translate.google.com/website?sl=auto&amp;tl=en&amp;hl=en-GB&amp;u=https://web.archive.org/web/*/%7B%7B::+job.url+%7D%7D">Wayback Machine</a></p> </div> <div class="col-sm-9"> <div id="job-log-{{:: job.ident }}" class="job-log well well-sm" ng-class="{ 'height-limit-small': !job.fullview, 'height-limit-big': job.fullview, 'autoscroll': !job.logPaused, 'job-log-paused': job.logPaused }" ng-mouseover="job.logPaused = true" ng-mouseleave="job.logPaused = false"></div> <div class="autoscroll-paused bg-info" ng-show="job.logPaused"> Paused </div> {{:: job.attachAntiScroll() }} </div> </div> <div class="row"> <div class="col-xs-1"><button class="btn btn-block btn-default btn-xs" ng-click="applyFilterQuery(job.ident)"><span class="glyphicon glyphicon-filter" aria-label="Show only this job"></span></button> </div> <div class="col-xs-11"><button class="job-detail-handle btn btn-default btn-block btn-xs" ng-click="job.fullview = !job.fullview; job.logPaused = job.fullview;" ng-class="{ 'job-detail-handle-active': job.fullview }" aria-label="Toggle detail full view">• • •</button> </div> </div> </div></td> </tr> </tbody> </table> </div> <script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.3.8/angular.min.js"></script> <script src="https://translate.google.com/website?sl=auto&amp;tl=en&amp;hl=en-GB&amp;u=http://www.archivebot.com/assets/dashboard3.js"></script> <script>function gtElInit() {var lib = new google.translate.TranslateService();lib.translatePage('en', 'en', function () {});}</script> <script src="https://translate.google.com/translate_a/element.js?cb=gtElInit&amp;hl=en-GB&amp;client=wt" type="text/javascript"></script> </body> </html>

Pages: 1 2 3 4 5 6 7 8 9 10