Skip to content
Permalink
Browse files

Merge pull request #1825 from TeamNewPipe/release_0.14.2

Release 0.14.2
  • Loading branch information...
theScrabi committed Oct 27, 2018
2 parents 05f8ee9 + d82274f commit fba0a8036bdfe046d2e10d3aa7011fc08592cb25
Showing with 4,632 additions and 1,473 deletions.
  1. +3 −3 .travis.yml
  2. +42 −34 README.md
  3. +36 −38 app/build.gradle
  4. +2 −1 app/src/main/AndroidManifest.xml
  5. +14 −5 app/src/main/java/org/schabi/newpipe/App.java
  6. +1 −3 app/src/main/java/org/schabi/newpipe/BaseFragment.java
  7. +5 −4 app/src/main/java/org/schabi/newpipe/Downloader.java
  8. +0 −3 app/src/main/java/org/schabi/newpipe/MainActivity.java
  9. +1 −1 app/src/main/java/org/schabi/newpipe/ReCaptchaActivity.java
  10. +11 −12 app/src/main/java/org/schabi/newpipe/RouterActivity.java
  11. +4 −5 app/src/main/java/org/schabi/newpipe/about/LicenseFragmentHelper.java
  12. +2 −2 app/src/main/java/org/schabi/newpipe/database/BasicDAO.java
  13. +0 −1 app/src/main/java/org/schabi/newpipe/database/history/dao/SearchHistoryDAO.java
  14. +0 −1 app/src/main/java/org/schabi/newpipe/database/history/dao/StreamHistoryDAO.java
  15. +0 −2 app/src/main/java/org/schabi/newpipe/database/playlist/dao/PlaylistDAO.java
  16. +0 −1 app/src/main/java/org/schabi/newpipe/database/playlist/dao/PlaylistStreamDAO.java
  17. +0 −2 app/src/main/java/org/schabi/newpipe/database/playlist/model/PlaylistEntity.java
  18. +0 −1 app/src/main/java/org/schabi/newpipe/database/playlist/model/PlaylistRemoteEntity.java
  19. +0 −2 app/src/main/java/org/schabi/newpipe/database/stream/dao/StreamDAO.java
  20. +4 −4 app/src/main/java/org/schabi/newpipe/download/DeleteDownloadManager.java
  21. +1 −1 app/src/main/java/org/schabi/newpipe/download/DownloadDialog.java
  22. +0 −1 app/src/main/java/org/schabi/newpipe/fragments/BaseStateFragment.java
  23. +0 −1 app/src/main/java/org/schabi/newpipe/fragments/BlankFragment.java
  24. +2 −2 app/src/main/java/org/schabi/newpipe/fragments/detail/StackItem.java
  25. +58 −24 app/src/main/java/org/schabi/newpipe/fragments/detail/VideoDetailFragment.java
  26. +60 −3 app/src/main/java/org/schabi/newpipe/fragments/list/BaseListFragment.java
  27. +0 −4 app/src/main/java/org/schabi/newpipe/fragments/list/BaseListInfoFragment.java
  28. +1 −4 app/src/main/java/org/schabi/newpipe/fragments/list/channel/ChannelFragment.java
  29. +1 −14 app/src/main/java/org/schabi/newpipe/fragments/list/kiosk/KioskFragment.java
  30. +0 −2 app/src/main/java/org/schabi/newpipe/fragments/list/playlist/PlaylistFragment.java
  31. +6 −9 app/src/main/java/org/schabi/newpipe/fragments/list/search/SearchFragment.java
  32. +1 −1 app/src/main/java/org/schabi/newpipe/info_list/InfoItemBuilder.java
  33. +0 −1 app/src/main/java/org/schabi/newpipe/info_list/InfoItemDialog.java
  34. +31 −3 app/src/main/java/org/schabi/newpipe/info_list/InfoListAdapter.java
  35. +13 −0 app/src/main/java/org/schabi/newpipe/info_list/holder/ChannelGridInfoItemHolder.java
  36. +7 −0 app/src/main/java/org/schabi/newpipe/info_list/holder/ChannelMiniInfoItemHolder.java
  37. +13 −0 app/src/main/java/org/schabi/newpipe/info_list/holder/PlaylistGridInfoItemHolder.java
  38. +13 −0 app/src/main/java/org/schabi/newpipe/info_list/holder/StreamGridInfoItemHolder.java
  39. +65 −3 app/src/main/java/org/schabi/newpipe/local/BaseLocalListFragment.java
  40. +1 −1 app/src/main/java/org/schabi/newpipe/local/LocalItemBuilder.java
  41. +36 −6 app/src/main/java/org/schabi/newpipe/local/LocalItemListAdapter.java
  42. +15 −1 app/src/main/java/org/schabi/newpipe/local/dialog/PlaylistDialog.java
  43. +0 −2 app/src/main/java/org/schabi/newpipe/local/feed/FeedFragment.java
  44. +0 −1 app/src/main/java/org/schabi/newpipe/local/history/HistoryEntryAdapter.java
  45. +0 −1 app/src/main/java/org/schabi/newpipe/local/history/HistoryRecordManager.java
  46. +1 −2 app/src/main/java/org/schabi/newpipe/local/history/StatisticsPlaylistFragment.java
  47. +13 −0 app/src/main/java/org/schabi/newpipe/local/holder/LocalPlaylistGridItemHolder.java
  48. +4 −0 app/src/main/java/org/schabi/newpipe/local/holder/LocalPlaylistItemHolder.java
  49. +13 −0 app/src/main/java/org/schabi/newpipe/local/holder/LocalPlaylistStreamGridItemHolder.java
  50. +13 −0 app/src/main/java/org/schabi/newpipe/local/holder/LocalStatisticStreamGridItemHolder.java
  51. +11 −3 app/src/main/java/org/schabi/newpipe/local/holder/LocalStatisticStreamItemHolder.java
  52. +13 −0 app/src/main/java/org/schabi/newpipe/local/holder/RemotePlaylistGridItemHolder.java
  53. +4 −0 app/src/main/java/org/schabi/newpipe/local/holder/RemotePlaylistItemHolder.java
  54. +5 −1 app/src/main/java/org/schabi/newpipe/local/playlist/LocalPlaylistFragment.java
  55. +148 −5 app/src/main/java/org/schabi/newpipe/local/subscription/SubscriptionFragment.java
  56. +4 −4 app/src/main/java/org/schabi/newpipe/local/subscription/SubscriptionService.java
  57. +8 −8 app/src/main/java/org/schabi/newpipe/local/subscription/services/BaseImportExportService.java
  58. +10 −6 app/src/main/java/org/schabi/newpipe/local/subscription/services/SubscriptionsImportService.java
  59. +9 −2 app/src/main/java/org/schabi/newpipe/player/BasePlayer.java
  60. +41 −11 app/src/main/java/org/schabi/newpipe/player/MainVideoPlayer.java
  61. +1 −2 app/src/main/java/org/schabi/newpipe/player/PopupVideoPlayer.java
  62. +11 −6 app/src/main/java/org/schabi/newpipe/player/VideoPlayer.java
  63. +4 −4 app/src/main/java/org/schabi/newpipe/player/helper/AudioReactor.java
  64. +0 −5 app/src/main/java/org/schabi/newpipe/player/helper/CacheFactory.java
  65. +9 −19 app/src/main/java/org/schabi/newpipe/player/helper/PlaybackParameterDialog.java
  66. +15 −7 app/src/main/java/org/schabi/newpipe/player/helper/PlayerHelper.java
  67. +1 −1 app/src/main/java/org/schabi/newpipe/player/mediasession/PlayQueueNavigator.java
  68. +1 −1 app/src/main/java/org/schabi/newpipe/player/playback/BasePlayerMediaSession.java
  69. +1 −3 app/src/main/java/org/schabi/newpipe/player/playback/CustomTrackSelector.java
  70. +4 −5 app/src/main/java/org/schabi/newpipe/player/playback/MediaSourceManager.java
  71. +0 −2 app/src/main/java/org/schabi/newpipe/player/playback/PlaybackListener.java
  72. +3 −3 app/src/main/java/org/schabi/newpipe/player/playqueue/AbstractInfoPlayQueue.java
  73. +0 −2 app/src/main/java/org/schabi/newpipe/player/playqueue/PlayQueueItemBuilder.java
  74. +0 −2 app/src/main/java/org/schabi/newpipe/player/playqueue/PlayQueueItemHolder.java
  75. +1 −2 app/src/main/java/org/schabi/newpipe/report/AcraReportSender.java
  76. +8 −16 app/src/main/java/org/schabi/newpipe/report/ErrorActivity.java
  77. +1 −2 app/src/main/java/org/schabi/newpipe/settings/AppearanceSettingsFragment.java
  78. +1 −1 app/src/main/java/org/schabi/newpipe/settings/BasePreferenceFragment.java
  79. +23 −14 app/src/main/java/org/schabi/newpipe/settings/ContentSettingsFragment.java
  80. +0 −9 app/src/main/java/org/schabi/newpipe/settings/HistorySettingsFragment.java
  81. +8 −11 app/src/main/java/org/schabi/newpipe/settings/SelectChannelFragment.java
  82. +10 −11 app/src/main/java/org/schabi/newpipe/settings/SelectKioskFragment.java
  83. +10 −16 app/src/main/java/org/schabi/newpipe/util/ExtractorHelper.java
  84. +8 −12 app/src/main/java/org/schabi/newpipe/util/InfoCache.java
  85. +3 −4 app/src/main/java/org/schabi/newpipe/util/ListHelper.java
  86. +14 −1 app/src/main/java/org/schabi/newpipe/util/Localization.java
  87. +0 −1 app/src/main/java/org/schabi/newpipe/util/NavigationHelper.java
  88. +0 −1 app/src/main/java/org/schabi/newpipe/util/StateSaver.java
  89. +2 −2 app/src/main/java/org/schabi/newpipe/util/StreamItemAdapter.java
  90. +0 −1 app/src/main/java/org/schabi/newpipe/util/ZipHelper.java
  91. +1 −1 app/src/main/java/org/schabi/newpipe/views/CollapsibleView.java
  92. +1 −1 app/src/main/java/us/shandian/giga/get/DownloadManagerImpl.java
  93. +4 −4 app/src/main/java/us/shandian/giga/get/DownloadMission.java
  94. +3 −3 app/src/main/java/us/shandian/giga/get/DownloadRunnable.java
  95. +1 −1 app/src/main/java/us/shandian/giga/service/DownloadManagerService.java
  96. +9 −9 app/src/main/java/us/shandian/giga/ui/adapter/MissionAdapter.java
  97. +2 −1 app/src/main/java/us/shandian/giga/ui/common/ProgressDrawable.java
  98. +11 −5 app/src/main/java/us/shandian/giga/ui/fragment/MissionsFragment.java
  99. +1 −3 app/src/main/java/us/shandian/giga/util/Utility.java
  100. +581 −0 app/src/main/res/layout-large-land/activity_main_player.xml
  101. +491 −0 app/src/main/res/layout-large-land/fragment_video_detail.xml
  102. +8 −5 app/src/main/res/layout-v21/drawer_header.xml
  103. +2 −1 app/src/main/res/layout/activity_error.xml
  104. +8 −5 app/src/main/res/layout/drawer_header.xml
  105. +2 −1 app/src/main/res/layout/fragment_about.xml
  106. +0 −1 app/src/main/res/layout/fragment_subscription.xml
  107. +2 −1 app/src/main/res/layout/item_search_history.xml
  108. +2 −1 app/src/main/res/layout/item_software_component.xml
  109. +48 −0 app/src/main/res/layout/list_channel_grid_item.xml
  110. +72 −0 app/src/main/res/layout/list_playlist_grid_item.xml
  111. +69 −0 app/src/main/res/layout/list_stream_grid_item.xml
  112. +84 −0 app/src/main/res/layout/list_stream_playlist_grid_item.xml
  113. +4 −2 app/src/main/res/layout/mission_item.xml
  114. +35 −41 app/src/main/res/layout/mission_item_linear.xml
  115. +2 −1 app/src/main/res/layout/select_channel_item.xml
  116. +4 −2 app/src/main/res/layout/select_kiosk_item.xml
  117. +3 −0 app/src/main/res/menu/download_menu.xml
  118. +3 −3 app/src/main/res/menu/menu_videooptions.xml
  119. +28 −28 app/src/main/res/values-ar/strings.xml
  120. +1 −1 app/src/main/res/values-b+ast/strings.xml
  121. +1 −1 app/src/main/res/values-be/strings.xml
  122. +3 −2 app/src/main/res/values-bg/strings.xml
  123. +1 −1 app/src/main/res/values-bn-rBD/strings.xml
  124. +1 −1 app/src/main/res/values-ca/strings.xml
  125. +18 −11 app/src/main/res/values-cmn/strings.xml
  126. +32 −5 app/src/main/res/values-cs/strings.xml
  127. +2 −2 app/src/main/res/values-de/strings.xml
  128. +6 −6 app/src/main/res/values-el/strings.xml
  129. +1 −1 app/src/main/res/values-eo/strings.xml
  130. +1 −1 app/src/main/res/values-es/strings.xml
  131. +1 −1 app/src/main/res/values-et/strings.xml
  132. +1 −1 app/src/main/res/values-eu/strings.xml
  133. +19 −2 app/src/main/res/values-fa/strings.xml
  134. +196 −12 app/src/main/res/values-fi/strings.xml
  135. +6 −8 app/src/main/res/values-fr/strings.xml
  136. +464 −0 app/src/main/res/values-gl/strings.xml
  137. +1 −1 app/src/main/res/values-he/strings.xml
  138. +5 −5 app/src/main/res/values-hi/strings.xml
  139. +109 −4 app/src/main/res/values-hr/strings.xml
  140. +267 −27 app/src/main/res/values-hu/strings.xml
  141. +1 −1 app/src/main/res/values-id/strings.xml
  142. +4 −4 app/src/main/res/values-it/strings.xml
  143. +116 −38 app/src/main/res/values-ja/strings.xml
  144. +46 −21 app/src/main/res/values-ko/strings.xml
  145. +1 −1 app/src/main/res/values-lt/strings.xml
  146. +1 −1 app/src/main/res/values-mk/strings.xml
  147. +3 −3 app/src/main/res/values-nb-rNO/strings.xml
  148. +1 −1 app/src/main/res/values-nl-rBE/strings.xml
  149. +96 −96 app/src/main/res/values-nl/strings.xml
  150. +12 −2 app/src/main/res/values-pa/strings.xml
  151. +17 −3 app/src/main/res/values-pl/strings.xml
  152. +3 −3 app/src/main/res/values-pt-rBR/strings.xml
  153. +39 −16 app/src/main/res/values-pt/strings.xml
  154. +1 −1 app/src/main/res/values-ro/strings.xml
  155. +8 −2 app/src/main/res/values-ru/strings.xml
  156. +29 −18 app/src/main/res/values-sk/strings.xml
  157. +3 −2 app/src/main/res/values-sl/strings.xml
  158. +1 −1 app/src/main/res/values-sq/strings.xml
  159. +1 −1 app/src/main/res/values-sr/strings.xml
  160. +8 −8 app/src/main/res/values-sv/strings.xml
  161. +1 −1 app/src/main/res/values-te/strings.xml
  162. +10 −10 app/src/main/res/values-tr/strings.xml
  163. +8 −4 app/src/main/res/values-uk/strings.xml
  164. +296 −24 app/src/main/res/values-vi/strings.xml
  165. +1 −1 app/src/main/res/values-zh-rCN/strings.xml
  166. +8 −8 app/src/main/res/values-zh-rHK/strings.xml
  167. +100 −100 app/src/main/res/values-zh-rTW/strings.xml
  168. +2 −0 app/src/main/res/values/dimens.xml
  169. +64 −48 app/src/main/res/values/settings_keys.xml
  170. +72 −65 app/src/main/res/values/strings.xml
  171. +8 −0 app/src/main/res/xml/appearance_settings.xml
  172. +2 −4 app/src/main/res/xml/content_settings.xml
  173. +1 −1 app/src/main/res/xml/provider_paths.xml
  174. +9 −3 app/src/main/res/xml/video_audio_settings.xml
  175. +1 −1 app/src/test/java/org/schabi/newpipe/local/subscription/services/ImportExportJsonHelperTest.java
  176. +1 −1 app/src/test/java/org/schabi/newpipe/report/ErrorActivityTest.java
  177. +12 −12 app/src/test/java/org/schabi/newpipe/util/ListHelperTest.java
  178. +9 −9 app/src/test/java/org/schabi/newpipe/util/QuadraticSliderStrategyTest.java
  179. +9 −9 app/src/test/java/us/shandian/giga/get/DownloadManagerImplTest.java
  180. +6 −19 assets/BETA_new_pipe_icon_5.svg
  181. +1 −1 assets/NP logo v2.svg
  182. +6 −18 assets/buddy_channel_item.svg
  183. +5 −16 assets/budy.svg
  184. +7 −19 assets/channel_banner_desktop.svg
  185. +7 −19 assets/channel_banner_mobild.svg
  186. +4 −15 assets/dummi_thumbnail.svg
  187. +5 −16 assets/dummi_thumbnail_backup.svg
  188. +5 −16 assets/dummi_thumbnail_playlist.svg
  189. +5 −16 assets/dummi_thumbnail_playlist_background.svg
  190. +6 −18 assets/gruese_die_gema.svg
  191. +6 −17 assets/ic_play_circle_transparent.svg
  192. +6 −19 assets/ic_play_circle_transparent_80px.svg
  193. +7 −20 assets/new_pipe_icon_4.svg
  194. +6 −19 assets/new_pipe_icon_5.svg
  195. +7 −20 assets/new_pipe_icon_5_beta2.svg
  196. +5 −16 assets/new_play_arrow.svg
  197. +4 −15 assets/not_available_monkey.svg
  198. +5 −16 assets/service.svg
  199. +3 −3 build.gradle
  200. +19 −0 fastlane/metadata/android/en-US/changelogs/69.txt
  201. BIN fastlane/metadata/android/en-US/images/phoneScreenshots/shot_10.png
  202. BIN fastlane/metadata/android/en-US/images/phoneScreenshots/shot_6.png
  203. BIN fastlane/metadata/android/en-US/images/tenInchScreenshots/shot_11.png
  204. BIN fastlane/metadata/android/en-US/images/tenInchScreenshots/shot_12.png
