pywb 2.7.2__tar.gz → 2.7.4__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (387) hide show
  1. {pywb-2.7.2 → pywb-2.7.4}/CHANGES.rst +16 -0
  2. {pywb-2.7.2/pywb.egg-info → pywb-2.7.4}/PKG-INFO +1 -1
  3. {pywb-2.7.2 → pywb-2.7.4}/build-vue-ui.sh +1 -0
  4. {pywb-2.7.2 → pywb-2.7.4}/config.yaml +1 -0
  5. {pywb-2.7.2 → pywb-2.7.4}/docs/manual/vue-ui.rst +15 -0
  6. {pywb-2.7.2 → pywb-2.7.4}/pywb/apps/frontendapp.py +2 -1
  7. {pywb-2.7.2 → pywb-2.7.4}/pywb/apps/rewriterapp.py +2 -2
  8. pywb-2.7.4/pywb/git_hash.py +1 -0
  9. {pywb-2.7.2 → pywb-2.7.4}/pywb/indexer/cdxindexer.py +9 -2
  10. {pywb-2.7.2 → pywb-2.7.4}/pywb/manager/manager.py +10 -0
  11. {pywb-2.7.2 → pywb-2.7.4}/pywb/rules.yaml +14 -2
  12. {pywb-2.7.2 → pywb-2.7.4}/pywb/static/query.js +3 -3
  13. {pywb-2.7.2 → pywb-2.7.4}/pywb/static/search.js +23 -6
  14. pywb-2.7.4/pywb/static/vue/vueui.js +15007 -0
  15. pywb-2.7.4/pywb/static/wombat.js +21 -0
  16. {pywb-2.7.2 → pywb-2.7.4}/pywb/static/wombatProxyMode.js +1 -1
  17. {pywb-2.7.2 → pywb-2.7.4}/pywb/static/wombatWorkers.js +1 -1
  18. {pywb-2.7.2 → pywb-2.7.4}/pywb/templates/frame_insert.html +1 -1
  19. pywb-2.7.4/pywb/templates/instructions.html +216 -0
  20. {pywb-2.7.2 → pywb-2.7.4}/pywb/templates/query.html +5 -1
  21. {pywb-2.7.2 → pywb-2.7.4}/pywb/templates/search.html +34 -32
  22. {pywb-2.7.2 → pywb-2.7.4}/pywb/version.py +1 -1
  23. {pywb-2.7.2 → pywb-2.7.4}/pywb/warcserver/index/fuzzymatcher.py +16 -8
  24. {pywb-2.7.2 → pywb-2.7.4}/pywb/warcserver/index/test/test_fuzzymatcher.py +7 -0
  25. {pywb-2.7.2 → pywb-2.7.4}/pywb/warcserver/test/test_handlers.py +4 -2
  26. {pywb-2.7.2 → pywb-2.7.4/pywb.egg-info}/PKG-INFO +1 -1
  27. {pywb-2.7.2 → pywb-2.7.4}/pywb.egg-info/SOURCES.txt +1 -0
  28. {pywb-2.7.2 → pywb-2.7.4}/tests/test_live_rewriter.py +2 -1
  29. {pywb-2.7.2 → pywb-2.7.4}/tests/test_range.py +1 -1
  30. {pywb-2.7.2 → pywb-2.7.4}/tests/test_socks.py +2 -0
  31. pywb-2.7.2/pywb/git_hash.py +0 -1
  32. pywb-2.7.2/pywb/static/vue/vueui.js +0 -14996
  33. pywb-2.7.2/pywb/static/wombat.js +0 -21
  34. {pywb-2.7.2 → pywb-2.7.4}/.dockerignore +0 -0
  35. {pywb-2.7.2 → pywb-2.7.4}/.gitmodules +0 -0
  36. {pywb-2.7.2 → pywb-2.7.4}/.travis.yml +0 -0
  37. {pywb-2.7.2 → pywb-2.7.4}/Dockerfile +0 -0
  38. {pywb-2.7.2 → pywb-2.7.4}/INSTALL.rst +0 -0
  39. {pywb-2.7.2 → pywb-2.7.4}/LICENSE +0 -0
  40. {pywb-2.7.2 → pywb-2.7.4}/MANIFEST.in +0 -0
  41. {pywb-2.7.2 → pywb-2.7.4}/NOTICE +0 -0
  42. {pywb-2.7.2 → pywb-2.7.4}/README.rst +0 -0
  43. {pywb-2.7.2 → pywb-2.7.4}/Vagrantfile +0 -0
  44. {pywb-2.7.2 → pywb-2.7.4}/appveyor.disabled.yml +0 -0
  45. {pywb-2.7.2 → pywb-2.7.4}/build-wombat.sh +0 -0
  46. {pywb-2.7.2 → pywb-2.7.4}/docker-compose.yaml +0 -0
  47. {pywb-2.7.2 → pywb-2.7.4}/docker-entrypoint.sh +0 -0
  48. {pywb-2.7.2 → pywb-2.7.4}/docs/Makefile +0 -0
  49. {pywb-2.7.2 → pywb-2.7.4}/docs/code/pywb.apps.rst +0 -0
  50. {pywb-2.7.2 → pywb-2.7.4}/docs/code/pywb.indexer.rst +0 -0
  51. {pywb-2.7.2 → pywb-2.7.4}/docs/code/pywb.manager.rst +0 -0
  52. {pywb-2.7.2 → pywb-2.7.4}/docs/code/pywb.recorder.rst +0 -0
  53. {pywb-2.7.2 → pywb-2.7.4}/docs/code/pywb.rewrite.rst +0 -0
  54. {pywb-2.7.2 → pywb-2.7.4}/docs/code/pywb.rst +0 -0
  55. {pywb-2.7.2 → pywb-2.7.4}/docs/code/pywb.utils.rst +0 -0
  56. {pywb-2.7.2 → pywb-2.7.4}/docs/code/pywb.warcserver.index.rst +0 -0
  57. {pywb-2.7.2 → pywb-2.7.4}/docs/code/pywb.warcserver.resource.rst +0 -0
  58. {pywb-2.7.2 → pywb-2.7.4}/docs/code/pywb.warcserver.rst +0 -0
  59. {pywb-2.7.2 → pywb-2.7.4}/docs/conf.py +0 -0
  60. {pywb-2.7.2 → pywb-2.7.4}/docs/index.rst +0 -0
  61. {pywb-2.7.2 → pywb-2.7.4}/docs/make.bat +0 -0
  62. {pywb-2.7.2 → pywb-2.7.4}/docs/manual/access-control.rst +0 -0
  63. {pywb-2.7.2 → pywb-2.7.4}/docs/manual/apis.rst +0 -0
  64. {pywb-2.7.2 → pywb-2.7.4}/docs/manual/apps.rst +0 -0
  65. {pywb-2.7.2 → pywb-2.7.4}/docs/manual/architecture.rst +0 -0
  66. {pywb-2.7.2 → pywb-2.7.4}/docs/manual/cdxserver_api.rst +0 -0
  67. {pywb-2.7.2 → pywb-2.7.4}/docs/manual/configuring.rst +0 -0
  68. {pywb-2.7.2 → pywb-2.7.4}/docs/manual/indexing.rst +0 -0
  69. {pywb-2.7.2 → pywb-2.7.4}/docs/manual/localization.rst +0 -0
  70. {pywb-2.7.2 → pywb-2.7.4}/docs/manual/memento.rst +0 -0
  71. {pywb-2.7.2 → pywb-2.7.4}/docs/manual/migrating-cdx.rst +0 -0
  72. {pywb-2.7.2 → pywb-2.7.4}/docs/manual/outbackcdx.rst +0 -0
  73. {pywb-2.7.2 → pywb-2.7.4}/docs/manual/owb-pywb-terms.rst +0 -0
  74. {pywb-2.7.2 → pywb-2.7.4}/docs/manual/owb-to-pywb-config.rst +0 -0
  75. {pywb-2.7.2 → pywb-2.7.4}/docs/manual/owb-to-pywb-deploy.rst +0 -0
  76. {pywb-2.7.2 → pywb-2.7.4}/docs/manual/owb-to-pywb-exclusions.rst +0 -0
  77. {pywb-2.7.2 → pywb-2.7.4}/docs/manual/owb-transition.rst +0 -0
  78. {pywb-2.7.2 → pywb-2.7.4}/docs/manual/recorder.rst +0 -0
  79. {pywb-2.7.2 → pywb-2.7.4}/docs/manual/rewriter.rst +0 -0
  80. {pywb-2.7.2 → pywb-2.7.4}/docs/manual/template-guide.rst +0 -0
  81. {pywb-2.7.2 → pywb-2.7.4}/docs/manual/ui-customization.rst +0 -0
  82. {pywb-2.7.2 → pywb-2.7.4}/docs/manual/ui-guide.rst +0 -0
  83. {pywb-2.7.2 → pywb-2.7.4}/docs/manual/usage.rst +0 -0
  84. {pywb-2.7.2 → pywb-2.7.4}/docs/manual/warcserver.rst +0 -0
  85. {pywb-2.7.2 → pywb-2.7.4}/extra_requirements.txt +0 -0
  86. {pywb-2.7.2 → pywb-2.7.4}/pywb/__init__.py +0 -0
  87. {pywb-2.7.2 → pywb-2.7.4}/pywb/apps/__init__.py +0 -0
  88. {pywb-2.7.2 → pywb-2.7.4}/pywb/apps/cli.py +0 -0
  89. {pywb-2.7.2 → pywb-2.7.4}/pywb/apps/live.py +0 -0
  90. {pywb-2.7.2 → pywb-2.7.4}/pywb/apps/static_handler.py +0 -0
  91. {pywb-2.7.2 → pywb-2.7.4}/pywb/apps/test/test_rewriter.py +0 -0
  92. {pywb-2.7.2 → pywb-2.7.4}/pywb/apps/test/test_wbrequestresponse.py +0 -0
  93. {pywb-2.7.2 → pywb-2.7.4}/pywb/apps/warcserverapp.py +0 -0
  94. {pywb-2.7.2 → pywb-2.7.4}/pywb/apps/wayback.py +0 -0
  95. {pywb-2.7.2 → pywb-2.7.4}/pywb/apps/wbrequestresponse.py +0 -0
  96. {pywb-2.7.2 → pywb-2.7.4}/pywb/default_config.yaml +0 -0
  97. {pywb-2.7.2 → pywb-2.7.4}/pywb/indexer/__init__.py +0 -0
  98. {pywb-2.7.2 → pywb-2.7.4}/pywb/indexer/archiveindexer.py +0 -0
  99. {pywb-2.7.2 → pywb-2.7.4}/pywb/indexer/test/test_indexing.py +0 -0
  100. {pywb-2.7.2 → pywb-2.7.4}/pywb/manager/__init__.py +0 -0
  101. {pywb-2.7.2 → pywb-2.7.4}/pywb/manager/aclmanager.py +0 -0
  102. {pywb-2.7.2 → pywb-2.7.4}/pywb/manager/autoindex.py +0 -0
  103. {pywb-2.7.2 → pywb-2.7.4}/pywb/manager/locmanager.py +0 -0
  104. {pywb-2.7.2 → pywb-2.7.4}/pywb/manager/migrate.py +0 -0
  105. {pywb-2.7.2 → pywb-2.7.4}/pywb/recorder/__init__.py +0 -0
  106. {pywb-2.7.2 → pywb-2.7.4}/pywb/recorder/filters.py +0 -0
  107. {pywb-2.7.2 → pywb-2.7.4}/pywb/recorder/multifilewarcwriter.py +0 -0
  108. {pywb-2.7.2 → pywb-2.7.4}/pywb/recorder/recorderapp.py +0 -0
  109. {pywb-2.7.2 → pywb-2.7.4}/pywb/recorder/redisindexer.py +0 -0
  110. {pywb-2.7.2 → pywb-2.7.4}/pywb/recorder/test/rec.ini +0 -0
  111. {pywb-2.7.2 → pywb-2.7.4}/pywb/recorder/test/simplerec.py +0 -0
  112. {pywb-2.7.2 → pywb-2.7.4}/pywb/recorder/test/test_recorder.py +0 -0
  113. {pywb-2.7.2 → pywb-2.7.4}/pywb/rewrite/__init__.py +0 -0
  114. {pywb-2.7.2 → pywb-2.7.4}/pywb/rewrite/content_rewriter.py +0 -0
  115. {pywb-2.7.2 → pywb-2.7.4}/pywb/rewrite/cookie_rewriter.py +0 -0
  116. {pywb-2.7.2 → pywb-2.7.4}/pywb/rewrite/cookies.py +0 -0
  117. {pywb-2.7.2 → pywb-2.7.4}/pywb/rewrite/default_rewriter.py +0 -0
  118. {pywb-2.7.2 → pywb-2.7.4}/pywb/rewrite/header_rewriter.py +0 -0
  119. {pywb-2.7.2 → pywb-2.7.4}/pywb/rewrite/html_insert_rewriter.py +0 -0
  120. {pywb-2.7.2 → pywb-2.7.4}/pywb/rewrite/html_rewriter.py +0 -0
  121. {pywb-2.7.2 → pywb-2.7.4}/pywb/rewrite/jsonp_rewriter.py +0 -0
  122. {pywb-2.7.2 → pywb-2.7.4}/pywb/rewrite/regex_rewriters.py +0 -0
  123. {pywb-2.7.2 → pywb-2.7.4}/pywb/rewrite/rewrite_amf.py +0 -0
  124. {pywb-2.7.2 → pywb-2.7.4}/pywb/rewrite/rewrite_dash.py +0 -0
  125. {pywb-2.7.2 → pywb-2.7.4}/pywb/rewrite/rewrite_hls.py +0 -0
  126. {pywb-2.7.2 → pywb-2.7.4}/pywb/rewrite/rewrite_js_workers.py +0 -0
  127. {pywb-2.7.2 → pywb-2.7.4}/pywb/rewrite/rewriteinputreq.py +0 -0
  128. {pywb-2.7.2 → pywb-2.7.4}/pywb/rewrite/templateview.py +0 -0
  129. {pywb-2.7.2 → pywb-2.7.4}/pywb/rewrite/test/test_content_rewriter.py +0 -0
  130. {pywb-2.7.2 → pywb-2.7.4}/pywb/rewrite/test/test_cookie_rewriter.py +0 -0
  131. {pywb-2.7.2 → pywb-2.7.4}/pywb/rewrite/test/test_header_rewriter.py +0 -0
  132. {pywb-2.7.2 → pywb-2.7.4}/pywb/rewrite/test/test_html_insert_rewriter.py +0 -0
  133. {pywb-2.7.2 → pywb-2.7.4}/pywb/rewrite/test/test_html_rewriter.py +0 -0
  134. {pywb-2.7.2 → pywb-2.7.4}/pywb/rewrite/test/test_jsonp_rewriter.py +0 -0
  135. {pywb-2.7.2 → pywb-2.7.4}/pywb/rewrite/test/test_regex_rewriters.py +0 -0
  136. {pywb-2.7.2 → pywb-2.7.4}/pywb/rewrite/test/test_url_rewriter.py +0 -0
  137. {pywb-2.7.2 → pywb-2.7.4}/pywb/rewrite/test/test_wburl.py +0 -0
  138. {pywb-2.7.2 → pywb-2.7.4}/pywb/rewrite/url_rewriter.py +0 -0
  139. {pywb-2.7.2 → pywb-2.7.4}/pywb/rewrite/wburl.py +0 -0
  140. {pywb-2.7.2 → pywb-2.7.4}/pywb/static/autoFetchWorker.js +0 -0
  141. {pywb-2.7.2 → pywb-2.7.4}/pywb/static/calendar-icon.png +0 -0
  142. {pywb-2.7.2 → pywb-2.7.4}/pywb/static/calendar.svg +0 -0
  143. {pywb-2.7.2 → pywb-2.7.4}/pywb/static/css/base.css +0 -0
  144. {pywb-2.7.2 → pywb-2.7.4}/pywb/static/css/bootstrap.min.css +0 -0
  145. {pywb-2.7.2 → pywb-2.7.4}/pywb/static/css/font-awesome.min.css +0 -0
  146. {pywb-2.7.2 → pywb-2.7.4}/pywb/static/css/query.css +0 -0
  147. {pywb-2.7.2 → pywb-2.7.4}/pywb/static/flowplayer/flowplayer-3.2.18.swf +0 -0
  148. {pywb-2.7.2 → pywb-2.7.4}/pywb/static/flowplayer/flowplayer.audio-3.2.11.swf +0 -0
  149. {pywb-2.7.2 → pywb-2.7.4}/pywb/static/flowplayer/flowplayer.controls-3.2.16.swf +0 -0
  150. {pywb-2.7.2 → pywb-2.7.4}/pywb/static/flowplayer/flowplayer.pseudostreaming-3.2.13.swf +0 -0
  151. {pywb-2.7.2 → pywb-2.7.4}/pywb/static/flowplayer/toolbox.flashembed.js +0 -0
  152. {pywb-2.7.2 → pywb-2.7.4}/pywb/static/fonts/font-awesome/fa-brands-400.eot +0 -0
  153. {pywb-2.7.2 → pywb-2.7.4}/pywb/static/fonts/font-awesome/fa-brands-400.svg +0 -0
  154. {pywb-2.7.2 → pywb-2.7.4}/pywb/static/fonts/font-awesome/fa-brands-400.ttf +0 -0
  155. {pywb-2.7.2 → pywb-2.7.4}/pywb/static/fonts/font-awesome/fa-brands-400.woff +0 -0
  156. {pywb-2.7.2 → pywb-2.7.4}/pywb/static/fonts/font-awesome/fa-brands-400.woff2 +0 -0
  157. {pywb-2.7.2 → pywb-2.7.4}/pywb/static/fonts/font-awesome/fa-regular-400.eot +0 -0
  158. {pywb-2.7.2 → pywb-2.7.4}/pywb/static/fonts/font-awesome/fa-regular-400.svg +0 -0
  159. {pywb-2.7.2 → pywb-2.7.4}/pywb/static/fonts/font-awesome/fa-regular-400.ttf +0 -0
  160. {pywb-2.7.2 → pywb-2.7.4}/pywb/static/fonts/font-awesome/fa-regular-400.woff +0 -0
  161. {pywb-2.7.2 → pywb-2.7.4}/pywb/static/fonts/font-awesome/fa-regular-400.woff2 +0 -0
  162. {pywb-2.7.2 → pywb-2.7.4}/pywb/static/fonts/font-awesome/fa-solid-900.eot +0 -0
  163. {pywb-2.7.2 → pywb-2.7.4}/pywb/static/fonts/font-awesome/fa-solid-900.svg +0 -0
  164. {pywb-2.7.2 → pywb-2.7.4}/pywb/static/fonts/font-awesome/fa-solid-900.ttf +0 -0
  165. {pywb-2.7.2 → pywb-2.7.4}/pywb/static/fonts/font-awesome/fa-solid-900.woff +0 -0
  166. {pywb-2.7.2 → pywb-2.7.4}/pywb/static/fonts/font-awesome/fa-solid-900.woff2 +0 -0
  167. {pywb-2.7.2 → pywb-2.7.4}/pywb/static/fonts/glyphicons-halflings-regular.eot +0 -0
  168. {pywb-2.7.2 → pywb-2.7.4}/pywb/static/fonts/glyphicons-halflings-regular.svg +0 -0
  169. {pywb-2.7.2 → pywb-2.7.4}/pywb/static/fonts/glyphicons-halflings-regular.ttf +0 -0
  170. {pywb-2.7.2 → pywb-2.7.4}/pywb/static/fonts/glyphicons-halflings-regular.woff +0 -0
  171. {pywb-2.7.2 → pywb-2.7.4}/pywb/static/fonts/glyphicons-halflings-regular.woff2 +0 -0
  172. {pywb-2.7.2 → pywb-2.7.4}/pywb/static/js/bootstrap.min.js +0 -0
  173. {pywb-2.7.2 → pywb-2.7.4}/pywb/static/js/jquery-latest.min.js +0 -0
  174. {pywb-2.7.2 → pywb-2.7.4}/pywb/static/js/url-polyfill.min.js +0 -0
  175. {pywb-2.7.2 → pywb-2.7.4}/pywb/static/loading-spinner/loading-spinner.js +0 -0
  176. {pywb-2.7.2 → pywb-2.7.4}/pywb/static/loading-spinner/test.html +0 -0
  177. {pywb-2.7.2 → pywb-2.7.4}/pywb/static/pywb-logo-sm.png +0 -0
  178. {pywb-2.7.2 → pywb-2.7.4}/pywb/static/pywb-logo.png +0 -0
  179. {pywb-2.7.2 → pywb-2.7.4}/pywb/static/queryWorker.js +0 -0
  180. {pywb-2.7.2 → pywb-2.7.4}/pywb/static/scroll-webkit.css +0 -0
  181. {pywb-2.7.2 → pywb-2.7.4}/pywb/static/timeline-icon.png +0 -0
  182. {pywb-2.7.2 → pywb-2.7.4}/pywb/static/transclusions.js +0 -0
  183. {pywb-2.7.2 → pywb-2.7.4}/pywb/static/vidrw.js +0 -0
  184. {pywb-2.7.2 → pywb-2.7.4}/pywb/static/vue_banner.css +0 -0
  185. {pywb-2.7.2 → pywb-2.7.4}/pywb/static/wb_frame.js +0 -0
  186. {pywb-2.7.2 → pywb-2.7.4}/pywb/static/zoom-out-icon-333316.png +0 -0
  187. {pywb-2.7.2 → pywb-2.7.4}/pywb/templates/banner.html +0 -0
  188. {pywb-2.7.2 → pywb-2.7.4}/pywb/templates/base.html +0 -0
  189. {pywb-2.7.2 → pywb-2.7.4}/pywb/templates/bootstrap_jquery.html +0 -0
  190. {pywb-2.7.2 → pywb-2.7.4}/pywb/templates/collinfo.json +0 -0
  191. {pywb-2.7.2 → pywb-2.7.4}/pywb/templates/custom_banner.html +0 -0
  192. {pywb-2.7.2 → pywb-2.7.4}/pywb/templates/error.html +0 -0
  193. {pywb-2.7.2 → pywb-2.7.4}/pywb/templates/footer.html +0 -0
  194. {pywb-2.7.2 → pywb-2.7.4}/pywb/templates/head.html +0 -0
  195. {pywb-2.7.2 → pywb-2.7.4}/pywb/templates/head_insert.html +0 -0
  196. {pywb-2.7.2 → pywb-2.7.4}/pywb/templates/header.html +0 -0
  197. {pywb-2.7.2 → pywb-2.7.4}/pywb/templates/index.html +0 -0
  198. {pywb-2.7.2 → pywb-2.7.4}/pywb/templates/not_found.html +0 -0
  199. {pywb-2.7.2 → pywb-2.7.4}/pywb/templates/proxy_cert_download.html +0 -0
  200. {pywb-2.7.2 → pywb-2.7.4}/pywb/templates/proxy_select.html +0 -0
  201. {pywb-2.7.2 → pywb-2.7.4}/pywb/templates/vue_loc.html +0 -0
  202. {pywb-2.7.2 → pywb-2.7.4}/pywb/utils/README.md +0 -0
  203. {pywb-2.7.2 → pywb-2.7.4}/pywb/utils/__init__.py +0 -0
  204. {pywb-2.7.2 → pywb-2.7.4}/pywb/utils/binsearch.py +0 -0
  205. {pywb-2.7.2 → pywb-2.7.4}/pywb/utils/canonicalize.py +0 -0
  206. {pywb-2.7.2 → pywb-2.7.4}/pywb/utils/format.py +0 -0
  207. {pywb-2.7.2 → pywb-2.7.4}/pywb/utils/geventserver.py +0 -0
  208. {pywb-2.7.2 → pywb-2.7.4}/pywb/utils/io.py +0 -0
  209. {pywb-2.7.2 → pywb-2.7.4}/pywb/utils/loaders.py +0 -0
  210. {pywb-2.7.2 → pywb-2.7.4}/pywb/utils/memento.py +0 -0
  211. {pywb-2.7.2 → pywb-2.7.4}/pywb/utils/merge.py +0 -0
  212. {pywb-2.7.2 → pywb-2.7.4}/pywb/utils/test/test_binsearch.py +0 -0
  213. {pywb-2.7.2 → pywb-2.7.4}/pywb/utils/test/test_loaders.py +0 -0
  214. {pywb-2.7.2 → pywb-2.7.4}/pywb/utils/wbexception.py +0 -0
  215. {pywb-2.7.2 → pywb-2.7.4}/pywb/vueui/src/cdx-simulator/README.md +0 -0
  216. {pywb-2.7.2 → pywb-2.7.4}/pywb/warcserver/__init__.py +0 -0
  217. {pywb-2.7.2 → pywb-2.7.4}/pywb/warcserver/access_checker.py +0 -0
  218. {pywb-2.7.2 → pywb-2.7.4}/pywb/warcserver/amf.py +0 -0
  219. {pywb-2.7.2 → pywb-2.7.4}/pywb/warcserver/basewarcserver.py +0 -0
  220. {pywb-2.7.2 → pywb-2.7.4}/pywb/warcserver/handlers.py +0 -0
  221. {pywb-2.7.2 → pywb-2.7.4}/pywb/warcserver/http.py +0 -0
  222. {pywb-2.7.2 → pywb-2.7.4}/pywb/warcserver/index/__init__.py +0 -0
  223. {pywb-2.7.2 → pywb-2.7.4}/pywb/warcserver/index/aggregator.py +0 -0
  224. {pywb-2.7.2 → pywb-2.7.4}/pywb/warcserver/index/cdxobject.py +0 -0
  225. {pywb-2.7.2 → pywb-2.7.4}/pywb/warcserver/index/cdxops.py +0 -0
  226. {pywb-2.7.2 → pywb-2.7.4}/pywb/warcserver/index/indexsource.py +0 -0
  227. {pywb-2.7.2 → pywb-2.7.4}/pywb/warcserver/index/query.py +0 -0
  228. {pywb-2.7.2 → pywb-2.7.4}/pywb/warcserver/index/test/__init__.py +0 -0
  229. {pywb-2.7.2 → pywb-2.7.4}/pywb/warcserver/index/test/test_cdxobject.py +0 -0
  230. {pywb-2.7.2 → pywb-2.7.4}/pywb/warcserver/index/test/test_cdxops.py +0 -0
  231. {pywb-2.7.2 → pywb-2.7.4}/pywb/warcserver/index/test/test_dir_agg.py +0 -0
  232. {pywb-2.7.2 → pywb-2.7.4}/pywb/warcserver/index/test/test_indexsource.py +0 -0
  233. {pywb-2.7.2 → pywb-2.7.4}/pywb/warcserver/index/test/test_lazy_ops.py +0 -0
  234. {pywb-2.7.2 → pywb-2.7.4}/pywb/warcserver/index/test/test_memento_agg.py +0 -0
  235. {pywb-2.7.2 → pywb-2.7.4}/pywb/warcserver/index/test/test_redis_agg.py +0 -0
  236. {pywb-2.7.2 → pywb-2.7.4}/pywb/warcserver/index/test/test_timeouts.py +0 -0
  237. {pywb-2.7.2 → pywb-2.7.4}/pywb/warcserver/index/test/test_xmlquery_indexsource.py +0 -0
  238. {pywb-2.7.2 → pywb-2.7.4}/pywb/warcserver/index/test/test_zipnum.py +0 -0
  239. {pywb-2.7.2 → pywb-2.7.4}/pywb/warcserver/index/zipnum.py +0 -0
  240. {pywb-2.7.2 → pywb-2.7.4}/pywb/warcserver/inputrequest.py +0 -0
  241. {pywb-2.7.2 → pywb-2.7.4}/pywb/warcserver/resource/__init__.py +0 -0
  242. {pywb-2.7.2 → pywb-2.7.4}/pywb/warcserver/resource/blockrecordloader.py +0 -0
  243. {pywb-2.7.2 → pywb-2.7.4}/pywb/warcserver/resource/pathresolvers.py +0 -0
  244. {pywb-2.7.2 → pywb-2.7.4}/pywb/warcserver/resource/resolvingloader.py +0 -0
  245. {pywb-2.7.2 → pywb-2.7.4}/pywb/warcserver/resource/responseloader.py +0 -0
  246. {pywb-2.7.2 → pywb-2.7.4}/pywb/warcserver/resource/test/__init__.py +0 -0
  247. {pywb-2.7.2 → pywb-2.7.4}/pywb/warcserver/resource/test/test_loading.py +0 -0
  248. {pywb-2.7.2 → pywb-2.7.4}/pywb/warcserver/resource/test/test_pathresolvers.py +0 -0
  249. {pywb-2.7.2 → pywb-2.7.4}/pywb/warcserver/test/__init__.py +0 -0
  250. {pywb-2.7.2 → pywb-2.7.4}/pywb/warcserver/test/live.ini +0 -0
  251. {pywb-2.7.2 → pywb-2.7.4}/pywb/warcserver/test/test_access.py +0 -0
  252. {pywb-2.7.2 → pywb-2.7.4}/pywb/warcserver/test/test_amf.py +0 -0
  253. {pywb-2.7.2 → pywb-2.7.4}/pywb/warcserver/test/test_inputreq.py +0 -0
  254. {pywb-2.7.2 → pywb-2.7.4}/pywb/warcserver/test/test_upstream.py +0 -0
  255. {pywb-2.7.2 → pywb-2.7.4}/pywb/warcserver/test/test_warcserver.py +0 -0
  256. {pywb-2.7.2 → pywb-2.7.4}/pywb/warcserver/test/test_warcserver_config.yaml +0 -0
  257. {pywb-2.7.2 → pywb-2.7.4}/pywb/warcserver/test/testutils.py +0 -0
  258. {pywb-2.7.2 → pywb-2.7.4}/pywb/warcserver/upstreamindexsource.py +0 -0
  259. {pywb-2.7.2 → pywb-2.7.4}/pywb/warcserver/warcserver.py +0 -0
  260. {pywb-2.7.2 → pywb-2.7.4}/pywb.egg-info/dependency_links.txt +0 -0
  261. {pywb-2.7.2 → pywb-2.7.4}/pywb.egg-info/entry_points.txt +0 -0
  262. {pywb-2.7.2 → pywb-2.7.4}/pywb.egg-info/not-zip-safe +0 -0
  263. {pywb-2.7.2 → pywb-2.7.4}/pywb.egg-info/requires.txt +0 -0
  264. {pywb-2.7.2 → pywb-2.7.4}/pywb.egg-info/top_level.txt +0 -0
  265. {pywb-2.7.2 → pywb-2.7.4}/requirements.txt +0 -0
  266. {pywb-2.7.2 → pywb-2.7.4}/run-gunicorn.sh +0 -0
  267. {pywb-2.7.2 → pywb-2.7.4}/run-tests.py +0 -0
  268. {pywb-2.7.2 → pywb-2.7.4}/run-uwsgi.sh +0 -0
  269. {pywb-2.7.2 → pywb-2.7.4}/sample_archive/access/allows.aclj +0 -0
  270. {pywb-2.7.2 → pywb-2.7.4}/sample_archive/access/blocks.aclj +0 -0
  271. {pywb-2.7.2 → pywb-2.7.4}/sample_archive/access/list1.aclj +0 -0
  272. {pywb-2.7.2 → pywb-2.7.4}/sample_archive/access/list2.aclj +0 -0
  273. {pywb-2.7.2 → pywb-2.7.4}/sample_archive/access/pywb.aclj +0 -0
  274. {pywb-2.7.2 → pywb-2.7.4}/sample_archive/access/single-line.aclj +0 -0
  275. {pywb-2.7.2 → pywb-2.7.4}/sample_archive/cdx/bad.cdx +0 -0
  276. {pywb-2.7.2 → pywb-2.7.4}/sample_archive/cdx/dupes.cdx +0 -0
  277. {pywb-2.7.2 → pywb-2.7.4}/sample_archive/cdx/example-arc-test.cdx +0 -0
  278. {pywb-2.7.2 → pywb-2.7.4}/sample_archive/cdx/example-extra.cdx +0 -0
  279. {pywb-2.7.2 → pywb-2.7.4}/sample_archive/cdx/example.cdx +0 -0
  280. {pywb-2.7.2 → pywb-2.7.4}/sample_archive/cdx/httpbin-resource.cdxj +0 -0
  281. {pywb-2.7.2 → pywb-2.7.4}/sample_archive/cdx/iana.cdx +0 -0
  282. {pywb-2.7.2 → pywb-2.7.4}/sample_archive/cdx/missing-status-text.cdxj +0 -0
  283. {pywb-2.7.2 → pywb-2.7.4}/sample_archive/cdx/post-test.cdx +0 -0
  284. {pywb-2.7.2 → pywb-2.7.4}/sample_archive/cdx/url-agnost-example.cdx +0 -0
  285. {pywb-2.7.2 → pywb-2.7.4}/sample_archive/cdxj/dupes.cdxj +0 -0
  286. {pywb-2.7.2 → pywb-2.7.4}/sample_archive/cdxj/example-no-digest.cdxj +0 -0
  287. {pywb-2.7.2 → pywb-2.7.4}/sample_archive/cdxj/example.cdxj +0 -0
  288. {pywb-2.7.2 → pywb-2.7.4}/sample_archive/cdxj/example2.cdxj +0 -0
  289. {pywb-2.7.2 → pywb-2.7.4}/sample_archive/cdxj/iana.cdxj +0 -0
  290. {pywb-2.7.2 → pywb-2.7.4}/sample_archive/cdxj/post-test.cdxj +0 -0
  291. {pywb-2.7.2 → pywb-2.7.4}/sample_archive/cdxj/url-agnost-example.cdxj +0 -0
  292. {pywb-2.7.2 → pywb-2.7.4}/sample_archive/non-surt-cdx/example-non-surt.cdx +0 -0
  293. {pywb-2.7.2 → pywb-2.7.4}/sample_archive/text_content/link_headers.yaml +0 -0
  294. {pywb-2.7.2 → pywb-2.7.4}/sample_archive/text_content/pathindex.txt +0 -0
  295. {pywb-2.7.2 → pywb-2.7.4}/sample_archive/text_content/quickfox_repeated.compressed +0 -0
  296. {pywb-2.7.2 → pywb-2.7.4}/sample_archive/text_content/sample.html +0 -0
  297. {pywb-2.7.2 → pywb-2.7.4}/sample_archive/text_content/sample_dash.mpd +0 -0
  298. {pywb-2.7.2 → pywb-2.7.4}/sample_archive/text_content/sample_hls.m3u8 +0 -0
  299. {pywb-2.7.2 → pywb-2.7.4}/sample_archive/text_content/sample_no_head.html +0 -0
  300. {pywb-2.7.2 → pywb-2.7.4}/sample_archive/text_content/sample_no_head_2.html +0 -0
  301. {pywb-2.7.2 → pywb-2.7.4}/sample_archive/text_content/sample_unclosed_script.html +0 -0
  302. {pywb-2.7.2 → pywb-2.7.4}/sample_archive/text_content/toptest.js +0 -0
  303. {pywb-2.7.2 → pywb-2.7.4}/sample_archive/warcs/bad.arc +0 -0
  304. {pywb-2.7.2 → pywb-2.7.4}/sample_archive/warcs/dupes.warc.gz +0 -0
  305. {pywb-2.7.2 → pywb-2.7.4}/sample_archive/warcs/example-bad.warc.gz.bad +0 -0
  306. {pywb-2.7.2 → pywb-2.7.4}/sample_archive/warcs/example-extra.warc +0 -0
  307. {pywb-2.7.2 → pywb-2.7.4}/sample_archive/warcs/example-url-agnostic-orig.warc.gz +0 -0
  308. {pywb-2.7.2 → pywb-2.7.4}/sample_archive/warcs/example-url-agnostic-revisit.warc.gz +0 -0
  309. {pywb-2.7.2 → pywb-2.7.4}/sample_archive/warcs/example-wget-1-14.warc.gz +0 -0
  310. {pywb-2.7.2 → pywb-2.7.4}/sample_archive/warcs/example-wpull.warc.gz +0 -0
  311. {pywb-2.7.2 → pywb-2.7.4}/sample_archive/warcs/example.arc +0 -0
  312. {pywb-2.7.2 → pywb-2.7.4}/sample_archive/warcs/example.arc.gz +0 -0
  313. {pywb-2.7.2 → pywb-2.7.4}/sample_archive/warcs/example.warc +0 -0
  314. {pywb-2.7.2 → pywb-2.7.4}/sample_archive/warcs/example.warc.gz +0 -0
  315. {pywb-2.7.2 → pywb-2.7.4}/sample_archive/warcs/example2.warc.gz +0 -0
  316. {pywb-2.7.2 → pywb-2.7.4}/sample_archive/warcs/httpbin-resource.warc.gz +0 -0
  317. {pywb-2.7.2 → pywb-2.7.4}/sample_archive/warcs/iana.warc.gz +0 -0
  318. {pywb-2.7.2 → pywb-2.7.4}/sample_archive/warcs/missing-status-text.warc +0 -0
  319. {pywb-2.7.2 → pywb-2.7.4}/sample_archive/warcs/post-test.warc.gz +0 -0
  320. {pywb-2.7.2 → pywb-2.7.4}/sample_archive/zipcdx/zipnum-bad.idx +0 -0
  321. {pywb-2.7.2 → pywb-2.7.4}/sample_archive/zipcdx/zipnum-bad.loc +0 -0
  322. {pywb-2.7.2 → pywb-2.7.4}/sample_archive/zipcdx/zipnum-sample.cdx.gz +0 -0
  323. {pywb-2.7.2 → pywb-2.7.4}/sample_archive/zipcdx/zipnum-sample.idx +0 -0
  324. {pywb-2.7.2 → pywb-2.7.4}/sample_archive/zipcdx/zipnum-sample.loc +0 -0
  325. {pywb-2.7.2 → pywb-2.7.4}/setup.cfg +0 -0
  326. {pywb-2.7.2 → pywb-2.7.4}/setup.py +0 -0
  327. {pywb-2.7.2 → pywb-2.7.4}/test_requirements.txt +0 -0
  328. {pywb-2.7.2 → pywb-2.7.4}/tests/__init__.py +0 -0
  329. {pywb-2.7.2 → pywb-2.7.4}/tests/base_config_test.py +0 -0
  330. {pywb-2.7.2 → pywb-2.7.4}/tests/config_test.yaml +0 -0
  331. {pywb-2.7.2 → pywb-2.7.4}/tests/config_test_access.yaml +0 -0
  332. {pywb-2.7.2 → pywb-2.7.4}/tests/config_test_cert_req.yaml +0 -0
  333. {pywb-2.7.2 → pywb-2.7.4}/tests/config_test_loc.yaml +0 -0
  334. {pywb-2.7.2 → pywb-2.7.4}/tests/config_test_record.yaml +0 -0
  335. {pywb-2.7.2 → pywb-2.7.4}/tests/config_test_record_dedup.yaml +0 -0
  336. {pywb-2.7.2 → pywb-2.7.4}/tests/config_test_redirect_classic.yaml +0 -0
  337. {pywb-2.7.2 → pywb-2.7.4}/tests/config_test_root_coll.yaml +0 -0
  338. {pywb-2.7.2 → pywb-2.7.4}/tests/i18n-data/l337/LC_MESSAGES/messages.po +0 -0
  339. {pywb-2.7.2 → pywb-2.7.4}/tests/memento_fixture.py +0 -0
  340. {pywb-2.7.2 → pywb-2.7.4}/tests/test_acl.py +0 -0
  341. {pywb-2.7.2 → pywb-2.7.4}/tests/test_acl_manager.py +0 -0
  342. {pywb-2.7.2 → pywb-2.7.4}/tests/test_auto_colls.py +0 -0
  343. {pywb-2.7.2 → pywb-2.7.4}/tests/test_cdx_server_app.py +0 -0
  344. {pywb-2.7.2 → pywb-2.7.4}/tests/test_cert_req.py +0 -0
  345. {pywb-2.7.2 → pywb-2.7.4}/tests/test_cli.py +0 -0
  346. {pywb-2.7.2 → pywb-2.7.4}/tests/test_embargo.py +0 -0
  347. {pywb-2.7.2 → pywb-2.7.4}/tests/test_force_https.py +0 -0
  348. {pywb-2.7.2 → pywb-2.7.4}/tests/test_integration.py +0 -0
  349. {pywb-2.7.2 → pywb-2.7.4}/tests/test_locales.py +0 -0
  350. {pywb-2.7.2 → pywb-2.7.4}/tests/test_memento.py +0 -0
  351. {pywb-2.7.2 → pywb-2.7.4}/tests/test_prefer_header.py +0 -0
  352. {pywb-2.7.2 → pywb-2.7.4}/tests/test_prefixed_deploy.py +0 -0
  353. {pywb-2.7.2 → pywb-2.7.4}/tests/test_proxy.py +0 -0
  354. {pywb-2.7.2 → pywb-2.7.4}/tests/test_record_dedup.py +0 -0
  355. {pywb-2.7.2 → pywb-2.7.4}/tests/test_record_replay.py +0 -0
  356. {pywb-2.7.2 → pywb-2.7.4}/tests/test_redirect_classic.py +0 -0
  357. {pywb-2.7.2 → pywb-2.7.4}/tests/test_redirect_revisits.py +0 -0
  358. {pywb-2.7.2 → pywb-2.7.4}/tests/test_redirects.py +0 -0
  359. {pywb-2.7.2 → pywb-2.7.4}/tests/test_root_coll.py +0 -0
  360. {pywb-2.7.2 → pywb-2.7.4}/tests/test_zipnum_auto_dir.py +0 -0
  361. {pywb-2.7.2 → pywb-2.7.4}/tests_disabled/fixture.py +0 -0
  362. {pywb-2.7.2 → pywb-2.7.4}/tests_disabled/live.py +0 -0
  363. {pywb-2.7.2 → pywb-2.7.4}/tests_disabled/perms_fixture.py +0 -0
  364. {pywb-2.7.2 → pywb-2.7.4}/tests_disabled/server_mock.py +0 -0
  365. {pywb-2.7.2 → pywb-2.7.4}/tests_disabled/server_thread.py +0 -0
  366. {pywb-2.7.2 → pywb-2.7.4}/tests_disabled/test_cdxserver.py +0 -0
  367. {pywb-2.7.2 → pywb-2.7.4}/tests_disabled/test_config_frames.yaml +0 -0
  368. {pywb-2.7.2 → pywb-2.7.4}/tests_disabled/test_config_memento.yaml +0 -0
  369. {pywb-2.7.2 → pywb-2.7.4}/tests_disabled/test_config_proxy_http_cookie.yaml +0 -0
  370. {pywb-2.7.2 → pywb-2.7.4}/tests_disabled/test_config_proxy_https_cookie.yaml +0 -0
  371. {pywb-2.7.2 → pywb-2.7.4}/tests_disabled/test_config_proxy_ip.yaml +0 -0
  372. {pywb-2.7.2 → pywb-2.7.4}/tests_disabled/test_config_proxy_ip_redis.yaml +0 -0
  373. {pywb-2.7.2 → pywb-2.7.4}/tests_disabled/test_config_proxy_no_banner.yaml +0 -0
  374. {pywb-2.7.2 → pywb-2.7.4}/tests_disabled/test_config_root_coll.yaml +0 -0
  375. {pywb-2.7.2 → pywb-2.7.4}/tests_disabled/test_live_proxy.py +0 -0
  376. {pywb-2.7.2 → pywb-2.7.4}/tests_disabled/test_memento.py +0 -0
  377. {pywb-2.7.2 → pywb-2.7.4}/tests_disabled/test_perms.py +0 -0
  378. {pywb-2.7.2 → pywb-2.7.4}/tests_disabled/test_perms_app.py +0 -0
  379. {pywb-2.7.2 → pywb-2.7.4}/tests_disabled/test_proxy_http_auth.py +0 -0
  380. {pywb-2.7.2 → pywb-2.7.4}/tests_disabled/test_proxy_http_cookie.py +0 -0
  381. {pywb-2.7.2 → pywb-2.7.4}/tests_disabled/test_proxy_http_ip.py +0 -0
  382. {pywb-2.7.2 → pywb-2.7.4}/tests_disabled/test_proxy_http_ip_redis.py +0 -0
  383. {pywb-2.7.2 → pywb-2.7.4}/tests_disabled/test_proxy_http_no_banner.py +0 -0
  384. {pywb-2.7.2 → pywb-2.7.4}/tests_disabled/test_proxy_https_cookie.py +0 -0
  385. {pywb-2.7.2 → pywb-2.7.4}/tests_disabled/test_rewrite_content.py +0 -0
  386. {pywb-2.7.2 → pywb-2.7.4}/update-tag.sh +0 -0
  387. {pywb-2.7.2 → pywb-2.7.4}/uwsgi.ini +0 -0
