newpipe-documentation/00_Prepare_everything/index.html

249 lines
13 KiB
HTML

<!DOCTYPE html>
<html class="writer-html5" lang="en" >
<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>Before You Start - NewPipe Development Documentation</title>
<!-- local fonts -->
<link rel="stylesheet" href="../css/local_fonts.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_child.css" type="text/css" />
<!-- local code syntax highlighting -->
<link rel="stylesheet" href="../css/github.min.css" type="text/css" />
<link rel="stylesheet" href="../css/highlight.css" type="text/css" />
<script>
// Current page data
var mkdocs_page_name = "Before You Start";
var mkdocs_page_input_path = "00_Prepare_everything.md";
var mkdocs_page_url = null;
</script>
<script src="../js/jquery-2.1.1.min.js" defer></script>
<script src="../js/modernizr-2.8.3.min.js" defer></script>
<script src="../js/highlight.min.js"></script>
<script>hljs.initHighlightingOnLoad();</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-scroll">
<div class="wy-side-nav-search">
<a href=".." class="icon icon-home"> NewPipe Development Documentation
</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" aria-label="Search docs" title="Type search term here" />
</form>
</div>
</div>
<div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="Navigation menu">
<ul>
<li class="toctree-l1"><a class="reference internal" href="..">Welcome to the NewPipe Development Docs</a>
</li>
</ul>
<ul class="current">
<li class="toctree-l1 current"><a class="reference internal current" href="./">Before You Start</a>
<ul class="current">
<li class="toctree-l2"><a class="reference internal" href="#setting-up-your-dev-environment">Setting Up Your Dev Environment</a>
<ul>
<li class="toctree-l3"><a class="reference internal" href="#what-you-need-to-know">What You Need to Know:</a>
</li>
<li class="toctree-l3"><a class="reference internal" href="#toolsprograms-you-will-need">Tools/Programs You Will Need:</a>
</li>
<li class="toctree-l3"><a class="reference internal" href="#importing-the-newpipe-extractor-in-intellij-idea">Importing the NewPipe Extractor in IntelliJ IDEA</a>
</li>
<li class="toctree-l3"><a class="reference internal" href="#running-test-in-android-studiointellij-idea">Running "test" in Android Studio/IntelliJ IDEA</a>
</li>
</ul>
</li>
</ul>
</li>
</ul>
<ul>
<li class="toctree-l1"><a class="reference internal" href="../01_Concept_of_the_extractor/">Concept of the Extractor</a>
</li>
</ul>
<ul>
<li class="toctree-l1"><a class="reference internal" href="../02_Concept_of_LinkHandler/">Concept of the LinkHandler</a>
</li>
</ul>
<ul>
<li class="toctree-l1"><a class="reference internal" href="../03_Implement_a_service/">Implementing a Service</a>
</li>
</ul>
<ul>
<li class="toctree-l1"><a class="reference internal" href="../04_Run_changes_in_App/">Testing Your Changes in the App</a>
</li>
</ul>
<ul>
<li class="toctree-l1"><a class="reference internal" href="../05_Mock_tests/">Mock Tests</a>
</li>
</ul>
<ul>
<li class="toctree-l1"><a class="reference internal" href="../06_releasing/">Releasing a New NewPipe Version</a>
</li>
</ul>
<ul>
<li class="toctree-l1"><a class="reference internal" href="../07_release_instructions/">Release instructions for normal releases</a>
</li>
</ul>
<ul>
<li class="toctree-l1"><a class="reference internal" href="../08_documentation/">About This Documentation</a>
</li>
</ul>
<ul>
<li class="toctree-l1"><a class="reference internal" href="../09_maintainers_view/">Maintainers' Section</a>
</li>
</ul>
</div>
</div>
</nav>
<section data-toggle="wy-nav-shift" class="wy-nav-content-wrap">
<nav class="wy-nav-top" role="navigation" aria-label="Mobile navigation menu">
<i data-toggle="wy-nav-top" class="fa fa-bars"></i>
<a href="..">NewPipe Development Documentation</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=".." class="icon icon-home" aria-label="Docs"></a> &raquo;</li>
<li class="breadcrumb-item active">Before You Start</li>
<li class="wy-breadcrumbs-aside">
</li>
</ul>
<hr/>
</div>
<div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
<div class="section" itemprop="articleBody">
<h1 id="before-you-start">Before You Start</h1>
<p>These documents will guide you through the process of understanding or creating your own Extractor
service of which will enable NewPipe to access additional streaming services, such as the currently supported YouTube, SoundCloud and MediaCCC.
The whole documentation consists of this page and <a href="https://teamnewpipe.github.io/NewPipeExtractor/javadoc/">Jdoc</a> setup, which explains the general concept of the NewPipeExtractor.</p>
<p><strong>IMPORTANT!!!</strong> This is likely to be the worst documentation you have ever read, so do not hesitate to
<a href="https://github.com/teamnewpipe/documentation/issues">report</a> if
you find any spelling errors, incomplete parts or you simply don't understand something. We are an open community
and are open for everyone to help :)</p>
<h2 id="setting-up-your-dev-environment">Setting Up Your Dev Environment</h2>
<p>First and foremost, you need to meet the following conditions in order to write your own service.</p>
<h3 id="what-you-need-to-know">What You Need to Know:</h3>
<ul>
<li>A basic understanding of <strong><a href="https://try.github.io">Git</a></strong></li>
<li>Good <strong><a href="https://whatpixel.com/best-java-books/">Java</a></strong> knowledge</li>
<li>A good understanding of <strong><a href="https://www.w3schools.com/">web technology</a></strong></li>
<li>A basic understanding of <strong><a href="https://www.vogella.com/tutorials/JUnit/article.html">unit testing</a></strong> and <strong><a href="https://junit.org/">JUnit</a></strong></li>
<li>A thorough understanding of how to <a href="https://github.com/TeamNewPipe/NewPipe/blob/dev/.github/CONTRIBUTING.md#code-contribution">contribute</a> to the <strong>NewPipe project</strong></li>
</ul>
<h3 id="toolsprograms-you-will-need">Tools/Programs You Will Need:</h3>
<ul>
<li>A dev environment/IDE that supports:<ul>
<li><strong><a href="https://git-scm.com/downloads/guis">Git</a></strong></li>
<li><strong><a href="https://adoptium.net/?variant=openjdk8&amp;jvmVariant=hotspot">Java 8</a></strong></li>
<li><strong><a href="https://gradle.org/">Gradle</a></strong></li>
<li><strong><a href="https://junit.org/junit5/">Unit testing</a></strong></li>
<li><a href="https://www.jetbrains.com/idea/">IDEA Community</a> (Strongly recommended, but not required)</li>
</ul>
</li>
<li>A <strong><a href="https://github.com/">Github</a></strong> account</li>
<li>A lot of patience and excitement ;D</li>
</ul>
<p>After making sure all these conditions are provided, fork the <a href="https://github.com/TeamNewPipe/NewPipeExtractor">NewPipeExtractor</a>
using the <a href="https://github.com/TeamNewPipe/NewPipeExtractor#fork-destination-box">fork button</a>.
This is so you have a personal repository to develop on. Next, clone this repository into your local folder in which you want to work in.
Then, import the cloned project into your <a href="https://www.jetbrains.com/help/idea/configuring-projects.html#importing-project">IDE</a>
and <a href="https://www.jetbrains.com/help/idea/performing-tests.html">run it.</a>
If all the checks are green, you did everything right! You can proceed to the next chapter.</p>
<h3 id="importing-the-newpipe-extractor-in-intellij-idea">Importing the NewPipe Extractor in IntelliJ IDEA</h3>
<p>If you use IntelliJ IDEA, you should know the easy way of importing the NewPipe extractor. If you don't, here's how to do it:</p>
<ol>
<li><code>git clone</code> the extractor onto your computer locally.</li>
<li>Start IntelliJ Idea and click <code>Import Project</code>.</li>
<li>Select the root directory of the NewPipe Extractor.</li>
<li>Select "<strong>Import Project from external Model</strong>" and then choose <strong>Gradle</strong>.
<img alt="import from gradle image" src="../img/select_gradle.png" /></li>
<li>In the next window, select "<strong>Use gradle 'wrapper' task configuration</strong>".
<img alt="use gradle 'wrapper' task configuration checkbox" src="../img/select_gradle_wrapper.png" /></li>
</ol>
<h3 id="running-test-in-android-studiointellij-idea">Running "test" in Android Studio/IntelliJ IDEA</h3>
<p>Go to <em>Run</em> &gt; <em>Edit Configurations</em> &gt; <em>Add New Configuration</em> and select "Gradle".
As Gradle Project, select NewPipeExtractor. As a task, add "test". Now save and you should be able to run.</p>
<p><img alt="tests passed on idea" src="../img/prepare_tests_passed.png" /></p>
<h1 id="inclusion-criteria-for-services">Inclusion Criteria for Services</h1>
<p>After creating you own service, you will need to submit it to our <a href="https://github.com/teamnewpipe/newpipeextractor">NewPipeExtractor</a>
repository. However, in order to include your changes, you need to follow these rules:</p>
<ol>
<li>Stick to our <a href="https://github.com/TeamNewPipe/NewPipe/blob/dev/.github/CONTRIBUTING.md#code-contribution">code contribution guidelines</a>.</li>
<li>Do not send services that present content we <a href="#content-that-is-not-permitted">don't allow</a> on NewPipe.</li>
<li>You must be willing to maintain your service after submission.</li>
<li>Be patient and make the requested changes when one of our maintainers rejects your code.</li>
</ol>
<h2 id="content-that-is-permitted">Content That is Permitted</h2>
<ul>
<li>Any content that is not in the <a href="#content-that-is-not-permitted">list of prohibited content</a>.</li>
<li>Any kind of pornography or NSFW content that does not violate US law. However, porn services will not be added to the official NewPipe app.</li>
<li>Advertising, which may need to be approved beforehand.</li>
</ul>
<h2 id="content-that-is-not-permitted">Content That is NOT Permitted</h2>
<ul>
<li>Content that is considered NSFL (Not Safe For Life).</li>
<li>Content that is prohibited by US federal law (Sexualization of minors, any form of violence, violations of human rights, etc).</li>
<li>Copyrighted media, without the consent of the copyright holder/publisher.</li>
</ul>
</div>
</div><footer>
<div class="rst-footer-buttons" role="navigation" aria-label="Footer Navigation">
<a href=".." class="btn btn-neutral float-left" title="Welcome to the NewPipe Development Docs"><span class="icon icon-circle-arrow-left"></span> Previous</a>
<a href="../01_Concept_of_the_extractor/" class="btn btn-neutral float-right" title="Concept of the Extractor">Next <span class="icon icon-circle-arrow-right"></span></a>
</div>
<hr/>
<div role="contentinfo">
<!-- Copyright etc -->
</div>
Built with <a href="https://www.mkdocs.org/">MkDocs</a> using a <a href="https://github.com/readthedocs/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" aria-label="Versions">
<span class="rst-current-version" data-toggle="rst-current-version">
<span><a href=".." style="color: #fcfcfc">&laquo; Previous</a></span>
<span><a href="../01_Concept_of_the_extractor/" style="color: #fcfcfc">Next &raquo;</a></span>
</span>
</div>
<script src="../js/jquery-3.6.0.min.js"></script>
<script>var base_url = "..";</script>
<script src="../js/theme_extra.js"></script>
<script src="../js/theme.js"></script>
<script src="../search/main.js"></script>
<script>
jQuery(function () {
SphinxRtdTheme.Navigation.enable(true);
});
</script>
</body>
</html>