@@ -5,13 +5,13 @@ android:
components:
# The BuildTools version used by NewPipe
- tools
- build-tools-27.0.3
- build-tools-28.0.3

# The SDK version used to compile NewPipe
- android-27
- android-28

before_install:
- yes | sdkmanager "platforms;android-27"
- yes | sdkmanager "platforms;android-28"
script: ./gradlew -Dorg.gradle.jvmargs=-Xmx1536m assembleDebug lintDebug testDebugUnitTest

licenses:
@@ -1,21 +1,22 @@
<p align="center"><a href="https://newpipe.schabi.org"><img src="assets/new_pipe_icon_5.png" width="150"/></a></p>
<p align="center"><a href="https://newpipe.schabi.org"><img src="assets/new_pipe_icon_5.png" width="150"></a></p>
<h2 align="center"><b>NewPipe</b></h2>
<h4 align="center">A free lightweight YouTube frontend for Android.</h4>
<p align="center"><a href="https://f-droid.org/packages/org.schabi.newpipe/"><img src="https://f-droid.org/wiki/images/0/06/F-Droid-button_get-it-on.png"/></a></p>
<h4 align="center">A libre lightweight streaming frontend for Android.</h4>
<p align="center"><a href="https://f-droid.org/packages/org.schabi.newpipe/"><img src="https://f-droid.org/wiki/images/0/06/F-Droid-button_get-it-on.png"></a></p>

