/** elasticlunr - http://weixsong.github.io * Copyright (C) 2017 Oliver Nightingale * Copyright (C) 2017 Wei Song * MIT Licensed */!function(){functione(e){if(null===e||"object"!=typeofe)returne;vart=e.constructor();for(varnine)e.hasOwnProperty(n)&&(t[n]=e[n]);returnt}vart=function(e){varn=newt.Index;returnn.pipeline.add(t.trimmer,t.stopWordFilter,t.stemmer),e&&e.call(n,n),n};t.version="0.9.5",lunr=t,t.utils={},t.utils.warn=function(e){returnfunction(t){e.console&&console.warn&&console.warn(t)}}(this),t.utils.toString=function(e){returnvoid0===e||null===e?"":e.toString()},t.EventEmitter=function(){this.events={}},t.EventEmitter.prototype.addListener=function(){vare=Array.prototype.slice.call(arguments),t=e.pop(),n=e;if("function"!=typeoft)thrownewTypeError("last argument must be a function");n.forEach(function(e){this.hasHandler(e)||(this.events[e]=[]),this.events[e].push(t)},this)},t.EventEmitter.prototype.removeListener=function(e,t){if(this.hasHandler(e)){varn=this.events[e].indexOf(t);-1!==n&&(this.events[e].splice(n,1),0==this.events[e].length&&deletethis.events[e])}},t.EventEmitter.prototype.emit=function(e){if(this.hasHandler(e)){vart=Array.prototype.slice.call(arguments,1);this.events[e].forEach(function(e){e.apply(void0,t)},this)}},t.EventEmitter.prototype.hasHandler=function(e){returneinthis.events},t.tokenizer=function(e){if(!arguments.length||null===e||void0===e)return[];if(Array.isArray(e)){varn=e.filter(function(e){returnnull===e||void0===e?!1:!0});n=n.map(function(e){returnt.utils.toString(e).toLowerCase()});vari=[];returnn.forEach(function(e){varn=e.split(t.tokenizer.seperator);i=i.concat(n)},this),i}returne.toString().trim().toLowerCase().split(t.tokenizer.seperator)},t.tokenizer.defaultSeperator=/[\s\-]+/,t.tokenizer.seperator=t.tokenizer.defaultSeperator,t.tokenizer.setSeperator=function(e){null!==e&&void0!==e&&"object"==typeofe&&(t.tokenizer.seperator=e)},t.tokenizer.resetSeperator=function(){t.tokenizer.seperator=t.tokenizer.defaultSeperator},t.tokenizer.getSeperator=function(){returnt.tokenizer.seperator},t.Pipeline=function(){this._queue=[]},t.Pipeline.registeredFunctions={},t.Pipeline.registerFunction=function(e,n){nint.Pipeline.registeredFunctions&&t.utils.warn("Overwriting existing registered function: "+n),e.label=n,t.Pipeline.registeredFunctions[n]=e},t.Pipeline.getRegisteredFunction=function(e){returneint.Pipeline.registeredFunctions!=!0?null:t.Pipeline.registeredFunctions[e]},t.Pipeline.warnIfFunctionNotRegistered=function(e){varn=e.label&&e.labelinthis.registeredFunctions;n||t.utils.warn("Function is not registered with pipeline. This may cause problems when serialising the index.\n",e)},t.Pipeline.load=function(e){varn=newt.Pipeline;returne.forEach(function(e){vari=t.Pipeline.getRegisteredFunction(e);if(!i)thrownewError("Cannot load un-registered function: "+e);n.add(i)}),n},t.Pipeline.prototype.add=function(){vare=Array.prototype.slice.call(arguments);e.forEach(function(e){t.Pipeline.warnIfFunctionNotRegistered(e),this._queue.push(e)},this)},t.Pipeline.prototype.after=function(e,n){t.Pipeline.warnIfFunctionNotRegistered(n);vari=this._queue.indexOf(e);if(-1===i)thrownewError("Cannot find existingFn");this._queue.splice(i+1,0,n)},t.Pipeline.prototype.before=function(e,n){t.Pipeline.warnIfFunctionNotRegistered(n);vari=this._queue.indexOf(e);if(-1===i)thrownewError("Cannot find existingFn");this._queue.splice(i,0,n)},t.Pipeline.prototype.remove=function(e){vart=this._queue.indexOf(e);-1!==t&&this._queue.splice(t,1)},t.Pipeline.prototype.run=function(e){for(vart=[],n=e.length,i=this._queue.length,o=0;n>o;o++){for(varr=e[o],s=0;i>s&&(r=this._queue[s](r,o,e),void0!==r&&null!==r);s++);void0!==r&&null!==r&&t.push(r)}returnt},t.Pipeline.prototype.reset=function(){this._queue=[]},t.Pipeline.prototype.get=function(){returnthis._queue},t.Pipeline.prototype.toJSON=function(){returnthis._queue.map(function(e){returnt.Pipeline.warnIfFunctionNotRegistered(e),e.label})},t.Index=function(){this._fields=[],this._ref="id",this.pipeline=newt
/** pdoc search index */constdocs={"version":"0.9.5","fields":["qualname","fullname","annotation","default_value","signature","bases","doc"],"ref":"fullname","documentStore":{"docs":{"piped_api":{"fullname":"piped_api","modulename":"piped_api","type":"module","doc":"<h1 id=\"piped-api-client-python\">Piped API client (Python)</h1>\n\n<p><a href=\"https://github.com/CWKevo/python-piped-api-client/actions/workflows/pytest.yml\"><img src=\"https://github.com/CWKevo/python-piped-api-client/actions/workflows/pytest.yml/badge.svg?branch=master\" alt=\"Test with pyTest\" /></a></p>\n\n<p>A Python API wrapper for <a href=\"https://piped-docs.kavin.rocks/\">Piped</a>. This can essentially be used as an alternative way to access YouTube's API, without needing to use an API key.</p>\n\n<h2 id=\"installation\">Installation</h2>\n\n<div class=\"pdoc-code codehilite\"><pre><span></span><code>pip install piped-api\n</code></pre></div>\n\n<h2 id=\"quickstart\">Quickstart</h2>\n\n<p>Getting started is very easy:</p>\n\n<div class=\"pdoc-code codehilite\"><pre><span></span><code><span class=\"kn\">from</span> <span class=\"nn\">piped_api</span> <span class=\"kn\">import</span> <span class=\"n\">PipedClient</span>\n\n<span class=\"n\">CLIENT</span> <span class=\"o\">=</span> <span class=\"n\">PipedClient</span><span class=\"p\">()</span>\n\n\n<span class=\"c1\"># Print out the first audio stream URL for a video:</span>\n<span class=\"n\">video</span> <span class=\"o\">=</span> <span class=\"n\">CLIENT</span><span class=\"o\">.</span><span class=\"n\">get_video</span><span class=\"p\">(</span><span class=\"n\">video_id</span><span class=\"p\">)</span>\n<span class=\"n\">audio_stream</span> <span class=\"o\">=</span> <span class=\"n\">video</span><span class=\"o\">.</span><span class=\"n\">get_streams</span><span class=\"p\">(</span><span class=\"s1\">'audio'</span><span class=\"p\">)[</span><span class=\"mi\">0</span><span class=\"p\">]</span>\n\n<span class=\"nb\">print</span><span class=\"p\">(</span><span class=\"sa\">f</span><span class=\"s2\">"Audio stream URL: </span><span class=\"si\">{</span><span class=\"n\">audio_stream</span><span class=\"o\">.</span><span class=\"n\">url</span><span class=\"si\">}</span><span class=\"s2\"> (</span><span class=\"si\">{</span><span class=\"n\">audio_stream</span><span class=\"o\">.</span><span class=\"n\">mime_type</span><span class=\"si\">}</span><span class=\"s2\">)"</span><span class=\"p\">)</span>\n</code></pre></div>\n\n<h2 id=\"why\">Why?</h2>\n\n<p>This package has allowed me to start creating my open-source project, <a href=\"https://github.com/CWKevo/ArchiveTube\">ArchiveTube</a> - a scrapper and archive for YouTube content (videos and comments) - to preserve them and make them available to anyone, with ability to search for comments and videos. View hall of fame (most liked comments and videos), bring back dislikes via <a href=\"https://returnyoutubedislike.com\">ReturnYouTubeDislike.com</a>, view deleted content and much more!\nGoogle has showed us that they make YouTube own us by harvesting our data. This is also followed by non-throught out decisions, which their users aren't happy with. Let's do it the other way around this time by reclaiming our content and entertainment back & make YouTube great again!</p>\n\n<p>The creation of this package was also primarily fueled by the same type of motivation <a href=\"https://piped-docs.kavin.rocks/docs/why/\">Piped has</a>.</p>\n\n<p>Google's API is not very easy-to-use - you must obtain some JSON thingy to use it, and it is very low-level and not very user-friendly.\nOn the other hand, this package accessed the <a href=\"https://piped.kavin.rocks/\">Piped API</a>, which has a much more high-level API and doesn't need an account or API keys.</p>\n\n<p>It is not meant to be a replacement for the official YouTube API, but it can help you to cut the strings that Google attaches to you when using their API.</p>\n\n<h2 id=\"useful-links\">Useful links</h2>\n\n<ul>\n<li><a href=\"https://piped-doc