build site for extractor/collector pattern

This commit is contained in:
Christian Schabesberger 2018-02-22 19:22:39 +01:00
parent b3d1bbc44d
commit 050e71ddd1
23 changed files with 1049 additions and 835 deletions

View File

@ -3,31 +3,28 @@
<!--[if gt IE 8]><!--> <html class="no-js" lang="en" > <!--<![endif]--> <!--[if gt IE 8]><!--> <html class="no-js" lang="en" > <!--<![endif]-->
<head> <head>
<meta charset="utf-8"> <meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>00 PrepareEverything - NewPipe Tutorial</title>
<link rel="shortcut icon" href="../img/favicon.ico"> <link rel="shortcut icon" href="../img/favicon.ico">
<title>Prepare everything - NewPipe Tutorial</title>
<link href='https://fonts.googleapis.com/css?family=Lato:400,700|Roboto+Slab:400,700|Inconsolata:400,700' rel='stylesheet' type='text/css'> <link href='https://fonts.googleapis.com/css?family=Lato:400,700|Roboto+Slab:400,700|Inconsolata:400,700' rel='stylesheet' type='text/css'>
<link rel="stylesheet" href="../css/theme.css" type="text/css" /> <link rel="stylesheet" href="../css/theme.css" type="text/css" />
<link rel="stylesheet" href="../css/theme_extra.css" type="text/css" /> <link rel="stylesheet" href="../css/theme_extra.css" type="text/css" />
<link rel="stylesheet" href="../css/highlight.css"> <link rel="stylesheet" href="../css/highlight.css">
<script> <script>
// Current page data // Current page data
var mkdocs_page_name = "00 PrepareEverything"; var mkdocs_page_name = "Prepare everything";
var mkdocs_page_input_path = "00_Prepare_everything.md";
var mkdocs_page_url = "/00_Prepare_everything/";
</script> </script>
<script src="../js/jquery-2.1.1.min.js"></script> <script src="../js/jquery-2.1.1.min.js"></script>
<script src="../js/modernizr-2.8.3.min.js"></script> <script src="../js/modernizr-2.8.3.min.js"></script>
<script type="text/javascript" src="../js/highlight.pack.js"></script> <script type="text/javascript" src="../js/highlight.pack.js"></script>
<script src="../js/theme.js"></script>
</head> </head>
@ -47,30 +44,35 @@
</div> </div>
<div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="main navigation"> <div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="main navigation">
<ul class="current"> <ul class="current">
<li>
<li class="toctree-l1 ">
<a class="" href="..">Home</a>
</li>
<li>
<li>
<li class="toctree-l1 current">
<a class="current" href="./">00 PrepareEverything</a>
<ul>
<li class="toctree-l3"><a href="#prepare-everything">Prepare everything</a></li>
<li><a class="toctree-l4" href="#setup-your-dev-environment">Setup your dev environment</a></li>
</ul> <li class="toctree-l1">
</li> <a class="" href="..">Welcome to NewPipe Tutorial</a>
<li> </li>
<li class="toctree-l1 current">
<a class="current" href="./">Prepare everything</a>
<ul class="subnav">
<li class="toctree-l2"><a href="#prepare-everything">Prepare everything</a></li>
<ul>
<li><a class="toctree-l3" href="#setup-your-dev-environment">Setup your dev environment</a></li>
</ul>
</ul>
</li>
<li class="toctree-l1">
<a class="" href="../01_Basic_concept_of_the_extractor/">01 Basic concept of the extractor</a>
</li>
</ul> </ul>
</div> </div>
@ -94,7 +96,7 @@
<li>00 PrepareEverything</li> <li>Prepare everything</li>
<li class="wy-breadcrumbs-aside"> <li class="wy-breadcrumbs-aside">
</li> </li>
@ -105,9 +107,9 @@
<div class="section"> <div class="section">
<h1 id="prepare-everything">Prepare everything</h1> <h1 id="prepare-everything">Prepare everything</h1>
<p>Welcome to the NewPipe tutorial. This tutorial will guide you through the process of creating your own NewPipeExtractor service <p>Welcome to the NewPipe tutorial. This tutorial will guide you through the process of creating your own NewPipeExtractor
with which NewPipe will gain support for a dedicated streaming service like YouTube, Vimeo or SournCloud. service with which NewPipe will gain support for a dedicated streaming service like YouTube, Vimeo or SournCloud. Let's
Let's dive right. ;D</p> dive right. ;D</p>
<h2 id="setup-your-dev-environment">Setup your dev environment</h2> <h2 id="setup-your-dev-environment">Setup your dev environment</h2>
<p>First and foremost you need to meet certain conditions in order to write your own service.</p> <p>First and foremost you need to meet certain conditions in order to write your own service.</p>
<h3 id="what-you-need-to-know">What you need to know</h3> <h3 id="what-you-need-to-know">What you need to know</h3>
@ -144,8 +146,10 @@ If all the checks are green you did everything right, and you are good to go to
<div class="rst-footer-buttons" role="navigation" aria-label="footer navigation"> <div class="rst-footer-buttons" role="navigation" aria-label="footer navigation">
<a href="../01_Basic_concept_of_the_extractor/" class="btn btn-neutral float-right" title="01 Basic concept of the extractor">Next <span class="icon icon-circle-arrow-right"></span></a>
<a href=".." class="btn btn-neutral" title="Home"><span class="icon icon-circle-arrow-left"></span> Previous</a>
<a href=".." class="btn btn-neutral" title="Welcome to NewPipe Tutorial"><span class="icon icon-circle-arrow-left"></span> Previous</a>
</div> </div>
@ -167,15 +171,21 @@ If all the checks are green you did everything right, and you are good to go to
</div> </div>
<div class="rst-versions" role="note" style="cursor: pointer"> <div class="rst-versions" role="note" style="cursor: pointer">
<span class="rst-current-version" data-toggle="rst-current-version"> <span class="rst-current-version" data-toggle="rst-current-version">
<span><a href=".." style="color: #fcfcfc;">&laquo; Previous</a></span> <span><a href=".." style="color: #fcfcfc;">&laquo; Previous</a></span>
<span style="margin-left: 15px"><a href="../01_Basic_concept_of_the_extractor/" style="color: #fcfcfc">Next &raquo;</a></span>
</span> </span>
</div> </div>
<script>var base_url = '..';</script>
<script src="../js/theme.js"></script>
<script src="../search/require.js"></script>
<script src="../search/search.js"></script>
</body> </body>
</html> </html>

View File