<p align="center">
<a href="https://github.com/TeamNewPipe/NewPipe" alt="GitHub release"><img src="https://img.shields.io/github/release/TeamNewPipe/NewPipe.svg" /></a>
<a href="https://www.gnu.org/licenses/gpl-3.0" alt="License: GPL v3"><img src="https://img.shields.io/badge/License-GPL%20v3-blue.svg" /></a>
<a href="https://travis-ci.org/TeamNewPipe/NewPipe" alt="Build Status"><img src="https://travis-ci.org/TeamNewPipe/NewPipe.svg" /></a>
<a href="https://hosted.weblate.org/engage/NewPipe/" alt="Translation Status"><img src="https://hosted.weblate.org/widgets/NewPipe/-/svg-badge.svg" /></a>
<a href="http://webchat.freenode.net/?channels=%23newpipe" alt="IRC channel: #newpipe"><img src="https://img.shields.io/badge/IRC%20chat-%23newpipe-brightgreen.svg" /></a>
<a href="https://www.bountysource.com/teams/newpipe" alt="Bountysource bounties"><img src="https://img.shields.io/bountysource/team/newpipe/activity.svg?colorB=cd201f"/></a>
<a href="https://github.com/TeamNewPipe/NewPipe" alt="GitHub release"><img src="https://img.shields.io/github/release/TeamNewPipe/NewPipe.svg" ></a>
<a href="https://www.gnu.org/licenses/gpl-3.0" alt="License: GPLv3"><img src="https://img.shields.io/badge/License-GPL%20v3-blue.svg"></a>
<a href="https://travis-ci.org/TeamNewPipe/NewPipe" alt="Build Status"><img src="https://travis-ci.org/TeamNewPipe/NewPipe.svg"></a>
<a href="https://hosted.weblate.org/engage/NewPipe/" alt="Translation Status"><img src="https://hosted.weblate.org/widgets/NewPipe/-/svg-badge.svg"></a>
<a href="http://webchat.freenode.net/?channels=%23newpipe" alt="IRC channel: #newpipe"><img src="https://img.shields.io/badge/IRC%20chat-%23newpipe-brightgreen.svg"></a>
<a href="https://www.bountysource.com/teams/newpipe" alt="Bountysource bounties"><img src="https://img.shields.io/bountysource/team/newpipe/activity.svg?colorB=cd201f"></a>
</p>
<hr />
<hr>
<p align="center"><a href="#screenshots">Screenshots</a> &bull; <a href="#description">Description</a> &bull; <a href="#features">Features</a> &bull; <a href="#contribution">Contribution</a> &bull; <a href="#donate">Donate</a> &bull; <a href="#license">License</a></p>
<p align="center"><a href="https://newpipe.schabi.org">Website</a> &bull; <a href="https://newpipe.schabi.org/blog/">Blog</a> &bull; <a href="https://newpipe.schabi.org/press/">Press</a></p>
<hr />
WARNING: PUTTING NEWPIPE OR ANY FORK OF IT INTO GOOGLE PLAYSTORE VIOLATES THEIR TERMS OF CONDITIONS.
<hr>

