├── README.md ├── css ├── bootstrap.min.css └── css.css ├── favicon.ico ├── index.html └── js ├── bootstrap.min.js ├── jquery.min.js └── js.js /README.md: -------------------------------------------------------------------------------- 1 | # the sourcecaster 2 | 3 | ### what it is 4 | 5 | [the sourcecaster](https://datapraxis.github.io/sourcecaster "the sourcecaster") helps you use the command line to work through common challenges that come up when working with digital primary sources. 6 | 7 | ### how you can help / contribute 8 | 9 | if you have suggestions for commands that help you with your work, or really any thoughts that can help make the sourcecaster better, feel free to contribute to the codebase of the project, or shoot an email to [Thomas Padilla](https://thomaspadilla.org "Thomas Padilla") directly. 10 | 11 | ### dependencies 12 | 13 | in order to take advantage of all commands in the sourcecaster install the following: 14 | * [brew] (http://brew.sh/ "brew")- package manager, makes it easier to install command line tools 15 | * [port] (https://www.macports.org/ "port")- package manager, makes it easier to install command line tools 16 | * [xpdf] (http://www.foolabs.com/xpdf/download.html "xpdf")- open source PDF manipulation 17 | * [wget] (https://www.gnu.org/software/wget/ "wget")- download (get) stuff from the web in bulk (images, sound files, etc.) 18 | * [tesseract] (https://github.com/tesseract-ocr "tesseract") - perform optical character recognition, making files text searchable 19 | * [ffmpeg] (https://ffmpeg.org/ "ffmpeg") - manipulate multiple types of media (moving images, image, etc.) 20 | * [imagemagick] (http://www.imagemagick.org/script/index.php "imagemagick") - manipulate images 21 | * [pandoc] (http://pandoc.org/index.html "pandoc") - manipulate and convert wide array of documents 22 | 23 | ### attribution 24 | 25 | the sourcecaster was built by [Thomas Padilla](https://thomaspadilla.org "Thomas Padilla") and [James Baker](https://cradledincaricature.com/ "James Baker") and is adapted from [ffmprovisr](https://amiaopensource.github.io/ffmprovisr/ "ffmprovisr") and [Script Ahoy](http://dd388.github.io/crals/ "Script Ahoy"). 26 | -------------------------------------------------------------------------------- /css/css.css: -------------------------------------------------------------------------------- 1 | body { 2 | background-color: white; 3 | } 4 | .well { 5 | background-color: white; 6 | border-color: #C0C0C0; 7 | } 8 | 9 | h1,h2,h3,h4,h5,h6 { 10 | font-family: 'Helvetica', sans-serif; 11 | color: black; 12 | } 13 | 14 | dd { 15 | padding-left:24px; 16 | } 17 | 18 | dt { 19 | font-family: 'Helvetica', sans-serif; 20 | } 21 | 22 | h1 { 23 | letter-spacing:8px; 24 | font-size:46px; 25 | line-height:120px; 26 | } 27 | 28 | div { 29 | font-family: 'Helvetica', sans-serif; 30 | color: black; 31 | } 32 | 33 | .btn { 34 | margin: 8px; 35 | color: white; 36 | background-color: #0F0101; 37 | } 38 | 39 | .btn { 40 | display: inline-block; 41 | vertical-align: middle; 42 | -webkit-transform: translateZ(0); 43 | transform: translateZ(0); 44 | box-shadow: 0 0 1px rgba(0, 0, 0, 0); 45 | -webkit-backface-visibility: hidden; 46 | backface-visibility: hidden; 47 | -moz-osx-font-smoothing: grayscale; 48 | position: relative; 49 | padding-left: 2.5em; 50 | -webkit-transition-duration: 0.3s; 51 | transition-duration: 0.3s; 52 | } 53 | .btn:before { 54 | content: "⚡"; 55 | position: absolute; 56 | left: 1em; 57 | padding: 0 1px; 58 | -webkit-transform: translateZ(0); 59 | transform: translateZ(0); 60 | -webkit-transition-duration: 0.3s; 61 | transition-duration: 0.3s; 62 | -webkit-transition-property: transform; 63 | transition-property: transform; 64 | -webkit-transition-timing-function: ease-out; 65 | transition-timing-function: ease-out; 66 | } 67 | .btn:hover:before, .btn:focus:before, .btn:active:before { 68 | -webkit-transform: scale(1.3) translateZ(0); 69 | transform: scale(1.3) translateZ(0); 70 | } 71 | -------------------------------------------------------------------------------- /favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/datapraxis/sourcecaster/1c2ea92d8dfc351df07d53491806bbd07d257cda/favicon.ico -------------------------------------------------------------------------------- /index.html: -------------------------------------------------------------------------------- 1 | 2 | 5 | 6 | 7 | the sourcecaster 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 |
24 |