@ -0,0 +1,174 @@
<!DOCTYPE html>
<!--[if IE 8]><html class="no-js lt-ie9" lang="en" > <![endif]-->
<!--[if gt IE 8]><!--> <html class="no-js" lang="en" > <!--<![endif]-->
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link rel="shortcut icon" href="../img/favicon.ico">
<title>Basic Concept of the Extractor - NewPipe Tutorial</title>
<link href='https://fonts.googleapis.com/css?family=Lato:400,700|Roboto+Slab:400,700|Inconsolata:400,700' rel='stylesheet' type='text/css'>
<link rel="stylesheet" href="../css/theme.css" type="text/css" />
<link rel="stylesheet" href="../css/theme_extra.css" type="text/css" />
<link rel="stylesheet" href="../css/highlight.css">
<script>
// Current page data
var mkdocs_page_name = "Basic Concept of the Extractor";
var mkdocs_page_input_path = "01_Basic_concept_of_the_extractor.md";
var mkdocs_page_url = "/01_Basic_concept_of_the_extractor/";
</script>
<script src="../js/jquery-2.1.1.min.js"></script>
<script src="../js/modernizr-2.8.3.min.js"></script>
<script type="text/javascript" src="../js/highlight.pack.js"></script>
</head>
<body class="wy-body-for-nav" role="document">
<div class="wy-grid-for-nav">
<nav data-toggle="wy-nav-shift" class="wy-nav-side stickynav">
<div class="wy-side-nav-search">
<a href=".." class="icon icon-home"> NewPipe Tutorial</a>
<div role="search">
<form id ="rtd-search-form" class="wy-form" action="../search.html" method="get">
<input type="text" name="q" placeholder="Search docs" />
</form>
</div>
</div>
<div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="main navigation">
<ul class="current">
<li class="toctree-l1">
<a class="" href="..">Welcome to NewPipe Tutorial</a>
</li>
<li class="toctree-l1">
<a class="" href="../00_Prepare_everything/">Prepare everything</a>
</li>
<li class="toctree-l1 current">
<a class="current" href="./">Basic Concept of the Extractor</a>
<ul class="subnav">
<li class="toctree-l2"><a href="#basic-concept-of-the-extractor">Basic Concept of the Extractor</a></li>
<ul>
<li><a class="toctree-l3" href="#collectorextractor-pattern">Collector/Extractor pattern</a></li>
</ul>
</ul>
</li>
</ul>
</div>
&nbsp;
</nav>
<section data-toggle="wy-nav-shift" class="wy-nav-content-wrap">
<nav class="wy-nav-top" role="navigation" aria-label="top navigation">
<i data-toggle="wy-nav-top" class="fa fa-bars"></i>
<a href="..">NewPipe Tutorial</a>
</nav>
<div class="wy-nav-content">
<div class="rst-content">
<div role="navigation" aria-label="breadcrumbs navigation">
<ul class="wy-breadcrumbs">
<li><a href="..">Docs</a> &raquo;</li>
<li>Basic Concept of the Extractor</li>
<li class="wy-breadcrumbs-aside">
</li>
</ul>
<hr/>
</div>
<div role="main">
<div class="section">
<h1 id="basic-concept-of-the-extractor">Basic Concept of the Extractor</h1>
<h2 id="collectorextractor-pattern">Collector/Extractor pattern</h2>
<p>Before we can start coding our own service we need to understand the basic concept of the extractor. There is a pattern
you will find all over the code. It is called to <strong>extractor/collector</strong> pattern. The idea behind this pattern is that
the <a href="https://teamnewpipe.github.io/NewPipeExtractor/javadoc/org/schabi/newpipe/extractor/Extractor.html">extractor</a>
would produce single peaces of data, and the collector would take it and form usable data for the front end out of it.
The collector also controls the parsing process, and takes care about error handling. So if the extractor fails at any
point the collector will decide weather it should continue parsing or not. This requires the extractor to be made out of
many small methods. One method for every data field the collector wants to have. The collectors are provided by NewPipe.
You need to take care of the extractors.</p>
<h3 id="usage-in-the-front-end">Usage in the front end</h3>
<p>So typical call for retrieving data from a website would look like this:</p>
<pre><code class="java">Info info;
try {
Extractor extractor = new Extractor(ome_meta_info); // Create a new Extractor with a given context provided as parameter.
info = Info.getInfo(extractor); // Retrieves the data form extractor and builds info package.
} catch(Exception e) {
// handler errors when collector decided to break up extraction
}
</code></pre>
</div>
</div>
<footer>
<div class="rst-footer-buttons" role="navigation" aria-label="footer navigation">
<a href="../00_Prepare_everything/" class="btn btn-neutral" title="Prepare everything"><span class="icon icon-circle-arrow-left"></span> Previous</a>
</div>
<hr/>
<div role="contentinfo">
<!-- Copyright etc -->
</div>
Built with <a href="http://www.mkdocs.org">MkDocs</a> using a <a href="https://github.com/snide/sphinx_rtd_theme">theme</a> provided by <a href="https://readthedocs.org">Read the Docs</a>.
</footer>
</div>
</div>
</section>
</div>
<div class="rst-versions" role="note" style="cursor: pointer">
<span class="rst-current-version" data-toggle="rst-current-version">
<span><a href="../00_Prepare_everything/" style="color: #fcfcfc;">&laquo; Previous</a></span>
</span>
</div>
<script>var base_url = '..';</script>
<script src="../js/theme.js"></script>
<script src="../search/require.js"></script>
<script src="../search/search.js"></script>
</body>
</html>

129
site/404.html Normal file
View File

@ -0,0 +1,129 @@
<!DOCTYPE html>
<!--[if IE 8]><html class="no-js lt-ie9" lang="en" > <![endif]-->
<!--[if gt IE 8]><!--> <html class="no-js" lang="en" > <!--<![endif]-->
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link rel="shortcut icon" href="/img/favicon.ico">
<title>NewPipe Tutorial</title>
<link href='https://fonts.googleapis.com/css?family=Lato:400,700|Roboto+Slab:400,700|Inconsolata:400,700' rel='stylesheet' type='text/css'>
<link rel="stylesheet" href="/css/theme.css" type="text/css" />
<link rel="stylesheet" href="/css/theme_extra.css" type="text/css" />
<link rel="stylesheet" href="/css/highlight.css">
<script src="/js/jquery-2.1.1.min.js"></script>
<script src="/js/modernizr-2.8.3.min.js"></script>
<script type="text/javascript" src="/js/highlight.pack.js"></script>
</head>
<body class="wy-body-for-nav" role="document">
<div class="wy-grid-for-nav">
<nav data-toggle="wy-nav-shift" class="wy-nav-side stickynav">
<div class="wy-side-nav-search">
<a href="/" class="icon icon-home"> NewPipe Tutorial</a>
<div role="search">
<form id ="rtd-search-form" class="wy-form" action="/search.html" method="get">
<input type="text" name="q" placeholder="Search docs" />
</form>
</div>
</div>
<div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="main navigation">
<ul class="current">
<li class="toctree-l1">
<a class="" href="/">Home</a>
</li>
<li class="toctree-l1">
<a class="" href="/00_Prepare_everything/">00 Prepare everything</a>
</li>
<li class="toctree-l1">
<a class="" href="/01_Basic_concept_of_the_extractor/">01 Basic concept of the extractor</a>
</li>
</ul>
</div>
&nbsp;
</nav>
<section data-toggle="wy-nav-shift" class="wy-nav-content-wrap">
<nav class="wy-nav-top" role="navigation" aria-label="top navigation">
<i data-toggle="wy-nav-top" class="fa fa-bars"></i>
<a href="/">NewPipe Tutorial</a>
</nav>
<div class="wy-nav-content">
<div class="rst-content">
<div role="navigation" aria-label="breadcrumbs navigation">
<ul class="wy-breadcrumbs">
<li><a href="/">Docs</a> &raquo;</li>
<li class="wy-breadcrumbs-aside">
</li>
</ul>
<hr/>
</div>
<div role="main">
<div class="section">
<h1 id="404-page-not-found">404</h1>
<p><strong>Page not found</strong></p>
</div>
</div>
<footer>
<hr/>
<div role="contentinfo">
<!-- Copyright etc -->
</div>
Built with <a href="http://www.mkdocs.org">MkDocs</a> using a <a href="https://github.com/snide/sphinx_rtd_theme">theme</a> provided by <a href="https://readthedocs.org">Read the Docs</a>.
</footer>
</div>
</div>
</section>
</div>
<div class="rst-versions" role="note" style="cursor: pointer">
<span class="rst-current-version" data-toggle="rst-current-version">
</span>
</div>
<script>var base_url = '';</script>
<script src="/js/theme.js"></script>
<script src="/search/require.js"></script>
<script src="/search/search.js"></script>
</body>
</html>