<b>WARNING: PUTTING NEWPIPE OR ANY FORK OF IT INTO GOOGLE PLAYSTORE VIOLATES THEIR TERMS OF CONDITIONS.</b>

## Screenshots

@@ -29,46 +30,48 @@ WARNING: PUTTING NEWPIPE OR ANY FORK OF IT INTO GOOGLE PLAYSTORE VIOLATES THEIR
[<img src="fastlane/metadata/android/en-US/images/phoneScreenshots/shot_8.png" width=160>](fastlane/metadata/android/en-US/images/phoneScreenshots/shot_8.png)
[<img src="fastlane/metadata/android/en-US/images/phoneScreenshots/shot_9.png" width=160>](fastlane/metadata/android/en-US/images/phoneScreenshots/shot_9.png)
[<img src="fastlane/metadata/android/en-US/images/phoneScreenshots/shot_10.png" width=160>](fastlane/metadata/android/en-US/images/phoneScreenshots/shot_10.png)
[<img src="fastlane/metadata/android/en-US/images/tenInchScreenshots/shot_11.png" width=405>](fastlane/metadata/android/en-US/images/tenInchScreenshots/shot_11.png)
[<img src="fastlane/metadata/android/en-US/images/tenInchScreenshots/shot_12.png" width=405>](fastlane/metadata/android/en-US/images/tenInchScreenshots/shot_12.png)