@@ -1,3 +1,19 @@
1
+ pywb 2.7.3 changelist
2
+ ~~~~~~~~~~~~~~~~~~~~~
3
+
4
+ * issue_792 catch warcio exception by @oskarhek in https://github.com/webrecorder/pywb/pull/793
5
+ * Add ui.logo_home_url as config.yaml option by @tw4l in https://github.com/webrecorder/pywb/pull/791
6
+ * [#795] Show error when adding duplicate warc file by @kuechensofa in https://github.com/webrecorder/pywb/pull/797
7
+ * Make search page more intuitive by @krakan in https://github.com/webrecorder/pywb/pull/794
8
+ * Modify search template buttons by @tw4l in https://github.com/webrecorder/pywb/pull/801
9
+ * [#804] Use default_locale when lang not set in the request by @krakan in https://github.com/webrecorder/pywb/pull/805
10
+ * feat: regex substitution on surt rules match by @mijho in https://github.com/webrecorder/pywb/pull/780
11
+ * Bump minimatch from 3.0.4 to 3.1.2 in /pywb/vueui by @dependabot in https://github.com/webrecorder/pywb/pull/777
12
+ * Bump decode-uri-component from 0.2.0 to 0.2.2 in /pywb/vueui by @dependabot in https://github.com/webrecorder/pywb/pull/786
13
+ * rules: add 'debugNoBatch' rewrite for fb and insta by @ikreymer in https://github.com/webrecorder/pywb/pull/806
14
+ * Vue main order by @tw4l in https://github.com/webrecorder/pywb/pull/809
15
+ * wombat: bump to 3.4.4 https://github.com/webrecorder/pywb/pull/808
16
+
1
17
  pywb 2.7.2 changelist
2
18
  ~~~~~~~~~~~~~~~~~~~~~
3
19
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: pywb
3
- Version: 2.7.2
3
+ Version: 2.7.4
4
4
  Summary: Pywb Webrecorder web archive replay and capture tools
5
5
  Home-page: https://github.com/webrecorder/pywb
6
6
  Author: Ilya Kreymer
@@ -3,4 +3,5 @@
3
3
  CURR_DIR=$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )
4
4
 
5
5
  cd $CURR_DIR/pywb/vueui/
6
+ yarn install
6
7
  yarn run build
@@ -6,6 +6,7 @@ debug: true
6
6
  # Uncomment to set banner colors and logo
7
7
  # ui:
8
8
  # logo: path/relative/from/static/logo.png
9
+ # logo_home_url: https://example.com
9
10
  # navbar_background_hex: 0c49b0
10
11
  # navbar_color_hex: fff
11
12
  # navbar_light_buttons: true
@@ -53,6 +53,21 @@ For example, to use the file ``./static/my-logo.png`` as the logo, set:
53
53
  logo: my-logo.png
54
54
 
55
55
 
56
+ Logo URL
57
+ ^^^^^^^^
58
+
59
+ It is possible to configure the logo to link to any URL by setting ``ui.logo_home_url`` in ``config.yml`` to the URL of your choice.
60
+
61
+ If omitted, the logo will not link to any page.
62
+
63
+ For example, to have the logo redirect to ``https://example.com/web-archive-landing-page``, set:
64
+
65
+ .. code:: yaml
66
+
67
+ ui:
68
+ logo_home_url: https://example.com/web-archive-landing-page
69
+
70
+
56
71
  Banner Colors
57
72
  ^^^^^^^^^^^^^
58
73
 
@@ -108,6 +108,7 @@ class FrontEndApp(object):
108
108
  self.templates_dir = config.get('templates_dir', 'templates')
109
109
  self.static_dir = config.get('static_dir', 'static')
110
110
  self.static_prefix = config.get('static_prefix', 'static')
111
+ self.default_locale = config.get('default_locale', '')
111
112
 
112
113
  metadata_templ = os.path.join(self.warcserver.root_dir, '{coll}', 'metadata.yaml')
113
114
  self.metadata_cache = MetadataCache(metadata_templ)
@@ -662,7 +663,7 @@ class FrontEndApp(object):
662
663
  # store original script_name (original prefix) before modifications are made
663
664
  environ['ORIG_SCRIPT_NAME'] = environ.get('SCRIPT_NAME')
664
665
 
665
- lang = args.pop('lang', '')
666
+ lang = args.pop('lang', self.default_locale)
666
667
  if lang:
667
668
  pop_path_info(environ)
668
669
  environ['pywb_lang'] = lang
@@ -248,8 +248,8 @@ class RewriterApp(object):
248
248
  range_start = start
249
249
  range_end = end
250
250
 
251
- # if start with 0, load from upstream, but add range after
252
- if start == 0:
251
+ # if start with 0 and no end, load from upstream
252
+ if start == 0 and not end:
253
253
  del inputreq.env['HTTP_RANGE']
254
254
  else:
255
255
  skip_record = True
@@ -0,0 +1 @@
1
+ git_hash = "b7ea9af8"
@@ -1,5 +1,9 @@
1
+ import logging
1
2
  import os
2
3
  import sys
4
+ import traceback
5
+
6
+ import warcio
3
7
 
4
8
  # Use ujson if available
5
9
  try:
@@ -298,8 +302,11 @@ def write_multi_cdx_index(output, inputs, **options):
298
302
  with open(fullpath, 'rb') as infile:
299
303
  entry_iter = record_iter(infile)
300
304
 
301
- for entry in entry_iter:
302
- writer.write(entry, filename)
305
+ try:
306
+ for entry in entry_iter:
307
+ writer.write(entry, filename)
308
+ except warcio.exceptions.ArchiveLoadFailed:
309
+ logging.error('Error while indexing file %s, %s',filename,traceback.format_exc())
303
310
 
304
311
  return writer
305
312
 
@@ -121,14 +121,24 @@ directory structure expected by pywb
121
121
  format(self.archive_dir))