the sourcecaster

25 |
26 | 27 | 28 |
29 | 30 |
31 |

the sourcecaster

32 |

helps you use the command line to work through common challenges that come up when working with digital primary sources.

33 |

. . . click on a button and it will show you a basic command, broken down to show what each piece does.

34 |

. . . for more descriptive breakdowns, explore with explainshell.

35 | 36 |

. . . before executing commands, review and install dependencies.

37 |

. . . consider contributing.

38 | 39 |
40 | 41 |
42 | 43 |

casting

44 | 45 | 46 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | 91 | 92 | 93 | 94 | 95 | 118 | 119 | 120 | 121 | 122 | 140 | 141 | 142 | 143 | 144 | 165 | 166 | 167 | 168 | 169 | 192 | 193 | 194 | 195 | 196 | 213 | 214 | 215 | 216 | 217 | 236 | 237 | 238 | 239 | 240 | 260 | 261 | 262 | 263 | 264 | 283 | 284 | 285 | 286 | 287 | 306 | 307 | 308 |
309 |
310 |

wrangling

311 | 312 | 313 | 314 | 332 | 333 | 334 | 335 | 336 | 353 | 354 | 355 | 356 | 357 | 375 | 376 | 377 | 378 | 379 | 397 | 398 | 399 | 400 | 401 | 419 | 420 | 421 | 422 | 423 | 442 | 443 | 444 | 445 | 446 | 464 | 465 | 466 |
467 |
468 |

getting

469 | 470 | 471 | 472 | 491 | 492 | 493 | 494 | 495 | 515 | 516 | 517 |
518 | 519 |
520 |

managing