## Description

NewPipe does not use any Google framework libraries, or the YouTube API. It only parses the website in order to gain the information it needs. Therefore this app can be used on devices without Google Services installed. Also, you don't need a YouTube account to use NewPipe, and it's FLOSS.
NewPipe does not use any Google framework libraries, nor the YouTube API. Websites are only parsed to fetch required info, so this app can be used on devices without Google services installed. Also, you don't need a YouTube account to use NewPipe, which is copylefted libre software.

### Features

* Search videos
* Display general information about a video
* Display general info about videos
* Watch YouTube videos
* Listen to YouTube videos
* Popup mode (floating player)
* Select the streaming player to watch the video with
* Download videos
* Select streaming player to watch video with
* Download videos
* Download audio only
* Open a video in Kodi
* Show Next/Related videos
* Show next/related videos
* Search YouTube in a specific language
* Watch/Block age restricted material
* Display general information about channels
* Display general info about channels
* Search channels
* Watch videos from a channel
* Orbot/Tor support (not yet directly)
* 1080p/2k/4k support
* 1080p/2K/4K support
* View history
* Subscribe to channels
* Search history
* Search/Watch Playlists
* Watch as queues Playlists
* Queuing videos
* Search/watch playlists
* Watch as enqueued playlists
* Enqueue videos
* Local playlists
* Subtitles
* Multi-service support (eg. SoundCloud in NewPipe Beta)
* Multi-service support (e.g. SoundCloud \[beta\])
* Livestream support