122
122
 
123
123
  full_paths = []
124
+ duplicate_warcs = []
124
125
  for filename in warcs:
125
126
  filename = os.path.abspath(filename)
127
+
128
+ # don't overwrite existing warcs with duplicate names
129
+ if os.path.exists(os.path.join(self.archive_dir, os.path.basename(filename))):
130
+ duplicate_warcs.append(filename)
131
+ continue
132
+
126
133
  shutil.copy2(filename, self.archive_dir)
127
134
  full_paths.append(os.path.join(self.archive_dir, filename))
128
135
  logging.info('Copied ' + filename + ' to ' + self.archive_dir)
129
136
 
130
137
  self._index_merge_warcs(full_paths, self.DEF_INDEX_FILE)
131
138
 
139
+ if duplicate_warcs:
140
+ logging.warning(f'Warcs {", ".join(duplicate_warcs)} weren\'t added because of duplicate names.')
141
+
132
142
  def reindex(self):
133
143
  cdx_file = os.path.join(self.indexes_dir, self.DEF_INDEX_FILE)
134
144
  logging.info('Indexing ' + self.archive_dir + ' to ' + cdx_file)
@@ -110,7 +110,7 @@ rules:
110
110
 
111
111
  fuzzy_lookup:
112
112
  match: '("(?:cursor|cursorindex)":["\d\w]+)'
