diff --git a/.github/CONTRIBUTING.md b/.github/CONTRIBUTING.md index be8a0ca80..4b0ca4811 100644 --- a/.github/CONTRIBUTING.md +++ b/.github/CONTRIBUTING.md @@ -13,6 +13,7 @@ Do not report crashes in the GitHub issue tracker. NewPipe has an automated cras * Check whether your issue/feature is already fixed/implemented * If you are an Android/Java developer, you are always welcome to fix/implement an issue/a feature yourself. PRs welcome! * We use English for development. Issues in other languages will be closed and ignored. +* Please only add *one* issue at a time. Do not put multiple issues into one thread. ## Bug Fixing * If you want to help NewPipe to become free of bugs (this is our utopic goal for NewPipe), you can send us an email to tnp@newpipe.schabi.org to let me know that you intend to help. We'll send you further instructions. You may, on request, register at our [Sentry](https://sentry.schabi.org) instance (see section "Crash reporting" for more information. diff --git a/.travis.yml b/.travis.yml index fad605996..e0fcfb82b 100644 --- a/.travis.yml +++ b/.travis.yml @@ -10,9 +10,6 @@ android: # The SDK version used to compile NewPipe - android-26 - # Additional components - - extra-android-m2repository - script: ./gradlew -Dorg.gradle.jvmargs=-Xmx1536m assembleDebug lintDebug testDebugUnitTest licenses: diff --git a/README.md b/README.md index ff53078c7..a127b10a5 100644 --- a/README.md +++ b/README.md @@ -1,34 +1,32 @@ +

+

NewPipe

+

A free lightweight YouTube frontend for Android.

+

+ +

+ + + + + +

+
+

ScreenshotsDescriptionFeaturesContributionDonateLicense

