2018-02-22 16:11:04 +00:00
<!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" >
2018-02-22 18:22:22 +00:00
< meta http-equiv = "X-UA-Compatible" content = "IE=edge" >
2018-02-22 16:11:04 +00:00
< meta name = "viewport" content = "width=device-width, initial-scale=1.0" >
< link rel = "shortcut icon" href = "../img/favicon.ico" >
2018-04-08 20:02:44 +00:00
< title > Prepare everything - NewPipe Documentation< / title >
2018-09-08 17:06:35 +00:00
<!-- local fonts -->
2018-02-23 20:18:58 +00:00
< link rel = "stylesheet" href = "../css/local_fonts.css" type = "text/css" / >
2018-02-22 16:11:04 +00:00
< link rel = "stylesheet" href = "../css/theme.css" type = "text/css" / >
< link rel = "stylesheet" href = "../css/theme_extra.css" type = "text/css" / >
2018-09-08 17:06:35 +00:00
<!-- local code syntax highlighting -->
< link rel = "stylesheet" href = "../css/github.min.css" type = "text/css" / >
2018-02-23 20:18:58 +00:00
< link rel = "stylesheet" href = "../css/highlight.css" type = "text/css" / >
2018-02-22 16:11:04 +00:00
< script >
// Current page data
2018-02-22 18:22:22 +00:00
var mkdocs_page_name = "Prepare everything";
var mkdocs_page_input_path = "00_Prepare_everything.md";
2018-09-01 13:48:12 +00:00
var mkdocs_page_url = null;
2018-02-22 16:11:04 +00:00
< / script >
2018-09-01 13:48:12 +00:00
< script src = "../js/jquery-2.1.1.min.js" defer > < / script >
< script src = "../js/modernizr-2.8.3.min.js" defer > < / script >
2018-09-08 17:06:35 +00:00
< script src = "../js/highlight.min.js" > < / script >
2018-09-01 13:48:12 +00:00
< script > hljs . initHighlightingOnLoad ( ) ; < / script >
2018-02-22 16:11:04 +00:00
< / 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" >
2018-04-08 20:02:44 +00:00
< a href = ".." class = "icon icon-home" > NewPipe Documentation< / a >
2018-02-22 16:11:04 +00:00
< div role = "search" >
< form id = "rtd-search-form" class = "wy-form" action = "../search.html" method = "get" >
2018-09-01 13:48:12 +00:00
< input type = "text" name = "q" placeholder = "Search docs" title = "Type search term here" / >
2018-02-22 16:11:04 +00:00
< / form >
< / div >
< / div >
< div class = "wy-menu wy-menu-vertical" data-spy = "affix" role = "navigation" aria-label = "main navigation" >
2018-02-22 18:22:22 +00:00
< ul class = "current" >
2018-02-22 16:11:04 +00:00
2018-02-22 18:22:22 +00:00
< li class = "toctree-l1" >
2018-09-21 20:40:35 +00:00
< a class = "" href = ".." > Welcome to the NewPipe Documentation.< / a >
2018-02-22 18:22:22 +00:00
< / li >
2018-02-22 16:11:04 +00:00
2018-02-22 18:22:22 +00:00
< li class = "toctree-l1 current" >
< a class = "current" href = "./" > Prepare everything< / a >
< ul class = "subnav" >
2018-02-22 16:11:04 +00:00
2018-02-22 18:22:22 +00:00
< li class = "toctree-l2" > < a href = "#prepare-everything" > Prepare everything< / a > < / li >
< ul >
2018-02-22 16:11:04 +00:00
2018-02-22 18:22:22 +00:00
< li > < a class = "toctree-l3" href = "#setup-your-dev-environment" > Setup your dev environment< / a > < / li >
< / ul >
2018-04-08 20:57:31 +00:00
< li class = "toctree-l2" > < a href = "#inclusion-criteria-for-services" > Inclusion criteria for services< / a > < / li >
< ul >
< li > < a class = "toctree-l3" href = "#allowed-content" > Allowed Content< / a > < / li >
< li > < a class = "toctree-l3" href = "#not-allowed-content" > NOT allowed Content< / a > < / li >
< / ul >
2018-02-22 18:22:22 +00:00
< / ul >
< / li >
< li class = "toctree-l1" >
2018-09-01 13:48:12 +00:00
< a class = "" href = "../01_Concept_of_the_extractor/" > Concept of the Extractor< / a >
< / li >
< li class = "toctree-l1" >
< a class = "" href = "../02_Concept_of_LinkHandler/" > Concept of LinkHandler< / a >
2018-02-22 18:22:22 +00:00
< / li >
2018-02-22 16:11:04 +00:00
2018-09-09 15:02:52 +00:00
< li class = "toctree-l1" >
2018-09-11 18:21:55 +00:00
< a class = "" href = "../03_Implement_a_service/" > Implement a service< / a >
< / li >
< li class = "toctree-l1" >
2018-09-09 15:02:52 +00:00
< a class = "" href = "../04_Run_changes_in_App/" > Run the changes in the App< / a >
< / li >
2019-01-12 15:30:56 +00:00
< li class = "toctree-l1" >
< a class = "" href = "../05_documentation/" > Documentation< / a >
< / li >
2018-02-22 16:11:04 +00:00
< / ul >
< / div >
< / 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 >
2018-04-08 20:02:44 +00:00
< a href = ".." > NewPipe Documentation< / a >
2018-02-22 16:11:04 +00:00
< / 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 > » < / li >
2018-02-22 18:22:22 +00:00
< li > Prepare everything< / li >
2018-02-22 16:11:04 +00:00
< li class = "wy-breadcrumbs-aside" >
< / li >
< / ul >
< hr / >
< / div >
< div role = "main" >
< div class = "section" >
< h1 id = "prepare-everything" > Prepare everything< / h1 >
2018-11-14 09:19:30 +00:00
< p > Welcome to the NewPipeExtractor documentation. This tutorial will guide you through the process of creating your own Extractor
service with which NewPipe will gain support for a dedicated streaming service like YouTube, Vimeo or SoundCloud.
The whole documentation consists of this page, which explains the general concept of the NewPipeExtractor, as well as our
< a href = "https://teamnewpipe.github.io/NewPipeExtractor/javadoc/" > Jdoc< / a > setup.< / p >
2018-12-14 08:57:47 +00:00
< p > < strong > IMPORTANT!!!< / strong > this is likely to be the worst documentation you have ever read, so do not hesitate to
2018-11-14 09:19:30 +00:00
< a href = "https://github.com/teamnewpipe/documentation/issues" > report< / a > if
2018-12-14 08:57:47 +00:00
you find any spelling errors, incomplete parts or you simply don't understand something. We are an open community
2018-11-14 09:19:30 +00:00
and are open for everyone to help :)< / p >
2018-02-22 16:11:04 +00:00
< 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 >
< h3 id = "what-you-need-to-know" > What you need to know< / h3 >
< ul >
< li > Basic understanding of < strong > < a href = "https://try.github.io" > git< / a > < / strong > < / li >
2018-11-03 16:03:44 +00:00
< li > Good < strong > < a href = "https://whatpixel.com/best-java-books/" > Java< / a > < / strong > knowledge< / li >
2018-02-22 16:11:04 +00:00
< li > Good understanding of < strong > < a href = "https://www.w3schools.com/" > web technology< / a > < / strong > < / li >
2018-12-14 08:57:47 +00:00
< li > 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 >
2018-02-22 16:11:04 +00:00
< li > Flawless 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 = "what-you-need-to-have" > What you need to have< / 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://www.java.com/en/download/faq/java8.xml" > java 8< / a > < / strong > < / li >
< li > < strong > < a href = "https://gradle.org/" > gradle< / a > < / strong > < / li >
2018-04-09 10:20:10 +00:00
< li > < strong > < a href = "https://junit.org/junit5/" > unit testing< / a > < / strong > < / li >
2018-09-21 20:40:35 +00:00
< li > I highly recommend < a href = "https://www.jetbrains.com/idea/" > IDEA Community< / a > since it has everything we need.< / li >
2018-02-22 16:11:04 +00:00
< / ul >
< / li >
2018-09-21 20:40:35 +00:00
< li > A < strong > < a href = "https://github.com/" > Github< / a > < / strong > account< / li >
< li > A lot of patience and excitement ;D< / li >
2018-02-22 16:11:04 +00:00
< / 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 way you have your own working repository. Now clone this repository into your local folder in which you want to work in.
2018-09-21 20:40:35 +00:00
Next import the cloned project into your < a href = "https://www.jetbrains.com/help/idea/configuring-projects.html#importing-project" > IDE< / a >
2018-02-22 16:11:04 +00:00
and < a href = "https://www.jetbrains.com/help/idea/performing-tests.html" > run< / a > it.
2018-09-01 13:48:12 +00:00
If all the checks are green you did everything right, and you are good to go to move on to the next chapter.< / p >
2019-01-18 15:51:52 +00:00
< h3 id = "importing-the-newpipe-extractor-in-intellij-idea" > Importing the NewPipe Extractor in IntelliJ IDEA< / h3 >
< p > If you use IntelliJ IDEA you might want to know how to import the NewPipe extractor painlessly. This is what you want to do.< / p >
< ol >
< li > < code > git clone< / code > the extractor onto your computer locally.< / li >
< li > Start IntelliJ Idea, and click on < code > Import Project< / code > .< / li >
< li > Select the root directory of the NewPipe Extractor< / li >
< li > Now it's important to select "< strong > Import Project form 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 make sure "< strong > Use grale 'wrapper' task configuration< / strong > " is selected.
< 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 >
2018-09-01 13:48:12 +00:00
< p > Go to < em > run< / em > > < em > edit configurations< / em > > < em > add new configuration< / em > and select "Gradle".
As Gradle Project, select NewPipeExtractor. As task add "test". Now save and you should be able to run.< / p >
2018-11-16 18:23:26 +00:00
< p > < img alt = "tests passed on idea" src = "../img/prepare_tests_passed.png" / > < / p >
2018-04-08 20:57:31 +00:00
< 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 >
2018-04-08 21:02:26 +00:00
repository. However in order to include your changes you need to follow these rules:< / p >
2018-04-08 20:57:31 +00:00
< 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 = "#not-allowed-content" > don't allow< / a > on NewPipe.< / li >
< li > You need to be willing to keep on maintaining your service after submission.< / li >
< li > Be patient and do the requested changes when one of our maintainers rejects your code.< / li >
< / ol >
< h2 id = "allowed-content" > Allowed Content< / h2 >
< ul >
< li > Basically anything except < a href = "#not-allowed-content" > NOT allowed content< / a > .< / li >
< li > Any kind of porn/NSFW that is allowed according to the < a href = "https://www.justice.gov/archive/opa/pr/2003/April/03_ag_266.htm" > US Porn act< / a > .< / li >
2018-12-14 08:57:47 +00:00
< li > Advertisement (may be handled specially though)< / li >
2018-04-08 20:57:31 +00:00
< / ul >
< h2 id = "not-allowed-content" > NOT allowed Content< / h2 >
< ul >
2018-12-14 08:57:47 +00:00
< li > NSFL (Not Safe For Life)< / li >
2018-04-08 20:57:31 +00:00
< li > Porn that is not allowed according to < a href = "https://www.justice.gov/archive/opa/pr/2003/April/03_ag_266.htm" > US Porn act< / a > .< / li >
< li > Any form of violence< / li >
< li > Child pornography< / li >
< li > Media that harms others< / li >
2018-05-14 11:30:39 +00:00
< li > Media that violates human rights< / li >
2018-04-08 20:57:31 +00:00
< li > Copyright infringement/pirated media< / li >
< / ul >
2018-02-22 16:11:04 +00:00
< / div >
< / div >
< footer >
< div class = "rst-footer-buttons" role = "navigation" aria-label = "footer navigation" >
2018-09-01 13:48:12 +00:00
< 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 >
2018-02-22 18:22:22 +00:00
2018-02-22 16:11:04 +00:00
2018-09-21 20:40:35 +00:00
< a href = ".." class = "btn btn-neutral" title = "Welcome to the NewPipe Documentation." > < span class = "icon icon-circle-arrow-left" > < / span > Previous< / a >
2018-02-22 16:11:04 +00:00
< / 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 >
2018-02-22 18:22:22 +00:00
2018-02-22 16:11:04 +00:00
< / div >
< / div >
< / section >
< / div >
2018-02-22 18:22:22 +00:00
< div class = "rst-versions" role = "note" style = "cursor: pointer" >
2018-02-22 16:11:04 +00:00
< span class = "rst-current-version" data-toggle = "rst-current-version" >
< span > < a href = ".." style = "color: #fcfcfc;" > « Previous< / a > < / span >
2018-02-24 21:17:40 +00:00
< span style = "margin-left: 15px" > < a href = "../01_Concept_of_the_extractor/" style = "color: #fcfcfc" > Next » < / a > < / span >
2018-02-22 18:22:22 +00:00
2018-02-22 16:11:04 +00:00
< / span >
< / div >
2018-02-22 18:22:22 +00:00
< script > var base _url = '..' ; < / script >
2018-09-01 13:48:12 +00:00
< script src = "../js/theme.js" defer > < / script >
< script src = "../search/main.js" defer > < / script >
2018-02-22 16:11:04 +00:00
< / body >
< / html >