113
- find_all: true
113
+ re_type: findall
114
114
 
115
115
  - url_prefix: 'com,facebook)/ajax/pagelet/generic.php/profiletimeline'
116
116
  fuzzy_lookup: 'com,facebook\)/.*[?&](__adt=[^&]+).*[&]data=(?:.*?(?:[&]|(profile_id|pagelet_token)[^,]+))'
@@ -175,7 +175,7 @@ rules:
175
175
 
176
176
  fuzzy_lookup:
177
177
  match: '("q[\d]+":|after:\\"[^"]+)'
178
- find_all: true
178
+ re_type: findall
179
179
 
180
180
  - url_prefix: 'com,facebook)/pages_reaction_units/more'
181
181
 
@@ -196,6 +196,9 @@ rules:
196
196
  group: 1
197
197
  function: 'pywb.rewrite.rewrite_dash:rewrite_fb_dash'
198
198
 
199
+ - match: '"debugNoBatching\s?":(?:false|0)'
200
+ replace: '"debugNoBatching":true'
201
+
199
202
  parse_comments: true
200
203
 
201
204
  - url_prefix: 'com,facebook'
@@ -227,6 +230,9 @@ rules:
227
230
  - match: '"is_dash_eligible":true'
228
231
  replace: '"is_dash_eligible":false'