+
WARNING: PUTTING NEWPIPE OR ANY FORK OF IT INTO GOOGLE PLAYSTORE VIOLATES THEIR TERMS OF CONDITIONS. -# NewPipe -NewPipe: A free lightweight YouTube frontend for Android. - -[![NewPipe](app/src/main/res/mipmap-xhdpi/ic_launcher.png)](https://newpipe.schabi.org) -[![F-Droid](https://f-droid.org/wiki/images/0/06/F-Droid-button_get-it-on.png)](https://f-droid.org/packages/org.schabi.newpipe/) - - -Project status: -[![Translation Status](https://hosted.weblate.org/widgets/NewPipe/-/svg-badge.svg)](https://hosted.weblate.org/engage/NewPipe/) -[![Build Status](https://travis-ci.org/TeamNewPipe/NewPipe.svg)](https://travis-ci.org/TeamNewPipe/NewPipe) - -## Donate -![Bitcoin](https://bitcoin.org/img/icons/logotop.svg) -![BitcoinQR](assets/16A9J59ahMRqkLSZjhYj33n9j3fMztFxnh.png) - -`16A9J59ahMRqkLSZjhYj33n9j3fMztFxnh` - ## Screenshots -[](screenshots/screenshot_1.png) -[](screenshots/screenshot_2.png) -[](screenshots/screenshot_3.png) -[](screenshots/screenshot_4.png) -[](screenshots/screenshot_5.png) -[](screenshots/screenshot_6.png) -[](screenshots/screenshot_7.png) -[](screenshots/screenshot_8.png) -[](screenshots/screenshot_9.png) - +[](screenshots/shot_1.png) +[](screenshots/shot_2.png) +[](screenshots/shot_3.png) +[](screenshots/shot_4.png) +[](screenshots/shot_5.png) +[](screenshots/shot_6.png) +[](screenshots/shot_7.png) +[](screenshots/shot_8.png) +[](screenshots/shot_9.png) +[](screenshots/shot_10.png) ## Description @@ -39,7 +37,7 @@ NewPipe does not use any Google framework libraries, or the YouTube API. It only * Search videos * Display general information about a video * Watch YouTube videos -* Listen to YouTube videos (experimental) +* Listen to YouTube videos * Popup mode (floating player) * Select the streaming player to watch the video with * Download videos @@ -47,21 +45,23 @@ NewPipe does not use any Google framework libraries, or the YouTube API. It only * Open a video in Kodi * Show Next/Related videos * Search YouTube in a specific language -* Watch age restricted material +* Watch/Block age restricted material * Display general information about channels * Search channels * Watch videos from a channel * Orbot/Tor support (not yet directly) * 1080p/2k/4k support +* View history +* Subscribe to channels +* Search history +* Search/Watch Playlists ### Coming Features +* Multiservice support (eg. SoundCloud) * Bookmarks -* View history -* Search history -* Subscribe to channels -* Search/Watch Playlists -* Queeing videos +* Watch as queues Playlists +* Queuing videos * Subtitles support * livestream support * ... and many more @@ -75,6 +75,22 @@ 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 or BountySource. For further information about donating to NewPipe, please visit our [website](https://newpipe.schabi.org/donate/). + + + + + + + + + + + + +
BitcoinBitcoin QR Code16A9J59ahMRqkLSZjhYj33n9j3fMztFxnh
Visit NewPipe at bountysource.comCheck out how many bounties you can earn.
+ ## License [![GNU GPLv3 Image](https://www.gnu.org/graphics/gplv3-127x51.png)](http://www.gnu.org/licenses/gpl-3.0.en.html) diff --git a/app/build.gradle b/app/build.gradle index 742b00d4b..8bb0d19b2 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -26,6 +26,9 @@ android { debuggable true applicationIdSuffix ".debug" } + beta { + applicationIdSuffix ".beta" + } } lintOptions { @@ -44,7 +47,7 @@ dependencies { androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2') { exclude module: 'support-annotations' } - + compile 'com.github.TeamNewPipe:NewPipeExtractor:7fffef5' testCompile 'junit:junit:4.12' @@ -62,7 +65,7 @@ dependencies { compile 'com.nostra13.universalimageloader:universal-image-loader:1.9.5' compile 'de.hdodenhof:circleimageview:2.1.0' compile 'com.github.nirhart:parallaxscroll:1.0' - compile 'com.nononsenseapps:filepicker:3.0.0' + compile 'com.nononsenseapps:filepicker:3.0.1' compile 'com.google.android.exoplayer:exoplayer:r2.5.1' debugCompile 'com.facebook.stetho:stetho:1.5.0' diff --git a/app/src/beta/AndroidManifest.xml b/app/src/beta/AndroidManifest.xml new file mode 100644 index 000000000..dd390a318 --- /dev/null +++ b/app/src/beta/AndroidManifest.xml @@ -0,0 +1,10 @@ + + + + + + + \ No newline at end of file diff --git a/app/src/beta/res/mipmap-hdpi/ic_launcher.png b/app/src/beta/res/mipmap-hdpi/ic_launcher.png new file mode 100644 index 000000000..73c65771d Binary files /dev/null and b/app/src/beta/res/mipmap-hdpi/ic_launcher.png differ diff --git a/app/src/beta/res/mipmap-mdpi/ic_launcher.png b/app/src/beta/res/mipmap-mdpi/ic_launcher.png new file mode 100644 index 000000000..6f5eeeee1 Binary files /dev/null and b/app/src/beta/res/mipmap-mdpi/ic_launcher.png differ diff --git a/app/src/beta/res/mipmap-xhdpi/ic_launcher.png b/app/src/beta/res/mipmap-xhdpi/ic_launcher.png new file mode 100644 index 000000000..e871a3ea9 Binary files /dev/null and b/app/src/beta/res/mipmap-xhdpi/ic_launcher.png differ diff --git a/app/src/beta/res/mipmap-xxhdpi/ic_launcher.png b/app/src/beta/res/mipmap-xxhdpi/ic_launcher.png new file mode 100644 index 000000000..e38901a86 Binary files /dev/null and b/app/src/beta/res/mipmap-xxhdpi/ic_launcher.png differ diff --git a/app/src/beta/res/mipmap-xxxhdpi/ic_launcher.png b/app/src/beta/res/mipmap-xxxhdpi/ic_launcher.png new file mode 100644 index 000000000..1cf7e64be Binary files /dev/null and b/app/src/beta/res/mipmap-xxxhdpi/ic_launcher.png differ diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 826ae4f44..8ae994de7 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -88,10 +88,14 @@ + android:theme="@style/FilePickerThemeDark"> + + + + + suggestionPublisher = PublishSubject.create(); private Disposable searchDisposable; private Disposable suggestionWorkerDisposable; + private CompositeDisposable disposables = new CompositeDisposable(); private SuggestionListAdapter suggestionListAdapter; @@ -149,6 +153,7 @@ public class SearchFragment extends BaseListFragment() { + @Override + public Intent call() throws Exception { + return NavigationHelper.getIntentByLink(activity, service, query); + } + }) + .subscribeOn(Schedulers.io()) + .observeOn(AndroidSchedulers.mainThread()) + .subscribe(new Consumer() { + @Override + public void accept(Intent intent) throws Exception { + getFragmentManager().popBackStackImmediate(); + activity.startActivity(intent); + } + }, new Consumer() { + @Override + public void accept(Throwable throwable) throws Exception { + showError(getString(R.string.url_not_supported_toast), false); + hideLoading(); + } + })); + return; + } + } catch (Exception e) { + // Exception occurred, it's not a url + } + hideSoftKeyboard(searchEditText); this.searchQuery = query; this.currentPage = 0; @@ -532,6 +570,7 @@ public class SearchFragment extends BaseListFragment + + + + diff --git a/app/src/main/res/mipmap-hdpi/ic_launcher_foreground.png b/app/src/main/res/mipmap-hdpi/ic_launcher_foreground.png new file mode 100644 index 000000000..a95153a1f Binary files /dev/null and b/app/src/main/res/mipmap-hdpi/ic_launcher_foreground.png differ diff --git a/app/src/main/res/mipmap-mdpi/ic_launcher_foreground.png b/app/src/main/res/mipmap-mdpi/ic_launcher_foreground.png new file mode 100644 index 000000000..bccfaff0e Binary files /dev/null and b/app/src/main/res/mipmap-mdpi/ic_launcher_foreground.png differ diff --git a/app/src/main/res/mipmap-xhdpi/ic_launcher_foreground.png b/app/src/main/res/mipmap-xhdpi/ic_launcher_foreground.png new file mode 100644 index 000000000..65ced7a8b Binary files /dev/null and b/app/src/main/res/mipmap-xhdpi/ic_launcher_foreground.png differ diff --git a/app/src/main/res/mipmap-xxhdpi/ic_launcher_foreground.png b/app/src/main/res/mipmap-xxhdpi/ic_launcher_foreground.png new file mode 100644 index 000000000..b7b42cbff Binary files /dev/null and b/app/src/main/res/mipmap-xxhdpi/ic_launcher_foreground.png differ diff --git a/app/src/main/res/mipmap-xxxhdpi/ic_launcher_foreground.png b/app/src/main/res/mipmap-xxxhdpi/ic_launcher_foreground.png new file mode 100644 index 000000000..4ce448946 Binary files /dev/null and b/app/src/main/res/mipmap-xxxhdpi/ic_launcher_foreground.png differ diff --git a/app/src/main/res/values/ic_launcher_background.xml b/app/src/main/res/values/ic_launcher_background.xml new file mode 100644 index 000000000..1633e193a --- /dev/null +++ b/app/src/main/res/values/ic_launcher_background.xml @@ -0,0 +1,4 @@ + + + #CD201F + diff --git a/app/src/main/res/values/settings_keys.xml b/app/src/main/res/values/settings_keys.xml index c779e8216..76cd10681 100644 --- a/app/src/main/res/values/settings_keys.xml +++ b/app/src/main/res/values/settings_keys.xml @@ -51,7 +51,7 @@ MPEG-4 WebM - 3GPP + 3GP @string/video_mp4_key diff --git a/app/src/main/res/values/styles.xml b/app/src/main/res/values/styles.xml index 6663177e6..fa37f0e5d 100644 --- a/app/src/main/res/values/styles.xml +++ b/app/src/main/res/values/styles.xml @@ -109,23 +109,47 @@ @color/video_overlay_color - - - + + + + + + + + + diff --git a/app/src/test/java/us/shandian/giga/get/get/DownloadManagerImplTest.java b/app/src/test/java/us/shandian/giga/get/DownloadManagerImplTest.java similarity index 84% rename from app/src/test/java/us/shandian/giga/get/get/DownloadManagerImplTest.java rename to app/src/test/java/us/shandian/giga/get/DownloadManagerImplTest.java index a7242ba10..6ff702273 100644 --- a/app/src/test/java/us/shandian/giga/get/get/DownloadManagerImplTest.java +++ b/app/src/test/java/us/shandian/giga/get/DownloadManagerImplTest.java @@ -1,4 +1,4 @@ -package us.shandian.giga.get.get; +package us.shandian.giga.get; import org.junit.Ignore; import org.junit.Test; @@ -153,4 +153,34 @@ public class DownloadManagerImplTest { assertSame(missions.get(1), downloadManager.getMission(1)); } + @Test + public void sortByTimestamp() throws Exception { + ArrayList downloadMissions = new ArrayList<>(); + DownloadMission mission = new DownloadMission(); + mission.timestamp = 0; + + DownloadMission mission1 = new DownloadMission(); + mission1.timestamp = Integer.MAX_VALUE + 1L; + + DownloadMission mission2 = new DownloadMission(); + mission2.timestamp = 2L * Integer.MAX_VALUE ; + + DownloadMission mission3 = new DownloadMission(); + mission3.timestamp = 2L * Integer.MAX_VALUE + 5L; + + + downloadMissions.add(mission3); + downloadMissions.add(mission1); + downloadMissions.add(mission2); + downloadMissions.add(mission); + + + DownloadManagerImpl.sortByTimestamp(downloadMissions); + + assertEquals(mission, downloadMissions.get(0)); + assertEquals(mission1, downloadMissions.get(1)); + assertEquals(mission2, downloadMissions.get(2)); + assertEquals(mission3, downloadMissions.get(3)); + } + } \ No newline at end of file diff --git a/assets/BETA_new_pipe_icon_5.svg b/assets/BETA_new_pipe_icon_5.svg new file mode 100644 index 000000000..9406f2469 --- /dev/null +++ b/assets/BETA_new_pipe_icon_5.svg @@ -0,0 +1,546 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + image/svg+xml + + + + + + + + + + + + + BETA + + diff --git a/assets/16A9J59ahMRqkLSZjhYj33n9j3fMztFxnh.png b/assets/bitcoin_qr_code.png similarity index 100% rename from assets/16A9J59ahMRqkLSZjhYj33n9j3fMztFxnh.png rename to assets/bitcoin_qr_code.png diff --git a/assets/bountysource_qr_code.png b/assets/bountysource_qr_code.png new file mode 100644 index 000000000..4fe03236a Binary files /dev/null and b/assets/bountysource_qr_code.png differ diff --git a/build.gradle b/build.gradle index 52a96908f..5c494fe59 100644 --- a/build.gradle +++ b/build.gradle @@ -3,6 +3,7 @@ buildscript { repositories { jcenter() + google() } dependencies { classpath 'com.android.tools.build:gradle:2.3.3' @@ -16,7 +17,7 @@ allprojects { repositories { jcenter() maven { url 'https://jitpack.io' } - maven { url 'https://maven.google.com' } + google() maven { url 'https://clojars.org/repo' } } } diff --git a/screenshots/screenshot_1.png b/screenshots/screenshot_1.png deleted file mode 100644 index f2fd046bc..000000000 Binary files a/screenshots/screenshot_1.png and /dev/null differ diff --git a/screenshots/screenshot_2.png b/screenshots/screenshot_2.png deleted file mode 100644 index 6330e420d..000000000 Binary files a/screenshots/screenshot_2.png and /dev/null differ diff --git a/screenshots/screenshot_3.png b/screenshots/screenshot_3.png deleted file mode 100644 index e6477b2cc..000000000 Binary files a/screenshots/screenshot_3.png and /dev/null differ diff --git a/screenshots/screenshot_4.png b/screenshots/screenshot_4.png deleted file mode 100644 index ea9d8b1c7..000000000 Binary files a/screenshots/screenshot_4.png and /dev/null differ diff --git a/screenshots/screenshot_5.png b/screenshots/screenshot_5.png deleted file mode 100644 index c8ddb9fa7..000000000 Binary files a/screenshots/screenshot_5.png and /dev/null differ diff --git a/screenshots/screenshot_6.png b/screenshots/screenshot_6.png deleted file mode 100644 index d4d5122eb..000000000 Binary files a/screenshots/screenshot_6.png and /dev/null differ diff --git a/screenshots/screenshot_7.png b/screenshots/screenshot_7.png deleted file mode 100644 index 9a1e71385..000000000 Binary files a/screenshots/screenshot_7.png and /dev/null differ diff --git a/screenshots/screenshot_8.png b/screenshots/screenshot_8.png deleted file mode 100644 index 3e73bb358..000000000 Binary files a/screenshots/screenshot_8.png and /dev/null differ diff --git a/screenshots/screenshot_9.png b/screenshots/screenshot_9.png deleted file mode 100644 index d76c53f73..000000000 Binary files a/screenshots/screenshot_9.png and /dev/null differ diff --git a/screenshots/shot_1.png b/screenshots/shot_1.png new file mode 100644 index 000000000..986f201a1 Binary files /dev/null and b/screenshots/shot_1.png differ diff --git a/screenshots/shot_10.png b/screenshots/shot_10.png new file mode 100644 index 000000000..7e840d6dd Binary files /dev/null and b/screenshots/shot_10.png differ diff --git a/screenshots/shot_2.png b/screenshots/shot_2.png new file mode 100644 index 000000000..10c70b54d Binary files /dev/null and b/screenshots/shot_2.png differ diff --git a/screenshots/shot_3.png b/screenshots/shot_3.png new file mode 100644 index 000000000..7e3af77c1 Binary files /dev/null and b/screenshots/shot_3.png differ diff --git a/screenshots/shot_4.png b/screenshots/shot_4.png new file mode 100644 index 000000000..cdaf96153 Binary files /dev/null and b/screenshots/shot_4.png differ diff --git a/screenshots/shot_5.png b/screenshots/shot_5.png new file mode 100644 index 000000000..64c0a164d Binary files /dev/null and b/screenshots/shot_5.png differ diff --git a/screenshots/shot_6.png b/screenshots/shot_6.png new file mode 100644 index 000000000..8a7af3c16 Binary files /dev/null and b/screenshots/shot_6.png differ diff --git a/screenshots/shot_7.png b/screenshots/shot_7.png new file mode 100644 index 000000000..d6a9b1ce2 Binary files /dev/null and b/screenshots/shot_7.png differ diff --git a/screenshots/shot_8.png b/screenshots/shot_8.png new file mode 100644 index 000000000..5fe620d00 Binary files /dev/null and b/screenshots/shot_8.png differ diff --git a/screenshots/shot_9.png b/screenshots/shot_9.png new file mode 100644 index 000000000..b4d51b7e0 Binary files /dev/null and b/screenshots/shot_9.png differ