### Coming Features

* Livestream support
* Cast to UPnP and Cast
* Show comments
* ... and many more
* and many more

## Contribution
Whether you have ideas, translations, design changes, code cleaning, or real heavy code changes, help is always welcome.
@@ -77,26 +80,31 @@ The more is done the better it gets!
If you'd like to get involved, check our [contribution notes](.github/CONTRIBUTING.md).

## Donate
If you like NewPipe we'd be happy about a donation. You can either donate via Bitcoin, Bountysource or Liberapay. For further information about donating to NewPipe, please visit our [website](https://newpipe.schabi.org/donate).
If you like NewPipe we'd be happy about a donation. You can either send bitcoin or donate via Bountysource or Liberapay. For further info on donating to NewPipe, please visit our [website](https://newpipe.schabi.org/donate).

<table>
<tr>
<td><img src="https://bitcoin.org/img/icons/logotop.svg" alt="Bitcoin" /></td>
<td><img src="assets/bitcoin_qr_code.png" alt="Bitcoin QR Code" width="100px"/></td>
<td><img src="https://bitcoin.org/img/icons/logotop.svg" alt="Bitcoin"></td>
<td><img src="assets/bitcoin_qr_code.png" alt="Bitcoin QR code" width="100px"></td>
<td><samp>16A9J59ahMRqkLSZjhYj33n9j3fMztFxnh</samp></td>
</tr>
<tr>
<td><a href="https://liberapay.com/TeamNewPipe/"><img src="https://upload.wikimedia.org/wikipedia/commons/2/27/Liberapay_logo_v2_white-on-yellow.svg" alt="Liberapay" width="80px" /></a></td>
<td><a href="https://liberapay.com/TeamNewPipe/"><img src="assets/liberapay_qr_code.png" alt="Visit NewPipe at liberapay.com" width="100px"/></a></td>
<td><a href="https://liberapay.com/TeamNewPipe/donate"><img src="assets/liberapay_donate_button.svg" alt="Donate via Liberapay" height="35px" /></a></td>
<td><a href="https://liberapay.com/TeamNewPipe/"><img src="https://upload.wikimedia.org/wikipedia/commons/2/27/Liberapay_logo_v2_white-on-yellow.svg" alt="Liberapay" width="80px" ></a></td>
<td><a href="https://liberapay.com/TeamNewPipe/"><img src="assets/liberapay_qr_code.png" alt="Visit NewPipe at liberapay.com" width="100px"></a></td>
<td><a href="https://liberapay.com/TeamNewPipe/donate"><img src="assets/liberapay_donate_button.svg" alt="Donate via Liberapay" height="35px"></a></td>
</tr>
<tr>
<td><a href="https://www.bountysource.com/teams/newpipe"><img src="https://upload.wikimedia.org/wikipedia/commons/thumb/2/22/Bountysource.png/320px-Bountysource.png" alt="Bountysource" width="190px" /></a></td>
<td><a href="https://www.bountysource.com/teams/newpipe"><img src="assets/bountysource_qr_code.png" alt="Visit NewPipe at bountysource.com" width="100px"/></a></td>
<td><a href="https://www.bountysource.com/teams/newpipe/issues"><img src="https://img.shields.io/bountysource/team/newpipe/activity.svg?colorB=cd201f" height="30px" alt="Check out how many bounties you can earn." /></a></td>
<td><a href="https://www.bountysource.com/teams/newpipe"><img src="https://upload.wikimedia.org/wikipedia/commons/thumb/2/22/Bountysource.png/320px-Bountysource.png" alt="Bountysource" width="190px"></a></td>
<td><a href="https://www.bountysource.com/teams/newpipe"><img src="assets/bountysource_qr_code.png" alt="Visit NewPipe at bountysource.com" width="100px"></a></td>
<td><a href="https://www.bountysource.com/teams/newpipe/issues"><img src="https://img.shields.io/bountysource/team/newpipe/activity.svg?colorB=cd201f" height="30px" alt="Check out how many bounties you can earn."></a></td>
</tr>
</table>