229
232
 
233
+ - match: '"debugNoBatching\s?":(?:false|0)'
234
+ replace: '"debugNoBatching":true'
235
+
230
236
  fuzzy_lookup: '()'
231
237
 
232
238
 
@@ -538,6 +544,12 @@ rules:
538
544
  rewrite:
539
545
  js_rewrite_location: urls
540
546
 
547
+ - url_prefix: 'com,example)/matched'
548
+ fuzzy_lookup:
549
+ re_type: sub
550
+ match: 'matched'
551
+ replace: 'replaced'
552
+
541
553
  # all domain rules -- fallback to this dataset
542
554
  #=================================================================
543
555
  # Applies to all urls -- should be last
@@ -956,11 +956,11 @@ RenderCalendar.prototype.niceDateRange = function() {
956
956
  var from = this.queryInfo.searchParams.from;
957
957
  var to = this.queryInfo.searchParams.to;
958
958
  if (from && to) {
959
- return 'From ' + from + ' to ' + to;
959
+ return [text.from, from, text.until, to].join(' ');
960
960
  } else if (from) {
961
- return 'From ' + from + ' until ' + 'present';
961
+ return [text.from, from, text.until, text.present].join(' ');
962
962
  }
963
- return 'From earliest until ' + to;
963
+ return [text.from, text.earliest, text.until, to].join(' ');
964
964
  };