View File

@ -8,7 +8,6 @@ github.com style (c) Vasily Polovnyov <vast@whiteants.net>
.hljs { .hljs {
display: block; display: block;
overflow-x: auto; overflow-x: auto;
padding: 0.5em;
color: #333; color: #333;
-webkit-text-size-adjust: none; -webkit-text-size-adjust: none;
} }

View File

@ -3,7 +3,7 @@
* theme. To aid upgradability this file should *not* be edited. * theme. To aid upgradability this file should *not* be edited.
* modifications we need should be included in theme_extra.css. * modifications we need should be included in theme_extra.css.
* *
* https://github.com/rtfd/readthedocs.org/blob/master/media/css/sphinx_rtd_theme.css * https://github.com/rtfd/readthedocs.org/blob/master/readthedocs/core/static/core/css/theme.css
*/ */
*{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}article,aside,details,figcaption,figure,footer,header,hgroup,nav,section{display:block}audio,canvas,video{display:inline-block;*display:inline;*zoom:1}audio:not([controls]){display:none}[hidden]{display:none}*{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}html{font-size:100%;-webkit-text-size-adjust:100%;-ms-text-size-adjust:100%}body{margin:0}a:hover,a:active{outline:0}abbr[title]{border-bottom:1px dotted}b,strong{font-weight:bold}blockquote{margin:0}dfn{font-style:italic}ins{background:#ff9;color:#000;text-decoration:none}mark{background:#ff0;color:#000;font-style:italic;font-weight:bold}pre,code,.rst-content tt,kbd,samp{font-family:monospace,serif;_font-family:"courier new",monospace;font-size:1em}pre{white-space:pre}q{quotes:none}q:before,q:after{content:"";content:none}small{font-size:85%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sup{top:-0.5em}sub{bottom:-0.25em}ul,ol,dl{margin:0;padding:0;list-style:none;list-style-image:none}li{list-style:none}dd{margin:0}img{border:0;-ms-interpolation-mode:bicubic;vertical-align:middle;max-width:100%}svg:not(:root){overflow:hidden}figure{margin:0}form{margin:0}fieldset{border:0;margin:0;padding:0}label{cursor:pointer}legend{border:0;*margin-left:-7px;padding:0;white-space:normal}button,input,select,textarea{font-size:100%;margin:0;vertical-align:baseline;*vertical-align:middle}button,input{line-height:normal}button,input[type="button"],input[type="reset"],input[type="submit"]{cursor:pointer;-webkit-appearance:button;*overflow:visible}button[disabled],input[disabled]{cursor:default}input[type="checkbox"],input[type="radio"]{box-sizing:border-box;padding:0;*width:13px;*height:13px}input[type="search"]{-webkit-appearance:textfield;-moz-box-sizing:content-box;-webkit-box-sizing:content-box;box-sizing:content-box}input[type="search"]::-webkit-search-decoration,input[type="search"]::-webkit-search-cancel-button{-webkit-appearance:none}button::-moz-focus-inner,input::-moz-focus-inner{border:0;padding:0}textarea{overflow:auto;vertical-align:top;resize:vertical}table{border-collapse:collapse;border-spacing:0}td{vertical-align:top}.chromeframe{margin:0.2em 0;background:#ccc;color:#000;padding:0.2em 0}.ir{display:block;border:0;text-indent:-999em;overflow:hidden;background-color:transparent;background-repeat:no-repeat;text-align:left;direction:ltr;*line-height:0}.ir br{display:none}.hidden{display:none !important;visibility:hidden}.visuallyhidden{border:0;clip:rect(0 0 0 0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.visuallyhidden.focusable:active,.visuallyhidden.focusable:focus{clip:auto;height:auto;margin:0;overflow:visible;position:static;width:auto}.invisible{visibility:hidden}.relative{position:relative}big,small{font-size:100%}@media print{html,body,section{background:none !important}*{box-shadow:none !important;text-shadow:none !important;filter:none !important;-ms-filter:none !important}a,a:visited{text-decoration:underline}.ir a:after,a[href^="javascript:"]:after,a[href^="#"]:after{content:""}pre,blockquote{page-break-inside:avoid}thead{display:table-header-group}tr,img{page-break-inside:avoid}img{max-width:100% !important}@page{margin:0.5cm}p,h2,h3{orphans:3;widows:3}h2,h3{page-break-after:avoid}}.fa:before,.rst-content .admonition-title:before,.rst-content h1 .headerlink:before,.rst-content h2 .headerlink:before,.rst-content h3 .headerlink:before,.rst-content h4 .headerlink:before,.rst-content h5 .headerlink:before,.rst-content h6 .headerlink:before,.rst-content dl dt .headerlink:before,.icon:before,.wy-dropdown .caret:before,.wy-inline-validate.wy-inline-validate-success .wy-input-context:before,.wy-inline-validate.wy-inline-validate-danger .wy-input-context:before,.wy-inline-validate.wy-inline-validate-warning .wy-input-context:before,.wy-inline-validate.wy-inline-validate-info .wy-input-context:before,.wy-alert,.rst-content .note,.rst-content .attention,.rst-content .caution,.rst-content .danger,.rst-content .error,.rst-content .hint,.rst-content .important,.rst-content .tip,.rst-content .warning,.rst-content .seealso,.rst-content .admonition-todo,.btn,input[type="text"],input[type="password"],input[type="email"],input[type="url"],input[type="date"],input[type="month"],input[type="time"],input[type="datetime"],input[type="datetime-local"],input[type="week"],input[type="number"],input[type="search"],input[type="tel"],input[type="color"],select,textarea,.wy-menu-vertical li.on a,.wy-menu-vertical li.current>a,.wy-side-nav-search>a,.wy-side-nav-search .wy-dropdown>a,.wy-nav-top a{-webkit-font-smoothing:antialiased}.clearfix{*zoom:1}.clearfix:before,.clearfix:after{display:table;content:""}.clearfix:after{clear:both}/*! *{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}article,aside,details,figcaption,figure,footer,header,hgroup,nav,section{display:block}audio,canvas,video{display:inline-block;*display:inline;*zoom:1}audio:not([controls]){display:none}[hidden]{display:none}*{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}html{font-size:100%;-webkit-text-size-adjust:100%;-ms-text-size-adjust:100%}body{margin:0}a:hover,a:active{outline:0}abbr[title]{border-bottom:1px dotted}b,strong{font-weight:bold}blockquote{margin:0}dfn{font-style:italic}ins{background:#ff9;color:#000;text-decoration:none}mark{background:#ff0;color:#000;font-style:italic;font-weight:bold}pre,code,.rst-content tt,kbd,samp{font-family:monospace,serif;_font-family:"courier new",monospace;font-size:1em}pre{white-space:pre}q{quotes:none}q:before,q:after{content:"";content:none}small{font-size:85%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sup{top:-0.5em}sub{bottom:-0.25em}ul,ol,dl{margin:0;padding:0;list-style:none;list-style-image:none}li{list-style:none}dd{margin:0}img{border:0;-ms-interpolation-mode:bicubic;vertical-align:middle;max-width:100%}svg:not(:root){overflow:hidden}figure{margin:0}form{margin:0}fieldset{border:0;margin:0;padding:0}label{cursor:pointer}legend{border:0;*margin-left:-7px;padding:0;white-space:normal}button,input,select,textarea{font-size:100%;margin:0;vertical-align:baseline;*vertical-align:middle}button,input{line-height:normal}button,input[type="button"],input[type="reset"],input[type="submit"]{cursor:pointer;-webkit-appearance:button;*overflow:visible}button[disabled],input[disabled]{cursor:default}input[type="checkbox"],input[type="radio"]{box-sizing:border-box;padding:0;*width:13px;*height:13px}input[type="search"]{-webkit-appearance:textfield;-moz-box-sizing:content-box;-webkit-box-sizing:content-box;box-sizing:content-box}input[type="search"]::-webkit-search-decoration,input[type="search"]::-webkit-search-cancel-button{-webkit-appearance:none}button::-moz-focus-inner,input::-moz-focus-inner{border:0;padding:0}textarea{overflow:auto;vertical-align:top;resize:vertical}table{border-collapse:collapse;border-spacing:0}td{vertical-align:top}.chromeframe{margin:0.2em 0;background:#ccc;color:#000;padding:0.2em 0}.ir{display:block;border:0;text-indent:-999em;overflow:hidden;background-color:transparent;background-repeat:no-repeat;text-align:left;direction:ltr;*line-height:0}.ir br{display:none}.hidden{display:none !important;visibility:hidden}.visuallyhidden{border:0;clip:rect(0 0 0 0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.visuallyhidden.focusable:active,.visuallyhidden.focusable:focus{clip:auto;height:auto;margin:0;overflow:visible;position:static;width:auto}.invisible{visibility:hidden}.relative{position:relative}big,small{font-size:100%}@media print{html,body,section{background:none !important}*{box-shadow:none !important;text-shadow:none !important;filter:none !important;-ms-filter:none !important}a,a:visited{text-decoration:underline}.ir a:after,a[href^="javascript:"]:after,a[href^="#"]:after{content:""}pre,blockquote{page-break-inside:avoid}thead{display:table-header-group}tr,img{page-break-inside:avoid}img{max-width:100% !important}@page{margin:0.5cm}p,h2,h3{orphans:3;widows:3}h2,h3{page-break-after:avoid}}.fa:before,.rst-content .admonition-title:before,.rst-content h1 .headerlink:before,.rst-content h2 .headerlink:before,.rst-content h3 .headerlink:before,.rst-content h4 .headerlink:before,.rst-content h5 .headerlink:before,.rst-content h6 .headerlink:before,.rst-content dl dt .headerlink:before,.icon:before,.wy-dropdown .caret:before,.wy-inline-validate.wy-inline-validate-success .wy-input-context:before,.wy-inline-validate.wy-inline-validate-danger .wy-input-context:before,.wy-inline-validate.wy-inline-validate-warning .wy-input-context:before,.wy-inline-validate.wy-inline-validate-info .wy-input-context:before,.wy-alert,.rst-content .note,.rst-content .attention,.rst-content .caution,.rst-content .danger,.rst-content .error,.rst-content .hint,.rst-content .important,.rst-content .tip,.rst-content .warning,.rst-content .seealso,.rst-content .admonition-todo,.btn,input[type="text"],input[type="password"],input[type="email"],input[type="url"],input[type="date"],input[type="month"],input[type="time"],input[type="datetime"],input[type="datetime-local"],input[type="week"],input[type="number"],input[type="search"],input[type="tel"],input[type="color"],select,textarea,.wy-menu-vertical li.on a,.wy-menu-vertical li.current>a,.wy-side-nav-search>a,.wy-side-nav-search .wy-dropdown>a,.wy-nav-top a{-webkit-font-smoothing:antialiased}.clearfix{*zoom:1}.clearfix:before,.clearfix:after{display:table;content:""}.clearfix:after{clear:both}/*!

View File

@ -1,15 +1,3 @@
/*
* Tweak the overal size to better match RTD.
*/
body {
font-size: 90%;
}
h3, h4, h5, h6 {
color: #2980b9;
font-weight: 300
}
/* /*
* Sphinx doesn't have support for section dividers like we do in * Sphinx doesn't have support for section dividers like we do in
* MkDocs, this styles the section titles in the nav * MkDocs, this styles the section titles in the nav
@ -34,10 +22,25 @@ h3, h4, h5, h6 {
* area doesn't scroll. * area doesn't scroll.
* *
* https://github.com/mkdocs/mkdocs/pull/202 * https://github.com/mkdocs/mkdocs/pull/202
*
* Builds upon pull 202 https://github.com/mkdocs/mkdocs/pull/202
* to make toc scrollbar end before navigations buttons to not be overlapping.
*/ */
.wy-nav-side { .wy-nav-side {
height: 100%; height: calc(100% - 45px);
overflow-y: auto; overflow-y: auto;
min-height: 0;
}
.rst-versions{
border-top: 0;
height: 45px;
}
@media screen and (max-width: 768px) {
.wy-nav-side {
height: 100%;
}
} }
/* /*
@ -50,23 +53,49 @@ h3, h4, h5, h6 {
margin-bottom: 2em; margin-bottom: 2em;
} }
/*
* Fix wrapping in the code highlighting
*
* https://github.com/mkdocs/mkdocs/issues/233
*/
code {
white-space: pre;
}
/* /*
* Wrap inline code samples otherwise they shoot of the side and * Wrap inline code samples otherwise they shoot of the side and
* can't be read at all. * can't be read at all.
* *
* https://github.com/mkdocs/mkdocs/issues/313 * https://github.com/mkdocs/mkdocs/issues/313
* https://github.com/mkdocs/mkdocs/issues/233
* https://github.com/mkdocs/mkdocs/issues/834
*/ */
p code { code {
white-space: pre-wrap;
word-wrap: break-word; word-wrap: break-word;
padding: 2px 5px;
}
/**
* Make code blocks display as blocks and give them the appropriate
* font size and padding.
*
* https://github.com/mkdocs/mkdocs/issues/855
* https://github.com/mkdocs/mkdocs/issues/834
* https://github.com/mkdocs/mkdocs/issues/233
*/
pre code {
white-space: pre;
word-wrap: normal;
display: block;
padding: 12px;
font-size: 12px;
}
/*
* Fix link colors when the link text is inline code.
*
* https://github.com/mkdocs/mkdocs/issues/718
*/
a code {
color: #2980B9;
}
a:hover code {
color: #3091d1;
}
a:visited code {
color: #9B59B6;
} }
/* /*
@ -76,7 +105,7 @@ p code {
* *
* https://github.com/mkdocs/mkdocs/issues/411 * https://github.com/mkdocs/mkdocs/issues/411
*/ */
code.cs, code.c { pre .cs, pre .c {
font-weight: inherit; font-weight: inherit;
font-style: inherit; font-style: inherit;
} }
@ -99,21 +128,20 @@ code.cs, code.c {
* Additions specific to the search functionality provided by MkDocs * Additions specific to the search functionality provided by MkDocs
*/ */
#mkdocs-search-results article h3 .search-results article {
{
margin-top: 23px; margin-top: 23px;
border-top: 1px solid #E1E4E5; border-top: 1px solid #E1E4E5;
padding-top: 24px; padding-top: 24px;
} }
#mkdocs-search-results article:first-child h3 { .search-results article:first-child {
border-top: none; border-top: none;
} }
#mkdocs-search-query{ form .search-query {
width: 100%; width: 100%;
border-radius: 50px; border-radius: 50px;
padding: 6px 12px; padding: 6px 12px; /* csslint allow: box-model */
border-color: #D1D4D5; border-color: #D1D4D5;
} }
@ -124,3 +152,43 @@ code.cs, code.c {
.wy-menu-vertical li ul.subnav ul.subnav{ .wy-menu-vertical li ul.subnav ul.subnav{
padding-left: 1em; padding-left: 1em;
} }
.wy-menu-vertical .subnav li.current > a {
padding-left: 2.42em;
}
.wy-menu-vertical .subnav li.current > ul li a {
padding-left: 3.23em;
}
/*
* Improve inline code blocks within admonitions.
*
* https://github.com/mkdocs/mkdocs/issues/656
*/
.admonition code {
color: #404040;
border: 1px solid #c7c9cb;
border: 1px solid rgba(0, 0, 0, 0.2);
background: #f8fbfd;
background: rgba(255, 255, 255, 0.7);
}
/*
* Account for wide tables which go off the side.
* Override borders to avoid wierdness on narrow tables.
*
* https://github.com/mkdocs/mkdocs/issues/834
* https://github.com/mkdocs/mkdocs/pull/1034
*/
.rst-content .section .docutils {
width: 100%;
overflow: auto;
display: block;
border: none;
}
td, th {
border: 1px solid #e1e4e5 !important; /* csslint allow: important */
border-collapse: collapse;
}

Binary file not shown.

File diff suppressed because it is too large Load Diff

Before

Width:  |  Height:  |  Size: 355 KiB

After

Width:  |  Height:  |  Size: 193 KiB

Binary file not shown.

Binary file not shown.

View File

@ -3,31 +3,28 @@
<!--[if gt IE 8]><!--> <html class="no-js" lang="en" > <!--<![endif]--> <!--[if gt IE 8]><!--> <html class="no-js" lang="en" > <!--<![endif]-->
<head> <head>
<meta charset="utf-8"> <meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="description" content="None">
<title>NewPipe Tutorial</title>
<link rel="shortcut icon" href="./img/favicon.ico"> <link rel="shortcut icon" href="./img/favicon.ico">
<title>Welcome to NewPipe Tutorial - NewPipe Tutorial</title>
<link href='https://fonts.googleapis.com/css?family=Lato:400,700|Roboto+Slab:400,700|Inconsolata:400,700' rel='stylesheet' type='text/css'> <link href='https://fonts.googleapis.com/css?family=Lato:400,700|Roboto+Slab:400,700|Inconsolata:400,700' rel='stylesheet' type='text/css'>
<link rel="stylesheet" href="./css/theme.css" type="text/css" /> <link rel="stylesheet" href="./css/theme.css" type="text/css" />
<link rel="stylesheet" href="./css/theme_extra.css" type="text/css" /> <link rel="stylesheet" href="./css/theme_extra.css" type="text/css" />
<link rel="stylesheet" href="./css/highlight.css"> <link rel="stylesheet" href="./css/highlight.css">
<script> <script>
// Current page data // Current page data
var mkdocs_page_name = "None"; var mkdocs_page_name = "Welcome to NewPipe Tutorial";
var mkdocs_page_input_path = "index.md";
var mkdocs_page_url = "/";
</script> </script>
<script src="./js/jquery-2.1.1.min.js"></script> <script src="./js/jquery-2.1.1.min.js"></script>
<script src="./js/modernizr-2.8.3.min.js"></script> <script src="./js/modernizr-2.8.3.min.js"></script>
<script type="text/javascript" src="./js/highlight.pack.js"></script> <script type="text/javascript" src="./js/highlight.pack.js"></script>
<script src="./js/theme.js"></script>
</head> </head>
@ -47,30 +44,35 @@
</div> </div>
<div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="main navigation"> <div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="main navigation">
<ul class="current"> <ul class="current">
<li>
<li class="toctree-l1 current">
<a class="current" href=".">Home</a>
<ul>
<li class="toctree-l3"><a href="#welcome-to-newpipe-tutorial">Welcome to NewPipe Tutorial</a></li>
<li><a class="toctree-l4" href="#stay-tuned">Stay Tuned</a></li>
</ul> <li class="toctree-l1 current">
</li> <a class="current" href=".">Welcome to NewPipe Tutorial</a>
<li> <ul class="subnav">
<li> <li class="toctree-l2"><a href="#welcome-to-newpipe-tutorial">Welcome to NewPipe Tutorial</a></li>
<li class="toctree-l1 ">
<a class="" href="00_PrepareEverything/">00 PrepareEverything</a>
</li> <ul>
<li>
<li><a class="toctree-l3" href="#stay-tuned">Stay Tuned</a></li>
</ul>
</ul>
</li>
<li class="toctree-l1">
<a class="" href="00_Prepare_everything/">00 Prepare everything</a>
</li>
<li class="toctree-l1">
<a class="" href="01_Basic_concept_of_the_extractor/">01 Basic concept of the extractor</a>
</li>
</ul> </ul>
</div> </div>
@ -94,7 +96,7 @@
<li>Home</li> <li>Welcome to NewPipe Tutorial</li>
<li class="wy-breadcrumbs-aside"> <li class="wy-breadcrumbs-aside">
</li> </li>
@ -117,7 +119,7 @@ This however is not the <a href="https://teamnewpipe.github.io/NewPipeExtractor/
<div class="rst-footer-buttons" role="navigation" aria-label="footer navigation"> <div class="rst-footer-buttons" role="navigation" aria-label="footer navigation">
<a href="00_PrepareEverything/" class="btn btn-neutral float-right" title="00 PrepareEverything"/>Next <span class="icon icon-circle-arrow-right"></span></a> <a href="00_Prepare_everything/" class="btn btn-neutral float-right" title="00 Prepare everything">Next <span class="icon icon-circle-arrow-right"></span></a>
</div> </div>
@ -140,20 +142,24 @@ This however is not the <a href="https://teamnewpipe.github.io/NewPipeExtractor/
</div> </div>
<div class="rst-versions" role="note" style="cursor: pointer"> <div class="rst-versions" role="note" style="cursor: pointer">
<span class="rst-current-version" data-toggle="rst-current-version"> <span class="rst-current-version" data-toggle="rst-current-version">
<span style="margin-left: 15px"><a href="00_PrepareEverything/" style="color: #fcfcfc">Next &raquo;</a></span> <span style="margin-left: 15px"><a href="00_Prepare_everything/" style="color: #fcfcfc">Next &raquo;</a></span>
</span> </span>
</div> </div>
<script>var base_url = '.';</script>
<script src="./js/theme.js"></script>
<script src="./search/require.js"></script>
<script src="./search/search.js"></script>
</body> </body>
</html> </html>
<!-- <!--
MkDocs version : 0.14.0 MkDocs version : 0.17.2
Build Date UTC : 2018-02-22 16:12:59.831903 Build Date UTC : 2018-02-22 18:22:22
--> -->

View File

@ -1,5 +1,4 @@
$( document ).ready(function() { $( document ).ready(function() {
// Shift nav in mobile when clicking the menu. // Shift nav in mobile when clicking the menu.
$(document).on('click', "[data-toggle='wy-nav-top']", function() { $(document).on('click', "[data-toggle='wy-nav-top']", function() {
$("[data-toggle='wy-nav-shift']").toggleClass("shift"); $("[data-toggle='wy-nav-shift']").toggleClass("shift");
@ -12,6 +11,23 @@ $( document ).ready(function() {
$("[data-toggle='rst-versions']").toggleClass("shift"); $("[data-toggle='rst-versions']").toggleClass("shift");
}); });
// Keyboard navigation
document.addEventListener("keydown", function(e) {
if ($(e.target).is(':input')) return true;
var key = e.which || e.keyCode || window.event && window.event.keyCode;
var page;
switch (key) {
case 39: // right arrow
page = $('[role="navigation"] a:contains(Next):first').prop('href');
break;
case 37: // left arrow
page = $('[role="navigation"] a:contains(Previous):first').prop('href');
break;
default: break;
}
if (page) window.location.href = page;
});
$(document).on('click', "[data-toggle='rst-current-version']", function() { $(document).on('click', "[data-toggle='rst-current-version']", function() {
$("[data-toggle='rst-versions']").toggleClass("shift-up"); $("[data-toggle='rst-versions']").toggleClass("shift-up");
}); });
@ -53,3 +69,31 @@ window.SphinxRtdTheme = (function (jquery) {
StickyNav : stickyNav StickyNav : stickyNav
}; };
}($)); }($));
// The code below is a copy of @seanmadsen code posted Jan 10, 2017 on issue 803.
// https://github.com/mkdocs/mkdocs/issues/803
// This just incorporates the auto scroll into the theme itself without
// the need for additional custom.js file.
//
$(function() {
$.fn.isFullyWithinViewport = function(){
var viewport = {};
viewport.top = $(window).scrollTop();
viewport.bottom = viewport.top + $(window).height();
var bounds = {};
bounds.top = this.offset().top;
bounds.bottom = bounds.top + this.outerHeight();
return ( ! (
(bounds.top <= viewport.top) ||
(bounds.bottom >= viewport.bottom)
) );
};
if( $('li.toctree-l1.current').length && !$('li.toctree-l1.current').isFullyWithinViewport() ) {
$('.wy-nav-side')
.scrollTop(
$('li.toctree-l1.current').offset().top -
$('.wy-nav-side').offset().top -
60
);
}
});

File diff suppressed because one or more lines are too long

View File

@ -1,34 +0,0 @@
{
"docs": [
{
"location": "/",
"text": "Welcome to NewPipe Tutorial\n\n\nThis side is a beginner tutorial for people who want to use, or write services for the \nNewPipe Extractor\n.\nThis however is not the \ndocumentation\n for it.\n\n\nThis tutorial and the documentation are in an early state. So \nfeedback\n is always welcome :D\n\n\nStay Tuned\n\n\nTune yourself to stay ;D",
"title": "Home"
},
{
"location": "/#welcome-to-newpipe-tutorial",
"text": "This side is a beginner tutorial for people who want to use, or write services for the NewPipe Extractor .\nThis however is not the documentation for it. This tutorial and the documentation are in an early state. So feedback is always welcome :D",
"title": "Welcome to NewPipe Tutorial"
},
{
"location": "/#stay-tuned",
"text": "Tune yourself to stay ;D",
"title": "Stay Tuned"
},
{
"location": "/00_PrepareEverything/",
"text": "Prepare everything\n\n\nWelcome to the NewPipe tutorial. This tutorial will guide you through the process of creating your own NewPipeExtractor service\nwith which NewPipe will gain support for a dedicated streaming service like YouTube, Vimeo or SournCloud.\nLet's dive right. ;D\n\n\nSetup your dev environment\n\n\nFirst and foremost you need to meet certain conditions in order to write your own service.\n\n\nWhat you need to know\n\n\n\n\nBasic understanding of \ngit\n\n\nGood \nJava\n knowledge\n\n\nGood understanding of \nweb technology\n\n\nBasic understanding about \nunit testing\n and \nJUnit\n\n\nFlawless understanding of how to \ncontribute\n to the \nNewPipe project\n\n\n\n\nWhat you need to have\n\n\n\n\nA dev environment/ide that supports:\n\n\ngit\n\n\njava 8\n\n\ngradle\n\n\nI highly recomend \nIDEA Community\n since it has everything we need.\n\n\n\n\n\n\nA \ngithub\n account\n\n\nA loot of patience and excitement ;D\n\n\n\n\nAfter making sure all these conditions are provided fork the \nNewPipeExtractor\n,\nusing the \nfork button\n.\nThis way you have your own working repository. Now clone this repository into your local folder in which you want to work in.\nNext import the cloned project into your \nide\n\nand \nrun\n it.\nIf all the checks are green you did everything right, and you are good to go to move on to the next chapter.",
"title": "00 PrepareEverything"
},
{
"location": "/00_PrepareEverything/#prepare-everything",
"text": "Welcome to the NewPipe tutorial. This tutorial will guide you through the process of creating your own NewPipeExtractor service\nwith which NewPipe will gain support for a dedicated streaming service like YouTube, Vimeo or SournCloud.\nLet's dive right. ;D",
"title": "Prepare everything"
},
{
"location": "/00_PrepareEverything/#setup-your-dev-environment",
"text": "First and foremost you need to meet certain conditions in order to write your own service. What you need to know Basic understanding of git Good Java knowledge Good understanding of web technology Basic understanding about unit testing and JUnit Flawless understanding of how to contribute to the NewPipe project What you need to have A dev environment/ide that supports: git java 8 gradle I highly recomend IDEA Community since it has everything we need. A github account A loot of patience and excitement ;D After making sure all these conditions are provided fork the NewPipeExtractor ,\nusing the fork button .\nThis way you have your own working repository. Now clone this repository into your local folder in which you want to work in.\nNext import the cloned project into your ide \nand run it.\nIf all the checks are green you did everything right, and you are good to go to move on to the next chapter.",
"title": "Setup your dev environment"
}
]
}

View File

@ -3,29 +3,21 @@
<!--[if gt IE 8]><!--> <html class="no-js" lang="en" > <!--<![endif]--> <!--[if gt IE 8]><!--> <html class="no-js" lang="en" > <!--<![endif]-->
<head> <head>
<meta charset="utf-8"> <meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>NewPipe Tutorial</title>
<link rel="shortcut icon" href="./img/favicon.ico"> <link rel="shortcut icon" href="./img/favicon.ico">
<title>NewPipe Tutorial</title>
<link href='https://fonts.googleapis.com/css?family=Lato:400,700|Roboto+Slab:400,700|Inconsolata:400,700' rel='stylesheet' type='text/css'> <link href='https://fonts.googleapis.com/css?family=Lato:400,700|Roboto+Slab:400,700|Inconsolata:400,700' rel='stylesheet' type='text/css'>
<link rel="stylesheet" href="./css/theme.css" type="text/css" /> <link rel="stylesheet" href="./css/theme.css" type="text/css" />
<link rel="stylesheet" href="./css/theme_extra.css" type="text/css" /> <link rel="stylesheet" href="./css/theme_extra.css" type="text/css" />
<link rel="stylesheet" href="./css/highlight.css"> <link rel="stylesheet" href="./css/highlight.css">
<script src="./js/jquery-2.1.1.min.js"></script> <script src="./js/jquery-2.1.1.min.js"></script>
<script src="./js/modernizr-2.8.3.min.js"></script> <script src="./js/modernizr-2.8.3.min.js"></script>
<script type="text/javascript" src="./js/highlight.pack.js"></script> <script type="text/javascript" src="./js/highlight.pack.js"></script>
<script src="./js/theme.js"></script>
<script>var base_url = '.';</script>
<script data-main="./mkdocs/js/search.js" src="./mkdocs/js/require.js"></script>
</head> </head>
@ -45,21 +37,23 @@
</div> </div>
<div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="main navigation"> <div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="main navigation">
<ul class="current"> <ul class="current">
<li>
<li class="toctree-l1 ">
<a class="" href=".">Home</a>
</li> <li class="toctree-l1">
<li>
<li> <a class="" href=".">Home</a>
<li class="toctree-l1 "> </li>
<a class="" href="00_PrepareEverything/">00 PrepareEverything</a>
</li> <li class="toctree-l1">
<li>
<a class="" href="00_Prepare_everything/">00 Prepare everything</a>
</li>
<li class="toctree-l1">
<a class="" href="01_Basic_concept_of_the_extractor/">01 Basic concept of the extractor</a>
</li>
</ul> </ul>
</div> </div>
@ -99,8 +93,8 @@
<input name="q" id="mkdocs-search-query" type="text" class="search_input search-query ui-autocomplete-input" placeholder="Search the Docs" autocomplete="off" autofocus> <input name="q" id="mkdocs-search-query" type="text" class="search_input search-query ui-autocomplete-input" placeholder="Search the Docs" autocomplete="off" autofocus>
</form> </form>
<div id="mkdocs-search-results"> <div id="mkdocs-search-results" class="search-results">
Sorry, page not found. Searching...
</div> </div>
@ -126,13 +120,17 @@
</div> </div>
<div class="rst-versions" role="note" style="cursor: pointer"> <div class="rst-versions" role="note" style="cursor: pointer">
<span class="rst-current-version" data-toggle="rst-current-version"> <span class="rst-current-version" data-toggle="rst-current-version">
</span> </span>
</div> </div>
<script>var base_url = '.';</script>
<script src="./js/theme.js"></script>
<script src="./search/require.js"></script>
<script src="./search/search.js"></script>
</body> </body>
</html> </html>

7
site/search/lunr.min.js vendored Normal file

File diff suppressed because one or more lines are too long

View File

@ -1,8 +1,12 @@
require.config({
baseUrl: base_url + "/search/"
});
require([ require([
base_url + '/mkdocs/js/mustache.min.js', 'mustache.min',
base_url + '/mkdocs/js/lunr-0.5.7.min.js', 'lunr.min',
'text!search-results-template.mustache', 'text!search-results-template.mustache',
'text!../search_index.json', 'text!search_index.json',
], function (Mustache, lunr, results_template, data) { ], function (Mustache, lunr, results_template, data) {
"use strict"; "use strict";
@ -70,7 +74,7 @@ require([
*/ */
jQuery('#mkdocs_search_modal a').click(function(){ jQuery('#mkdocs_search_modal a').click(function(){
jQuery('#mkdocs_search_modal').modal('hide'); jQuery('#mkdocs_search_modal').modal('hide');
}) });
} }
}; };
@ -83,6 +87,6 @@ require([
search(); search();
} }
search_input.addEventListener("keyup", search); if (search_input){search_input.addEventListener("keyup", search);}
}); });

View File

@ -0,0 +1,64 @@
{
"docs": [
{
"location": "/",
"text": "Welcome to NewPipe Tutorial\n\n\nThis side is a beginner tutorial for people who want to use, or write services for the \nNewPipe Extractor\n.\nThis however is not the \ndocumentation\n for it.\n\n\nThis tutorial and the documentation are in an early state. So \nfeedback\n is always welcome :D\n\n\nStay Tuned\n\n\nTune yourself to stay ;D",
"title": "Welcome to NewPipe Tutorial"
},
{
"location": "/#welcome-to-newpipe-tutorial",
"text": "This side is a beginner tutorial for people who want to use, or write services for the NewPipe Extractor .\nThis however is not the documentation for it. This tutorial and the documentation are in an early state. So feedback is always welcome :D",
"title": "Welcome to NewPipe Tutorial"
},
{
"location": "/#stay-tuned",
"text": "Tune yourself to stay ;D",
"title": "Stay Tuned"
},
{
"location": "/00_Prepare_everything/",
"text": "Prepare everything\n\n\nWelcome to the NewPipe tutorial. This tutorial will guide you through the process of creating your own NewPipeExtractor\nservice with which NewPipe will gain support for a dedicated streaming service like YouTube, Vimeo or SournCloud. Let's\ndive right. ;D\n\n\nSetup your dev environment\n\n\nFirst and foremost you need to meet certain conditions in order to write your own service.\n\n\nWhat you need to know\n\n\n\n\nBasic understanding of \ngit\n\n\nGood \nJava\n knowledge\n\n\nGood understanding of \nweb technology\n\n\nBasic understanding about \nunit testing\n and \nJUnit\n\n\nFlawless understanding of how to \ncontribute\n to the \nNewPipe project\n\n\n\n\nWhat you need to have\n\n\n\n\nA dev environment/ide that supports:\n\n\ngit\n\n\njava 8\n\n\ngradle\n\n\nI highly recomend \nIDEA Community\n since it has everything we need.\n\n\n\n\n\n\nA \ngithub\n account\n\n\nA loot of patience and excitement ;D\n\n\n\n\nAfter making sure all these conditions are provided fork the \nNewPipeExtractor\n,\nusing the \nfork button\n.\nThis way you have your own working repository. Now clone this repository into your local folder in which you want to work in.\nNext import the cloned project into your \nide\n\nand \nrun\n it.\nIf all the checks are green you did everything right, and you are good to go to move on to the next chapter.",
"title": "Prepare everything"
},
{
"location": "/00_Prepare_everything/#prepare-everything",
"text": "Welcome to the NewPipe tutorial. This tutorial will guide you through the process of creating your own NewPipeExtractor\nservice with which NewPipe will gain support for a dedicated streaming service like YouTube, Vimeo or SournCloud. Let's\ndive right. ;D",
"title": "Prepare everything"
},
{
"location": "/00_Prepare_everything/#setup-your-dev-environment",
"text": "First and foremost you need to meet certain conditions in order to write your own service.",
"title": "Setup your dev environment"
},
{
"location": "/00_Prepare_everything/#what-you-need-to-know",
"text": "Basic understanding of git Good Java knowledge Good understanding of web technology Basic understanding about unit testing and JUnit Flawless understanding of how to contribute to the NewPipe project",
"title": "What you need to know"
},
{
"location": "/00_Prepare_everything/#what-you-need-to-have",
"text": "A dev environment/ide that supports: git java 8 gradle I highly recomend IDEA Community since it has everything we need. A github account A loot of patience and excitement ;D After making sure all these conditions are provided fork the NewPipeExtractor ,\nusing the fork button .\nThis way you have your own working repository. Now clone this repository into your local folder in which you want to work in.\nNext import the cloned project into your ide \nand run it.\nIf all the checks are green you did everything right, and you are good to go to move on to the next chapter.",
"title": "What you need to have"
},
{
"location": "/01_Basic_concept_of_the_extractor/",
"text": "Basic Concept of the Extractor\n\n\nCollector/Extractor pattern\n\n\nBefore we can start coding our own service we need to understand the basic concept of the extractor. There is a pattern\nyou will find all over the code. It is called to \nextractor/collector\n pattern. The idea behind this pattern is that\nthe \nextractor\n\nwould produce single peaces of data, and the collector would take it and form usable data for the front end out of it.\nThe collector also controls the parsing process, and takes care about error handling. So if the extractor fails at any\npoint the collector will decide weather it should continue parsing or not. This requires the extractor to be made out of\nmany small methods. One method for every data field the collector wants to have. The collectors are provided by NewPipe.\nYou need to take care of the extractors.\n\n\nUsage in the front end\n\n\nSo typical call for retrieving data from a website would look like this:\n\n\nInfo info;\ntry {\n Extractor extractor = new Extractor(ome_meta_info); // Create a new Extractor with a given context provided as parameter.\n info = Info.getInfo(extractor); // Retrieves the data form extractor and builds info package.\n} catch(Exception e) {\n // handler errors when collector decided to break up extraction\n}",
"title": "Basic Concept of the Extractor"
},
{
"location": "/01_Basic_concept_of_the_extractor/#basic-concept-of-the-extractor",
"text": "",
"title": "Basic Concept of the Extractor"
},
{
"location": "/01_Basic_concept_of_the_extractor/#collectorextractor-pattern",
"text": "Before we can start coding our own service we need to understand the basic concept of the extractor. There is a pattern\nyou will find all over the code. It is called to extractor/collector pattern. The idea behind this pattern is that\nthe extractor \nwould produce single peaces of data, and the collector would take it and form usable data for the front end out of it.\nThe collector also controls the parsing process, and takes care about error handling. So if the extractor fails at any\npoint the collector will decide weather it should continue parsing or not. This requires the extractor to be made out of\nmany small methods. One method for every data field the collector wants to have. The collectors are provided by NewPipe.\nYou need to take care of the extractors.",
"title": "Collector/Extractor pattern"
},
{
"location": "/01_Basic_concept_of_the_extractor/#usage-in-the-front-end",
"text": "So typical call for retrieving data from a website would look like this: Info info;\ntry {\n Extractor extractor = new Extractor(ome_meta_info); // Create a new Extractor with a given context provided as parameter.\n info = Info.getInfo(extractor); // Retrieves the data form extractor and builds info package.\n} catch(Exception e) {\n // handler errors when collector decided to break up extraction\n}",
"title": "Usage in the front end"
}
]
}

View File

@ -3,7 +3,7 @@
<url> <url>
<loc>None/</loc> <loc>/</loc>
<lastmod>2018-02-22</lastmod> <lastmod>2018-02-22</lastmod>
<changefreq>daily</changefreq> <changefreq>daily</changefreq>
</url> </url>
@ -11,7 +11,15 @@
<url> <url>
<loc>None/00_PrepareEverything/</loc> <loc>/00_Prepare_everything/</loc>
<lastmod>2018-02-22</lastmod>
<changefreq>daily</changefreq>
</url>
<url>
<loc>/01_Basic_concept_of_the_extractor/</loc>
<lastmod>2018-02-22</lastmod> <lastmod>2018-02-22</lastmod>
<changefreq>daily</changefreq> <changefreq>daily</changefreq>
</url> </url>