## Privacy Policy

The NewPipe project aims to provide a private, anonymous experience for using media web services.
Therefore, the app does not collect any data without your consent. NewPipe's privacy policy explains in detail what data is sent and stored when you send a crash report, or comment in our blog. You can find the document [here](https://newpipe.schabi.org/legal/privacy/).

## License
[![GNU GPLv3 Image](https://www.gnu.org/graphics/gplv3-127x51.png)](http://www.gnu.org/licenses/gpl-3.0.en.html)

@@ -1,15 +1,15 @@
apply plugin: 'com.android.application'

android {
compileSdkVersion 27
buildToolsVersion '27.0.3'
compileSdkVersion 28
buildToolsVersion '28.0.3'

defaultConfig {
applicationId "org.schabi.newpipe"
minSdkVersion 15
targetSdkVersion 27
versionCode 68
versionName "0.14.1"
targetSdkVersion 28
versionCode 69
versionName "0.14.2"

testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
vectorDrawables.useSupportLibrary = true
@@ -22,7 +22,6 @@ android {
}
debug {
multiDexEnabled true

debuggable true
applicationIdSuffix ".debug"
}
@@ -41,62 +40,61 @@ android {
}

ext {
supportLibVersion = '27.1.1'
exoPlayerLibVersion = '2.8.2'
supportLibVersion = '28.0.0'
exoPlayerLibVersion = '2.8.4' //2.9.0
roomDbLibVersion = '1.1.1'
leakCanaryLibVersion = '1.5.4'
okHttpLibVersion = '3.10.0'
leakCanaryLibVersion = '1.5.4' //1.6.1
okHttpLibVersion = '3.11.0'
icepickLibVersion = '3.2.0'
stethoLibVersion = '1.5.0'
}

dependencies {
androidTestImplementation('com.android.support.test.espresso:espresso-core:2.2.2') {
androidTestImplementation('com.android.support.test.espresso:espresso-core:3.0.2', {
exclude module: 'support-annotations'
}
})

implementation 'com.github.TeamNewPipe:NewPipeExtractor:66c3c3f45241d4b0c909'
implementation 'com.github.TeamNewPipe:NewPipeExtractor:32d316330c26'

testImplementation 'junit:junit:4.12'
testImplementation 'org.mockito:mockito-core:2.8.9'
testImplementation 'org.mockito:mockito-core:2.23.0'

implementation "com.android.support:appcompat-v7:$supportLibVersion"
implementation "com.android.support:support-v4:$supportLibVersion"
implementation "com.android.support:design:$supportLibVersion"
implementation "com.android.support:recyclerview-v7:$supportLibVersion"
implementation "com.android.support:preference-v14:$supportLibVersion"
implementation "com.android.support:appcompat-v7:${supportLibVersion}"
implementation "com.android.support:support-v4:${supportLibVersion}"
implementation "com.android.support:design:${supportLibVersion}"
implementation "com.android.support:recyclerview-v7:${supportLibVersion}"
implementation "com.android.support:preference-v14:${supportLibVersion}"
implementation "com.android.support:cardview-v7:${supportLibVersion}"
implementation 'com.android.support.constraint:constraint-layout:1.1.3'

implementation 'ch.acra:acra:4.9.2'
implementation 'ch.acra:acra:4.9.2' //4.11

implementation 'com.nostra13.universalimageloader:universal-image-loader:1.9.5'
implementation 'de.hdodenhof:circleimageview:2.2.0'
implementation 'com.github.nirhart:ParallaxScroll:dd53d1f9d1'
implementation 'com.nononsenseapps:filepicker:4.2.1'

implementation "com.google.android.exoplayer:exoplayer:$exoPlayerLibVersion"
implementation "com.google.android.exoplayer:extension-mediasession:$exoPlayerLibVersion"
implementation "com.google.android.exoplayer:exoplayer:${exoPlayerLibVersion}"
implementation "com.google.android.exoplayer:extension-mediasession:${exoPlayerLibVersion}"

debugImplementation "com.facebook.stetho:stetho:$stethoLibVersion"
debugImplementation "com.facebook.stetho:stetho-urlconnection:$stethoLibVersion"
debugImplementation "com.facebook.stetho:stetho:${stethoLibVersion}"
debugImplementation "com.facebook.stetho:stetho-urlconnection:${stethoLibVersion}"
debugImplementation 'com.android.support:multidex:1.0.3'

implementation 'io.reactivex.rxjava2:rxjava:2.1.14'
implementation 'io.reactivex.rxjava2:rxandroid:2.0.2'
implementation 'io.reactivex.rxjava2:rxjava:2.2.2'
implementation 'io.reactivex.rxjava2:rxandroid:2.1.0'
implementation 'com.jakewharton.rxbinding2:rxbinding:2.1.1'

implementation "android.arch.persistence.room:runtime:$roomDbLibVersion"
implementation "android.arch.persistence.room:rxjava2:$roomDbLibVersion"
annotationProcessor "android.arch.persistence.room:compiler:$roomDbLibVersion"

implementation "frankiesardo:icepick:$icepickLibVersion"
annotationProcessor "frankiesardo:icepick-processor:$icepickLibVersion"
implementation "android.arch.persistence.room:runtime:${roomDbLibVersion}"
implementation "android.arch.persistence.room:rxjava2:${roomDbLibVersion}"
annotationProcessor "android.arch.persistence.room:compiler:${roomDbLibVersion}"

debugImplementation "com.squareup.leakcanary:leakcanary-android:$leakCanaryLibVersion"
releaseImplementation "com.squareup.leakcanary:leakcanary-android-no-op:$leakCanaryLibVersion"
implementation "frankiesardo:icepick:${icepickLibVersion}"
annotationProcessor "frankiesardo:icepick-processor:${icepickLibVersion}"

debugImplementation "com.squareup.leakcanary:leakcanary-android:${leakCanaryLibVersion}"
releaseImplementation "com.squareup.leakcanary:leakcanary-android-no-op:${leakCanaryLibVersion}"

implementation "com.squareup.okhttp3:okhttp:$okHttpLibVersion"
debugImplementation "com.facebook.stetho:stetho-okhttp3:$stethoLibVersion"
implementation 'com.android.support.constraint:constraint-layout:1.1.2'
implementation 'com.android.support:cardview-v7:27.1.1'
implementation "com.squareup.okhttp3:okhttp:${okHttpLibVersion}"
debugImplementation "com.facebook.stetho:stetho-okhttp3:${stethoLibVersion}"
}
@@ -9,6 +9,7 @@
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW"/>
<uses-permission android:name="android.permission.FOREGROUND_SERVICE"/>

<application
android:name=".App"
@@ -238,4 +239,4 @@
android:name=".RouterActivity$FetcherService"
android:exported="false"/>
</application>
</manifest>
</manifest>
@@ -5,6 +5,7 @@
import android.app.NotificationManager;
import android.content.Context;
import android.os.Build;
import android.preference.PreferenceManager;
import android.support.annotation.Nullable;
import android.util.Log;

@@ -21,6 +22,7 @@
import org.acra.sender.ReportSenderFactory;
import org.schabi.newpipe.extractor.Downloader;
import org.schabi.newpipe.extractor.NewPipe;
import org.schabi.newpipe.extractor.utils.Localization;
import org.schabi.newpipe.report.AcraReportSenderFactory;
import org.schabi.newpipe.report.ErrorActivity;
import org.schabi.newpipe.report.UserAction;
@@ -65,7 +67,8 @@
private RefWatcher refWatcher;

@SuppressWarnings("unchecked")
private static final Class<? extends ReportSenderFactory>[] reportSenderFactoryClasses = new Class[]{AcraReportSenderFactory.class};
private static final Class<? extends ReportSenderFactory>[]
reportSenderFactoryClasses = new Class[]{AcraReportSenderFactory.class};

@Override
protected void attachBaseContext(Context base) {
@@ -88,7 +91,8 @@ public void onCreate() {
// Initialize settings first because others inits can use its values
SettingsActivity.initSettings(this);

NewPipe.init(getDownloader());
NewPipe.init(getDownloader(),
org.schabi.newpipe.util.Localization.getPreferredExtractorLocal(this));
StateSaver.init(this);
initNotificationChannel();

@@ -106,7 +110,7 @@ private void configureRxJavaErrorHandler() {
// https://github.com/ReactiveX/RxJava/wiki/What's-different-in-2.0#error-handling
RxJavaPlugins.setErrorHandler(new Consumer<Throwable>() {
@Override
public void accept(@NonNull Throwable throwable) throws Exception {
public void accept(@NonNull Throwable throwable) {
Log.e(TAG, "RxJavaPlugins.ErrorHandler called with -> : " +
"throwable = [" + throwable.getClass().getName() + "]");

@@ -180,7 +184,11 @@ private void initACRA() {
ACRA.init(this, acraConfig);
} catch (ACRAConfigurationException ace) {
ace.printStackTrace();
ErrorActivity.reportError(this, ace, null, null, ErrorActivity.ErrorInfo.make(UserAction.SOMETHING_ELSE, "none",
ErrorActivity.reportError(this,
ace,
null,
null,
ErrorActivity.ErrorInfo.make(UserAction.SOMETHING_ELSE, "none",
"Could not initialize ACRA crash report", R.string.app_ui_crash));
}
}
@@ -200,7 +208,8 @@ public void initNotificationChannel() {
NotificationChannel mChannel = new NotificationChannel(id, name, importance);
mChannel.setDescription(description);

NotificationManager mNotificationManager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
NotificationManager mNotificationManager =
(NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
mNotificationManager.createNotificationChannel(mChannel);
}

0 comments on commit fba0a80

Please sign in to comment.
You can’t perform that action at this time.