965
965
 
966
966
  /**
@@ -14,17 +14,34 @@ var elemIds = {
14
14
  },
15
15
  dateTime: {
16
16
  from: 'dt-from',
17
+ fromTime: 'ts-from',
17
18
  fromBad: 'dt-from-bad',
18
19
  to: 'dt-to',
20
+ toTime: 'ts-to',
19
21
  toBad: 'dt-to-bad'
20
22
  },
21
23
  match: 'match-type-select',
22
24
  url: 'search-url',
23
25
  form: 'search-form',
24
26
  resultsNewWindow: 'open-results-new-window',
25
- advancedOptions: 'advanced-options'
27
+ advancedOptions: 'advanced-options',
28
+ resetSearchForm: 'reset-search-form',
26
29
  };
27
30
 
31
+ function resetSearchForm(event) {
32
+ for (const field of [
33
+ elemIds.url,
34
+ elemIds.match,
35
+ elemIds.dateTime.from,
36
+ elemIds.dateTime.fromTime,
37
+ elemIds.dateTime.to,
38
+ elemIds.dateTime.toTime,
39
+ ]) {
40
+ document.getElementById(field).value = '';
41
+ }
42
+ clearFilters(event);
43
+ }
44
+
28
45
  function makeCheckDateRangeChecker(dtInputId, dtBadNotice) {
29
46
  var dtInput = document.getElementById(dtInputId);
30
47
  dtInput.onblur = function() {
@@ -138,11 +155,13 @@ function performQuery(url) {
138
155
  }
139
156
  var fromT = document.getElementById(elemIds.dateTime.from).value;
140
157
  if (fromT) {
141
- query.push('from=' + fromT.trim());
158
+ fromT += document.getElementById(elemIds.dateTime.fromTime).value;
159
+ query.push('from=' + fromT.replace(/[^0-9]/g, ''));
142
160
  }
143
161
  var toT = document.getElementById(elemIds.dateTime.to).value;
144
162
  if (toT) {
145
- query.push('to=' + toT.trim());
163
+ toT += document.getElementById(elemIds.dateTime.toTime).value;
164
+ query.push('to=' + toT.replace(/[^0-9]/g, ''));
146
165
  }
147
166
  var builtQuery = query.join('&');
148
167
  if (document.getElementById(elemIds.resultsNewWindow).checked) {
@@ -188,6 +207,7 @@ $(document).ready(function() {
188
207
  elemIds.dateTime.to,
189
208
  document.getElementById(elemIds.dateTime.toBad)
190
209
  );
210
+ document.getElementById(elemIds.resetSearchForm).onclick = resetSearchForm;
191
211
  document.getElementById(elemIds.filtering.add).onclick = addFilter;
192
212
  document.getElementById(elemIds.filtering.clear).onclick = clearFilters;
193
213
  var searchURLInput = document.getElementById(elemIds.url);
@@ -195,9 +215,6 @@ $(document).ready(function() {
195
215
  form.addEventListener('submit', function(event) {
196
216
  submitForm(event, form, searchURLInput);
197
217
  });
198
- document.getElementById(elemIds.advancedOptions).onclick = function() {
199
- validateFields(form);
200
- }
201
218
  var filteringExpression = document.getElementById(elemIds.filtering.expression);
202
219
  filteringExpression.addEventListener("keypress", function(event) {
203
220
  if (event.key === "Enter") {