521 | 522 | 523 | 524 | 541 | 542 | 543 | 544 | 545 | 566 | 567 | 568 | 569 | 570 | 589 | 590 |
591 | 592 | 593 |
594 |
595 |
596 | 597 | 600 | 601 | 602 | 603 | 604 | -------------------------------------------------------------------------------- /js/bootstrap.min.js: -------------------------------------------------------------------------------- 1 | /*! 2 | * Bootstrap v3.2.0 (http://getbootstrap.com) 3 | * Copyright 2011-2014 Twitter, Inc. 4 | * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) 5 | */ 6 | if("undefined"==typeof jQuery)throw new Error("Bootstrap's JavaScript requires jQuery");+function(a){"use strict";function b(){var a=document.createElement("bootstrap"),b={WebkitTransition:"webkitTransitionEnd",MozTransition:"transitionend",OTransition:"oTransitionEnd otransitionend",transition:"transitionend"};for(var c in b)if(void 0!==a.style[c])return{end:b[c]};return!1}a.fn.emulateTransitionEnd=function(b){var c=!1,d=this;a(this).one("bsTransitionEnd",function(){c=!0});var e=function(){c||a(d).trigger(a.support.transition.end)};return setTimeout(e,b),this},a(function(){a.support.transition=b(),a.support.transition&&(a.event.special.bsTransitionEnd={bindType:a.support.transition.end,delegateType:a.support.transition.end,handle:function(b){return a(b.target).is(this)?b.handleObj.handler.apply(this,arguments):void 0}})})}(jQuery),+function(a){"use strict";function b(b){return this.each(function(){var c=a(this),e=c.data("bs.alert");e||c.data("bs.alert",e=new d(this)),"string"==typeof b&&e[b].call(c)})}var c='[data-dismiss="alert"]',d=function(b){a(b).on("click",c,this.close)};d.VERSION="3.2.0",d.prototype.close=function(b){function c(){f.detach().trigger("closed.bs.alert").remove()}var d=a(this),e=d.attr("data-target");e||(e=d.attr("href"),e=e&&e.replace(/.*(?=#[^\s]*$)/,""));var f=a(e);b&&b.preventDefault(),f.length||(f=d.hasClass("alert")?d:d.parent()),f.trigger(b=a.Event("close.bs.alert")),b.isDefaultPrevented()||(f.removeClass("in"),a.support.transition&&f.hasClass("fade")?f.one("bsTransitionEnd",c).emulateTransitionEnd(150):c())};var e=a.fn.alert;a.fn.alert=b,a.fn.alert.Constructor=d,a.fn.alert.noConflict=function(){return a.fn.alert=e,this},a(document).on("click.bs.alert.data-api",c,d.prototype.close)}(jQuery),+function(a){"use strict";function b(b){return this.each(function(){var d=a(this),e=d.data("bs.button"),f="object"==typeof b&&b;e||d.data("bs.button",e=new c(this,f)),"toggle"==b?e.toggle():b&&e.setState(b)})}var c=function(b,d){this.$element=a(b),this.options=a.extend({},c.DEFAULTS,d),this.isLoading=!1};c.VERSION="3.2.0",c.DEFAULTS={loadingText:"loading..."},c.prototype.setState=function(b){var c="disabled",d=this.$element,e=d.is("input")?"val":"html",f=d.data();b+="Text",null==f.resetText&&d.data("resetText",d[e]()),d[e](null==f[b]?this.options[b]:f[b]),setTimeout(a.proxy(function(){"loadingText"==b?(this.isLoading=!0,d.addClass(c).attr(c,c)):this.isLoading&&(this.isLoading=!1,d.removeClass(c).removeAttr(c))},this),0)},c.prototype.toggle=function(){var a=!0,b=this.$element.closest('[data-toggle="buttons"]');if(b.length){var c=this.$element.find("input");"radio"==c.prop("type")&&(c.prop("checked")&&this.$element.hasClass("active")?a=!1:b.find(".active").removeClass("active")),a&&c.prop("checked",!this.$element.hasClass("active")).trigger("change")}a&&this.$element.toggleClass("active")};var d=a.fn.button;a.fn.button=b,a.fn.button.Constructor=c,a.fn.button.noConflict=function(){return a.fn.button=d,this},a(document).on("click.bs.button.data-api",'[data-toggle^="button"]',function(c){var d=a(c.target);d.hasClass("btn")||(d=d.closest(".btn")),b.call(d,"toggle"),c.preventDefault()})}(jQuery),+function(a){"use strict";function b(b){return this.each(function(){var d=a(this),e=d.data("bs.carousel"),f=a.extend({},c.DEFAULTS,d.data(),"object"==typeof b&&b),g="string"==typeof b?b:f.slide;e||d.data("bs.carousel",e=new c(this,f)),"number"==typeof b?e.to(b):g?e[g]():f.interval&&e.pause().cycle()})}var c=function(b,c){this.$element=a(b).on("keydown.bs.carousel",a.proxy(this.keydown,this)),this.$indicators=this.$element.find(".carousel-indicators"),this.options=c,this.paused=this.sliding=this.interval=this.$active=this.$items=null,"hover"==this.options.pause&&this.$element.on("mouseenter.bs.carousel",a.proxy(this.pause,this)).on("mouseleave.bs.carousel",a.proxy(this.cycle,this))};c.VERSION="3.2.0",c.DEFAULTS={interval:5e3,pause:"hover",wrap:!0},c.prototype.keydown=function(a){switch(a.which){case 37:this.prev();break;case 39:this.next();break;default:return}a.preventDefault()},c.prototype.cycle=function(b){return b||(this.paused=!1),this.interval&&clearInterval(this.interval),this.options.interval&&!this.paused&&(this.interval=setInterval(a.proxy(this.next,this),this.options.interval)),this},c.prototype.getItemIndex=function(a){return this.$items=a.parent().children(".item"),this.$items.index(a||this.$active)},c.prototype.to=function(b){var c=this,d=this.getItemIndex(this.$active=this.$element.find(".item.active"));return b>this.$items.length-1||0>b?void 0:this.sliding?this.$element.one("slid.bs.carousel",function(){c.to(b)}):d==b?this.pause().cycle():this.slide(b>d?"next":"prev",a(this.$items[b]))},c.prototype.pause=function(b){return b||(this.paused=!0),this.$element.find(".next, .prev").length&&a.support.transition&&(this.$element.trigger(a.support.transition.end),this.cycle(!0)),this.interval=clearInterval(this.interval),this},c.prototype.next=function(){return this.sliding?void 0:this.slide("next")},c.prototype.prev=function(){return this.sliding?void 0:this.slide("prev")},c.prototype.slide=function(b,c){var d=this.$element.find(".item.active"),e=c||d[b](),f=this.interval,g="next"==b?"left":"right",h="next"==b?"first":"last",i=this;if(!e.length){if(!this.options.wrap)return;e=this.$element.find(".item")[h]()}if(e.hasClass("active"))return this.sliding=!1;var j=e[0],k=a.Event("slide.bs.carousel",{relatedTarget:j,direction:g});if(this.$element.trigger(k),!k.isDefaultPrevented()){if(this.sliding=!0,f&&this.pause(),this.$indicators.length){this.$indicators.find(".active").removeClass("active");var l=a(this.$indicators.children()[this.getItemIndex(e)]);l&&l.addClass("active")}var m=a.Event("slid.bs.carousel",{relatedTarget:j,direction:g});return a.support.transition&&this.$element.hasClass("slide")?(e.addClass(b),e[0].offsetWidth,d.addClass(g),e.addClass(g),d.one("bsTransitionEnd",function(){e.removeClass([b,g].join(" ")).addClass("active"),d.removeClass(["active",g].join(" ")),i.sliding=!1,setTimeout(function(){i.$element.trigger(m)},0)}).emulateTransitionEnd(1e3*d.css("transition-duration").slice(0,-1))):(d.removeClass("active"),e.addClass("active"),this.sliding=!1,this.$element.trigger(m)),f&&this.cycle(),this}};var d=a.fn.carousel;a.fn.carousel=b,a.fn.carousel.Constructor=c,a.fn.carousel.noConflict=function(){return a.fn.carousel=d,this},a(document).on("click.bs.carousel.data-api","[data-slide], [data-slide-to]",function(c){var d,e=a(this),f=a(e.attr("data-target")||(d=e.attr("href"))&&d.replace(/.*(?=#[^\s]+$)/,""));if(f.hasClass("carousel")){var g=a.extend({},f.data(),e.data()),h=e.attr("data-slide-to");h&&(g.interval=!1),b.call(f,g),h&&f.data("bs.carousel").to(h),c.preventDefault()}}),a(window).on("load",function(){a('[data-ride="carousel"]').each(function(){var c=a(this);b.call(c,c.data())})})}(jQuery),+function(a){"use strict";function b(b){return this.each(function(){var d=a(this),e=d.data("bs.collapse"),f=a.extend({},c.DEFAULTS,d.data(),"object"==typeof b&&b);!e&&f.toggle&&"show"==b&&(b=!b),e||d.data("bs.collapse",e=new c(this,f)),"string"==typeof b&&e[b]()})}var c=function(b,d){this.$element=a(b),this.options=a.extend({},c.DEFAULTS,d),this.transitioning=null,this.options.parent&&(this.$parent=a(this.options.parent)),this.options.toggle&&this.toggle()};c.VERSION="3.2.0",c.DEFAULTS={toggle:!0},c.prototype.dimension=function(){var a=this.$element.hasClass("width");return a?"width":"height"},c.prototype.show=function(){if(!this.transitioning&&!this.$element.hasClass("in")){var c=a.Event("show.bs.collapse");if(this.$element.trigger(c),!c.isDefaultPrevented()){var d=this.$parent&&this.$parent.find("> .panel > .in");if(d&&d.length){var e=d.data("bs.collapse");if(e&&e.transitioning)return;b.call(d,"hide"),e||d.data("bs.collapse",null)}var f=this.dimension();this.$element.removeClass("collapse").addClass("collapsing")[f](0),this.transitioning=1;var g=function(){this.$element.removeClass("collapsing").addClass("collapse in")[f](""),this.transitioning=0,this.$element.trigger("shown.bs.collapse")};if(!a.support.transition)return g.call(this);var h=a.camelCase(["scroll",f].join("-"));this.$element.one("bsTransitionEnd",a.proxy(g,this)).emulateTransitionEnd(350)[f](this.$element[0][h])}}},c.prototype.hide=function(){if(!this.transitioning&&this.$element.hasClass("in")){var b=a.Event("hide.bs.collapse");if(this.$element.trigger(b),!b.isDefaultPrevented()){var c=this.dimension();this.$element[c](this.$element[c]())[0].offsetHeight,this.$element.addClass("collapsing").removeClass("collapse").removeClass("in"),this.transitioning=1;var d=function(){this.transitioning=0,this.$element.trigger("hidden.bs.collapse").removeClass("collapsing").addClass("collapse")};return a.support.transition?void this.$element[c](0).one("bsTransitionEnd",a.proxy(d,this)).emulateTransitionEnd(350):d.call(this)}}},c.prototype.toggle=function(){this[this.$element.hasClass("in")?"hide":"show"]()};var d=a.fn.collapse;a.fn.collapse=b,a.fn.collapse.Constructor=c,a.fn.collapse.noConflict=function(){return a.fn.collapse=d,this},a(document).on("click.bs.collapse.data-api",'[data-toggle="collapse"]',function(c){var d,e=a(this),f=e.attr("data-target")||c.preventDefault()||(d=e.attr("href"))&&d.replace(/.*(?=#[^\s]+$)/,""),g=a(f),h=g.data("bs.collapse"),i=h?"toggle":e.data(),j=e.attr("data-parent"),k=j&&a(j);h&&h.transitioning||(k&&k.find('[data-toggle="collapse"][data-parent="'+j+'"]').not(e).addClass("collapsed"),e[g.hasClass("in")?"addClass":"removeClass"]("collapsed")),b.call(g,i)})}(jQuery),+function(a){"use strict";function b(b){b&&3===b.which||(a(e).remove(),a(f).each(function(){var d=c(a(this)),e={relatedTarget:this};d.hasClass("open")&&(d.trigger(b=a.Event("hide.bs.dropdown",e)),b.isDefaultPrevented()||d.removeClass("open").trigger("hidden.bs.dropdown",e))}))}function c(b){var c=b.attr("data-target");c||(c=b.attr("href"),c=c&&/#[A-Za-z]/.test(c)&&c.replace(/.*(?=#[^\s]*$)/,""));var d=c&&a(c);return d&&d.length?d:b.parent()}function d(b){return this.each(function(){var c=a(this),d=c.data("bs.dropdown");d||c.data("bs.dropdown",d=new g(this)),"string"==typeof b&&d[b].call(c)})}var e=".dropdown-backdrop",f='[data-toggle="dropdown"]',g=function(b){a(b).on("click.bs.dropdown",this.toggle)};g.VERSION="3.2.0",g.prototype.toggle=function(d){var e=a(this);if(!e.is(".disabled, :disabled")){var f=c(e),g=f.hasClass("open");if(b(),!g){"ontouchstart"in document.documentElement&&!f.closest(".navbar-nav").length&&a('