mirror of
				https://github.com/TeamNewPipe/NewPipe
				synced 2025-10-30 23:03:00 +00:00 
			
		
		
		
	New version number 0.6.0 and some fixes:
* moved on to version 0.6.0 * fixed youtube url sicnature encryption (vevo videos can be watched again) * removed play action from the ActionBar * rolled back changes for hiding the InfoBar inside PlayVideoActivity * some small layout changes * removed some files to be ignored (mostly inside .idea directory) * etc
This commit is contained in:
		
							
								
								
									
										1
									
								
								.gitignore
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										1
									
								
								.gitignore
									
									
									
									
										vendored
									
									
								
							| @@ -8,3 +8,4 @@ | |||||||
| /captures | /captures | ||||||
| .idea/gradle.xml | .idea/gradle.xml | ||||||
| .idea/misc.xml | .idea/misc.xml | ||||||
|  | /app/app.iml | ||||||
|   | |||||||
							
								
								
									
										18
									
								
								.idea/gradle.xml
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										18
									
								
								.idea/gradle.xml
									
									
									
										generated
									
									
									
								
							| @@ -1,18 +0,0 @@ | |||||||
| <?xml version="1.0" encoding="UTF-8"?> |  | ||||||
| <project version="4"> |  | ||||||
|   <component name="GradleSettings"> |  | ||||||
|     <option name="linkedExternalProjectsSettings"> |  | ||||||
|       <GradleProjectSettings> |  | ||||||
|         <option name="distributionType" value="DEFAULT_WRAPPED" /> |  | ||||||
|         <option name="externalProjectPath" value="$PROJECT_DIR$" /> |  | ||||||
|         <option name="gradleJvm" value="1.7" /> |  | ||||||
|         <option name="modules"> |  | ||||||
|           <set> |  | ||||||
|             <option value="$PROJECT_DIR$" /> |  | ||||||
|             <option value="$PROJECT_DIR$/app" /> |  | ||||||
|           </set> |  | ||||||
|         </option> |  | ||||||
|       </GradleProjectSettings> |  | ||||||
|     </option> |  | ||||||
|   </component> |  | ||||||
| </project> |  | ||||||
							
								
								
									
										46
									
								
								.idea/misc.xml
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										46
									
								
								.idea/misc.xml
									
									
									
										generated
									
									
									
								
							| @@ -1,46 +0,0 @@ | |||||||
| <?xml version="1.0" encoding="UTF-8"?> |  | ||||||
| <project version="4"> |  | ||||||
|   <component name="EntryPointsManager"> |  | ||||||
|     <entry_points version="2.0" /> |  | ||||||
|   </component> |  | ||||||
|   <component name="NullableNotNullManager"> |  | ||||||
|     <option name="myDefaultNullable" value="android.support.annotation.Nullable" /> |  | ||||||
|     <option name="myDefaultNotNull" value="android.support.annotation.NonNull" /> |  | ||||||
|     <option name="myNullables"> |  | ||||||
|       <value> |  | ||||||
|         <list size="4"> |  | ||||||
|           <item index="0" class="java.lang.String" itemvalue="org.jetbrains.annotations.Nullable" /> |  | ||||||
|           <item index="1" class="java.lang.String" itemvalue="javax.annotation.Nullable" /> |  | ||||||
|           <item index="2" class="java.lang.String" itemvalue="edu.umd.cs.findbugs.annotations.Nullable" /> |  | ||||||
|           <item index="3" class="java.lang.String" itemvalue="android.support.annotation.Nullable" /> |  | ||||||
|         </list> |  | ||||||
|       </value> |  | ||||||
|     </option> |  | ||||||
|     <option name="myNotNulls"> |  | ||||||
|       <value> |  | ||||||
|         <list size="4"> |  | ||||||
|           <item index="0" class="java.lang.String" itemvalue="org.jetbrains.annotations.NotNull" /> |  | ||||||
|           <item index="1" class="java.lang.String" itemvalue="javax.annotation.Nonnull" /> |  | ||||||
|           <item index="2" class="java.lang.String" itemvalue="edu.umd.cs.findbugs.annotations.NonNull" /> |  | ||||||
|           <item index="3" class="java.lang.String" itemvalue="android.support.annotation.NonNull" /> |  | ||||||
|         </list> |  | ||||||
|       </value> |  | ||||||
|     </option> |  | ||||||
|   </component> |  | ||||||
|   <component name="ProjectLevelVcsManager" settingsEditedManually="false"> |  | ||||||
|     <OptionsSetting value="true" id="Add" /> |  | ||||||
|     <OptionsSetting value="true" id="Remove" /> |  | ||||||
|     <OptionsSetting value="true" id="Checkout" /> |  | ||||||
|     <OptionsSetting value="true" id="Update" /> |  | ||||||
|     <OptionsSetting value="true" id="Status" /> |  | ||||||
|     <OptionsSetting value="true" id="Edit" /> |  | ||||||
|     <ConfirmationsSetting value="0" id="Add" /> |  | ||||||
|     <ConfirmationsSetting value="0" id="Remove" /> |  | ||||||
|   </component> |  | ||||||
|   <component name="ProjectRootManager" version="2" languageLevel="JDK_1_7" default="true" assert-keyword="true" jdk-15="true" project-jdk-name="1.7" project-jdk-type="JavaSDK"> |  | ||||||
|     <output url="file://$PROJECT_DIR$/build/classes" /> |  | ||||||
|   </component> |  | ||||||
|   <component name="ProjectType"> |  | ||||||
|     <option name="id" value="Android" /> |  | ||||||
|   </component> |  | ||||||
| </project> |  | ||||||
							
								
								
									
										2
									
								
								.idea/vcs.xml
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										2
									
								
								.idea/vcs.xml
									
									
									
										generated
									
									
									
								
							| @@ -1,6 +1,6 @@ | |||||||
| <?xml version="1.0" encoding="UTF-8"?> | <?xml version="1.0" encoding="UTF-8"?> | ||||||
| <project version="4"> | <project version="4"> | ||||||
|   <component name="VcsDirectoryMappings"> |   <component name="VcsDirectoryMappings"> | ||||||
|     <mapping directory="" vcs="" /> |     <mapping directory="$PROJECT_DIR$" vcs="Git" /> | ||||||
|   </component> |   </component> | ||||||
| </project> | </project> | ||||||
							
								
								
									
										2
									
								
								app/.gitignore
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										2
									
								
								app/.gitignore
									
									
									
									
										vendored
									
									
								
							| @@ -1,3 +1,3 @@ | |||||||
| .gitignore | .gitignore | ||||||
| /build | /build | ||||||
| app/app.iml | app.iml | ||||||
|   | |||||||
							
								
								
									
										103
									
								
								app/app.iml
									
									
									
									
									
								
							
							
						
						
									
										103
									
								
								app/app.iml
									
									
									
									
									
								
							| @@ -1,103 +0,0 @@ | |||||||
| <?xml version="1.0" encoding="UTF-8"?> |  | ||||||
| <module external.linked.project.id=":app" external.linked.project.path="$MODULE_DIR$" external.root.project.path="$MODULE_DIR$/.." external.system.id="GRADLE" external.system.module.group="NewPipe" external.system.module.version="unspecified" type="JAVA_MODULE" version="4"> |  | ||||||
|   <component name="FacetManager"> |  | ||||||
|     <facet type="android-gradle" name="Android-Gradle"> |  | ||||||
|       <configuration> |  | ||||||
|         <option name="GRADLE_PROJECT_PATH" value=":app" /> |  | ||||||
|       </configuration> |  | ||||||
|     </facet> |  | ||||||
|     <facet type="android" name="Android"> |  | ||||||
|       <configuration> |  | ||||||
|         <option name="SELECTED_BUILD_VARIANT" value="debug" /> |  | ||||||
|         <option name="SELECTED_TEST_ARTIFACT" value="_android_test_" /> |  | ||||||
|         <option name="ASSEMBLE_TASK_NAME" value="assembleDebug" /> |  | ||||||
|         <option name="COMPILE_JAVA_TASK_NAME" value="compileDebugSources" /> |  | ||||||
|         <option name="ASSEMBLE_TEST_TASK_NAME" value="assembleDebugAndroidTest" /> |  | ||||||
|         <option name="COMPILE_JAVA_TEST_TASK_NAME" value="compileDebugAndroidTestSources" /> |  | ||||||
|         <afterSyncTasks> |  | ||||||
|           <task>generateDebugAndroidTestSources</task> |  | ||||||
|           <task>generateDebugSources</task> |  | ||||||
|         </afterSyncTasks> |  | ||||||
|         <option name="ALLOW_USER_CONFIGURATION" value="false" /> |  | ||||||
|         <option name="MANIFEST_FILE_RELATIVE_PATH" value="/src/main/AndroidManifest.xml" /> |  | ||||||
|         <option name="RES_FOLDER_RELATIVE_PATH" value="/src/main/res" /> |  | ||||||
|         <option name="RES_FOLDERS_RELATIVE_PATH" value="file://$MODULE_DIR$/src/main/res" /> |  | ||||||
|         <option name="ASSETS_FOLDER_RELATIVE_PATH" value="/src/main/assets" /> |  | ||||||
|       </configuration> |  | ||||||
|     </facet> |  | ||||||
|   </component> |  | ||||||
|   <component name="NewModuleRootManager" LANGUAGE_LEVEL="JDK_1_7" inherit-compiler-output="false"> |  | ||||||
|     <output url="file://$MODULE_DIR$/build/intermediates/classes/debug" /> |  | ||||||
|     <output-test url="file://$MODULE_DIR$/build/intermediates/classes/androidTest/debug" /> |  | ||||||
|     <exclude-output /> |  | ||||||
|     <content url="file://$MODULE_DIR$"> |  | ||||||
|       <sourceFolder url="file://$MODULE_DIR$/build/generated/source/r/debug" isTestSource="false" generated="true" /> |  | ||||||
|       <sourceFolder url="file://$MODULE_DIR$/build/generated/source/aidl/debug" isTestSource="false" generated="true" /> |  | ||||||
|       <sourceFolder url="file://$MODULE_DIR$/build/generated/source/buildConfig/debug" isTestSource="false" generated="true" /> |  | ||||||
|       <sourceFolder url="file://$MODULE_DIR$/build/generated/source/rs/debug" isTestSource="false" generated="true" /> |  | ||||||
|       <sourceFolder url="file://$MODULE_DIR$/build/generated/res/rs/debug" type="java-resource" /> |  | ||||||
|       <sourceFolder url="file://$MODULE_DIR$/build/generated/res/resValues/debug" type="java-resource" /> |  | ||||||
|       <sourceFolder url="file://$MODULE_DIR$/build/generated/source/r/androidTest/debug" isTestSource="true" generated="true" /> |  | ||||||
|       <sourceFolder url="file://$MODULE_DIR$/build/generated/source/aidl/androidTest/debug" isTestSource="true" generated="true" /> |  | ||||||
|       <sourceFolder url="file://$MODULE_DIR$/build/generated/source/buildConfig/androidTest/debug" isTestSource="true" generated="true" /> |  | ||||||
|       <sourceFolder url="file://$MODULE_DIR$/build/generated/source/rs/androidTest/debug" isTestSource="true" generated="true" /> |  | ||||||
|       <sourceFolder url="file://$MODULE_DIR$/build/generated/res/rs/androidTest/debug" type="java-test-resource" /> |  | ||||||
|       <sourceFolder url="file://$MODULE_DIR$/build/generated/res/resValues/androidTest/debug" type="java-test-resource" /> |  | ||||||
|       <sourceFolder url="file://$MODULE_DIR$/src/debug/res" type="java-resource" /> |  | ||||||
|       <sourceFolder url="file://$MODULE_DIR$/src/debug/resources" type="java-resource" /> |  | ||||||
|       <sourceFolder url="file://$MODULE_DIR$/src/debug/assets" type="java-resource" /> |  | ||||||
|       <sourceFolder url="file://$MODULE_DIR$/src/debug/aidl" isTestSource="false" /> |  | ||||||
|       <sourceFolder url="file://$MODULE_DIR$/src/debug/java" isTestSource="false" /> |  | ||||||
|       <sourceFolder url="file://$MODULE_DIR$/src/debug/jni" isTestSource="false" /> |  | ||||||
|       <sourceFolder url="file://$MODULE_DIR$/src/debug/rs" isTestSource="false" /> |  | ||||||
|       <sourceFolder url="file://$MODULE_DIR$/src/main/res" type="java-resource" /> |  | ||||||
|       <sourceFolder url="file://$MODULE_DIR$/src/main/resources" type="java-resource" /> |  | ||||||
|       <sourceFolder url="file://$MODULE_DIR$/src/main/assets" type="java-resource" /> |  | ||||||
|       <sourceFolder url="file://$MODULE_DIR$/src/main/aidl" isTestSource="false" /> |  | ||||||
|       <sourceFolder url="file://$MODULE_DIR$/src/main/java" isTestSource="false" /> |  | ||||||
|       <sourceFolder url="file://$MODULE_DIR$/src/main/jni" isTestSource="false" /> |  | ||||||
|       <sourceFolder url="file://$MODULE_DIR$/src/main/rs" isTestSource="false" /> |  | ||||||
|       <sourceFolder url="file://$MODULE_DIR$/src/androidTest/res" type="java-test-resource" /> |  | ||||||
|       <sourceFolder url="file://$MODULE_DIR$/src/androidTest/resources" type="java-test-resource" /> |  | ||||||
|       <sourceFolder url="file://$MODULE_DIR$/src/androidTest/assets" type="java-test-resource" /> |  | ||||||
|       <sourceFolder url="file://$MODULE_DIR$/src/androidTest/aidl" isTestSource="true" /> |  | ||||||
|       <sourceFolder url="file://$MODULE_DIR$/src/androidTest/java" isTestSource="true" /> |  | ||||||
|       <sourceFolder url="file://$MODULE_DIR$/src/androidTest/jni" isTestSource="true" /> |  | ||||||
|       <sourceFolder url="file://$MODULE_DIR$/src/androidTest/rs" isTestSource="true" /> |  | ||||||
|       <excludeFolder url="file://$MODULE_DIR$/build/intermediates/assets" /> |  | ||||||
|       <excludeFolder url="file://$MODULE_DIR$/build/intermediates/bundles" /> |  | ||||||
|       <excludeFolder url="file://$MODULE_DIR$/build/intermediates/classes" /> |  | ||||||
|       <excludeFolder url="file://$MODULE_DIR$/build/intermediates/coverage-instrumented-classes" /> |  | ||||||
|       <excludeFolder url="file://$MODULE_DIR$/build/intermediates/dependency-cache" /> |  | ||||||
|       <excludeFolder url="file://$MODULE_DIR$/build/intermediates/dex" /> |  | ||||||
|       <excludeFolder url="file://$MODULE_DIR$/build/intermediates/dex-cache" /> |  | ||||||
|       <excludeFolder url="file://$MODULE_DIR$/build/intermediates/exploded-aar/com.android.support/appcompat-v7/23.1.0/jars" /> |  | ||||||
|       <excludeFolder url="file://$MODULE_DIR$/build/intermediates/exploded-aar/com.android.support/design/23.1.0/jars" /> |  | ||||||
|       <excludeFolder url="file://$MODULE_DIR$/build/intermediates/exploded-aar/com.android.support/recyclerview-v7/23.1.0/jars" /> |  | ||||||
|       <excludeFolder url="file://$MODULE_DIR$/build/intermediates/exploded-aar/com.android.support/support-v4/23.1.0/jars" /> |  | ||||||
|       <excludeFolder url="file://$MODULE_DIR$/build/intermediates/incremental" /> |  | ||||||
|       <excludeFolder url="file://$MODULE_DIR$/build/intermediates/jacoco" /> |  | ||||||
|       <excludeFolder url="file://$MODULE_DIR$/build/intermediates/javaResources" /> |  | ||||||
|       <excludeFolder url="file://$MODULE_DIR$/build/intermediates/libs" /> |  | ||||||
|       <excludeFolder url="file://$MODULE_DIR$/build/intermediates/lint" /> |  | ||||||
|       <excludeFolder url="file://$MODULE_DIR$/build/intermediates/manifests" /> |  | ||||||
|       <excludeFolder url="file://$MODULE_DIR$/build/intermediates/ndk" /> |  | ||||||
|       <excludeFolder url="file://$MODULE_DIR$/build/intermediates/pre-dexed" /> |  | ||||||
|       <excludeFolder url="file://$MODULE_DIR$/build/intermediates/proguard" /> |  | ||||||
|       <excludeFolder url="file://$MODULE_DIR$/build/intermediates/res" /> |  | ||||||
|       <excludeFolder url="file://$MODULE_DIR$/build/intermediates/rs" /> |  | ||||||
|       <excludeFolder url="file://$MODULE_DIR$/build/intermediates/symbols" /> |  | ||||||
|       <excludeFolder url="file://$MODULE_DIR$/build/outputs" /> |  | ||||||
|       <excludeFolder url="file://$MODULE_DIR$/build/tmp" /> |  | ||||||
|     </content> |  | ||||||
|     <orderEntry type="jdk" jdkName="Android API 23 Platform" jdkType="Android SDK" /> |  | ||||||
|     <orderEntry type="sourceFolder" forTests="false" /> |  | ||||||
|     <orderEntry type="library" exported="" name="rhino-1.7.7" level="project" /> |  | ||||||
|     <orderEntry type="library" exported="" name="recyclerview-v7-23.1.0" level="project" /> |  | ||||||
|     <orderEntry type="library" exported="" name="support-annotations-23.1.0" level="project" /> |  | ||||||
|     <orderEntry type="library" exported="" name="appcompat-v7-23.1.0" level="project" /> |  | ||||||
|     <orderEntry type="library" exported="" name="design-23.1.0" level="project" /> |  | ||||||
|     <orderEntry type="library" exported="" name="jsoup-1.8.3" level="project" /> |  | ||||||
|     <orderEntry type="library" exported="" name="support-v4-23.1.0" level="project" /> |  | ||||||
|   </component> |  | ||||||
| </module> |  | ||||||
| @@ -8,8 +8,8 @@ android { | |||||||
|         applicationId "org.schabi.newpipe" |         applicationId "org.schabi.newpipe" | ||||||
|         minSdkVersion 15 |         minSdkVersion 15 | ||||||
|         targetSdkVersion 23 |         targetSdkVersion 23 | ||||||
|         versionCode 5 |         versionCode 6 | ||||||
|         versionName "0.5.0" |         versionName "0.6.0" | ||||||
|     } |     } | ||||||
|     buildTypes { |     buildTypes { | ||||||
|         release { |         release { | ||||||
|   | |||||||
| @@ -104,11 +104,9 @@ public class ActionBarHandler { | |||||||
|             } |             } | ||||||
|         } else if(preferedFormat.equals("m4a")){ |         } else if(preferedFormat.equals("m4a")){ | ||||||
|             for(VideoInfo.AudioStream s : audioStreams) { |             for(VideoInfo.AudioStream s : audioStreams) { | ||||||
|                 Log.d(TAG, MediaFormat.getMimeById(s.format) + " : " + Integer.toString(s.bandwidth)); |  | ||||||
|                 if(s.format == MediaFormat.M4A.id && |                 if(s.format == MediaFormat.M4A.id && | ||||||
|                         (audioStream == null || audioStream.bandwidth > s.bandwidth)) { |                         (audioStream == null || audioStream.bandwidth > s.bandwidth)) { | ||||||
|                     audioStream = s; |                     audioStream = s; | ||||||
|                     Log.d(TAG, "last choosen"); |  | ||||||
|                 } |                 } | ||||||
|             } |             } | ||||||
|         } |         } | ||||||
| @@ -125,15 +123,8 @@ public class ActionBarHandler { | |||||||
|         defaultPreferences = PreferenceManager.getDefaultSharedPreferences(activity); |         defaultPreferences = PreferenceManager.getDefaultSharedPreferences(activity); | ||||||
|  |  | ||||||
|         inflater.inflate(R.menu.videoitem_detail, menu); |         inflater.inflate(R.menu.videoitem_detail, menu); | ||||||
|         MenuItem playItem = menu.findItem(R.id.menu_item_play); |  | ||||||
|         MenuItem shareItem = menu.findItem(R.id.menu_item_share); |  | ||||||
|         MenuItem castItem = menu.findItem(R.id.action_play_with_kodi); |         MenuItem castItem = menu.findItem(R.id.action_play_with_kodi); | ||||||
|  |  | ||||||
|         MenuItemCompat.setShowAsAction(playItem, MenuItemCompat.SHOW_AS_ACTION_ALWAYS |  | ||||||
|                 | MenuItemCompat.SHOW_AS_ACTION_WITH_TEXT); |  | ||||||
|         MenuItemCompat.setShowAsAction(shareItem, MenuItemCompat.SHOW_AS_ACTION_IF_ROOM |  | ||||||
|                 | MenuItemCompat.SHOW_AS_ACTION_WITH_TEXT); |  | ||||||
|  |  | ||||||
|         castItem.setVisible(defaultPreferences |         castItem.setVisible(defaultPreferences | ||||||
|                 .getBoolean(activity.getString(R.string.showPlayWidthKodiPreference), false)); |                 .getBoolean(activity.getString(R.string.showPlayWidthKodiPreference), false)); | ||||||
|  |  | ||||||
| @@ -143,9 +134,6 @@ public class ActionBarHandler { | |||||||
|     public boolean onItemSelected(MenuItem item) { |     public boolean onItemSelected(MenuItem item) { | ||||||
|         int id = item.getItemId(); |         int id = item.getItemId(); | ||||||
|         switch(id) { |         switch(id) { | ||||||
|             case R.id.menu_item_play: |  | ||||||
|                 playVideo(); |  | ||||||
|                 return true; |  | ||||||
|             case R.id.menu_item_share: |             case R.id.menu_item_share: | ||||||
|                 if(!videoTitle.isEmpty()) { |                 if(!videoTitle.isEmpty()) { | ||||||
|                     Intent intent = new Intent(); |                     Intent intent = new Intent(); | ||||||
| @@ -235,7 +223,6 @@ public class ActionBarHandler { | |||||||
|     } |     } | ||||||
|  |  | ||||||
|     public void downloadVideo() { |     public void downloadVideo() { | ||||||
|         Log.d(TAG, "bla"); |  | ||||||
|         if(!videoTitle.isEmpty()) { |         if(!videoTitle.isEmpty()) { | ||||||
|             String videoSuffix = "." + MediaFormat.getSuffixById(videoStreams[selectedStream].format); |             String videoSuffix = "." + MediaFormat.getSuffixById(videoStreams[selectedStream].format); | ||||||
|             String audioSuffix = "." + MediaFormat.getSuffixById(audioStream.format); |             String audioSuffix = "." + MediaFormat.getSuffixById(audioStream.format); | ||||||
| @@ -321,7 +308,7 @@ public class ActionBarHandler { | |||||||
|                         } |                         } | ||||||
|                     }); |                     }); | ||||||
|             builder.create().show(); |             builder.create().show(); | ||||||
|             Log.d(TAG, "Either no Streaming player for audio was installed, or something important crashed:"); |             Log.e(TAG, "Either no Streaming player for audio was installed, or something important crashed:"); | ||||||
|             e.printStackTrace(); |             e.printStackTrace(); | ||||||
|         } |         } | ||||||
|     } |     } | ||||||
|   | |||||||
| @@ -253,10 +253,9 @@ public class PlayVideoActivity extends AppCompatActivity { | |||||||
|                     | View.SYSTEM_UI_FLAG_FULLSCREEN |                     | View.SYSTEM_UI_FLAG_FULLSCREEN | ||||||
|                     | View.SYSTEM_UI_FLAG_HIDE_NAVIGATION |                     | View.SYSTEM_UI_FLAG_HIDE_NAVIGATION | ||||||
|                     | View.SYSTEM_UI_FLAG_LAYOUT_STABLE); |                     | View.SYSTEM_UI_FLAG_LAYOUT_STABLE); | ||||||
|         } else { |  | ||||||
|             getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, |  | ||||||
|                     WindowManager.LayoutParams.FLAG_FULLSCREEN); |  | ||||||
|         } |         } | ||||||
|  |         getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, | ||||||
|  |                 WindowManager.LayoutParams.FLAG_FULLSCREEN); | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     private void adjustMediaControlMetrics() { |     private void adjustMediaControlMetrics() { | ||||||
|   | |||||||
| @@ -289,7 +289,8 @@ public class YoutubeExtractor implements Extractor { | |||||||
|                 .text(); |                 .text(); | ||||||
|  |  | ||||||
|         // Extracting the date itself from header |         // Extracting the date itself from header | ||||||
|         videoInfo.upload_date = matchGroup1("([A-Za-z]{3}\\s[\\d]{1,2},\\s[\\d]{4}$)", videoInfo.upload_date); |         videoInfo.upload_date = | ||||||
|  |                 matchGroup1("([0-9]{2}\\.[0-9]{2}\\.[0-9]{4})", videoInfo.upload_date); | ||||||
|  |  | ||||||
|         // description |         // description | ||||||
|         videoInfo.description = doc.select("p[id=\"eow-description\"]").first() |         videoInfo.description = doc.select("p[id=\"eow-description\"]").first() | ||||||
| @@ -459,12 +460,13 @@ public class YoutubeExtractor implements Extractor { | |||||||
|         try { |         try { | ||||||
|             decryptionFuncName = matchGroup1("\\.sig\\|\\|([a-zA-Z0-9$]+)\\(", playerCode); |             decryptionFuncName = matchGroup1("\\.sig\\|\\|([a-zA-Z0-9$]+)\\(", playerCode); | ||||||
|  |  | ||||||
|             String functionPattern = "(function " + decryptionFuncName.replace("$", "\\$") + "\\([a-zA-Z0-9_]*\\)\\{.+?\\})"; |             String functionPattern = "(var "+  decryptionFuncName.replace("$", "\\$") +"=function\\([a-zA-Z0-9_]*\\)\\{.+?\\})"; | ||||||
|             decryptionFunc = matchGroup1(functionPattern, playerCode); |             decryptionFunc = matchGroup1(functionPattern, playerCode); | ||||||
|  |             decryptionFunc += ";"; | ||||||
|  |  | ||||||
|             helperObjectName = matchGroup1(";([A-Za-z0-9_\\$]{2})\\...\\(", decryptionFunc); |             helperObjectName = matchGroup1(";([A-Za-z0-9_\\$]{2})\\...\\(", decryptionFunc); | ||||||
|  |  | ||||||
|             String helperPattern = "(var " + helperObjectName.replace("$", "\\$") + "=\\{.+?\\}\\};)function"; |             String helperPattern = "(var " + helperObjectName.replace("$", "\\$") + "=\\{.+?\\}\\};)"; | ||||||
|             helperObject = matchGroup1(helperPattern, playerCode); |             helperObject = matchGroup1(helperPattern, playerCode); | ||||||
|  |  | ||||||
|         } catch (Exception e) { |         } catch (Exception e) { | ||||||
| @@ -477,13 +479,13 @@ public class YoutubeExtractor implements Extractor { | |||||||
|         return decryptionCode; |         return decryptionCode; | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     private String decryptSignature(String encryptedSig, String decryptoinCode) { |     private String decryptSignature(String encryptedSig, String decryptionCode) { | ||||||
|         Context context = Context.enter(); |         Context context = Context.enter(); | ||||||
|         context.setOptimizationLevel(-1); |         context.setOptimizationLevel(-1); | ||||||
|         Object result = null; |         Object result = null; | ||||||
|         try { |         try { | ||||||
|             ScriptableObject scope = context.initStandardObjects(); |             ScriptableObject scope = context.initStandardObjects(); | ||||||
|             context.evaluateString(scope, decryptoinCode, "decryptionCode", 1, null); |             context.evaluateString(scope, decryptionCode, "decryptionCode", 1, null); | ||||||
|             Function decryptionFunc = (Function) scope.get("decrypt", scope); |             Function decryptionFunc = (Function) scope.get("decrypt", scope); | ||||||
|             result = decryptionFunc.call(context, scope, scope, new Object[]{encryptedSig}); |             result = decryptionFunc.call(context, scope, scope, new Object[]{encryptedSig}); | ||||||
|         } catch (Exception e) { |         } catch (Exception e) { | ||||||
| @@ -501,7 +503,7 @@ public class YoutubeExtractor implements Extractor { | |||||||
|             return mat.group(1); |             return mat.group(1); | ||||||
|         } |         } | ||||||
|         else { |         else { | ||||||
|             Log.e(TAG, "failed to find pattern \""+pattern+"\""); |             Log.e(TAG, "failed to find pattern \""+pattern+"\"inside of \""+input+"\""); | ||||||
|             new Exception("failed to find pattern \""+pattern+"\"").printStackTrace(); |             new Exception("failed to find pattern \""+pattern+"\"").printStackTrace(); | ||||||
|             return ""; |             return ""; | ||||||
|         } |         } | ||||||
|   | |||||||
| @@ -64,7 +64,6 @@ public class YoutubeSearchEngine implements SearchEngine { | |||||||
|         //if we've been passed a valid language code, append it to the URL |         //if we've been passed a valid language code, append it to the URL | ||||||
|         if(languageCode.length() > 0) { |         if(languageCode.length() > 0) { | ||||||
|           //assert Pattern.matches("[a-z]{2}(-([A-Z]{2}|[0-9]{1,3}))?", languageCode); |           //assert Pattern.matches("[a-z]{2}(-([A-Z]{2}|[0-9]{1,3}))?", languageCode); | ||||||
|                 Log.i(TAG, "URI: \""+builder+"\""); |  | ||||||
|                 site  = Downloader.download(url, languageCode); |                 site  = Downloader.download(url, languageCode); | ||||||
|         } |         } | ||||||
|         else { |         else { | ||||||
|   | |||||||
							
								
								
									
										
											BIN
										
									
								
								app/src/main/res/drawable/ic_file_download_black.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								app/src/main/res/drawable/ic_file_download_black.png
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							| After Width: | Height: | Size: 209 B | 
| @@ -214,7 +214,7 @@ | |||||||
|     <android.support.design.widget.FloatingActionButton |     <android.support.design.widget.FloatingActionButton | ||||||
|         android:id="@+id/playVideoButton" |         android:id="@+id/playVideoButton" | ||||||
|         android:layout_alignParentBottom="true" |         android:layout_alignParentBottom="true" | ||||||
|         android:layout_alignParentRight="true" |         android:layout_centerHorizontal="true" | ||||||
|         android:layout_width="wrap_content" |         android:layout_width="wrap_content" | ||||||
|         android:layout_height="wrap_content" |         android:layout_height="wrap_content" | ||||||
|         app:backgroundTint="@color/primaryColorYoutube" |         app:backgroundTint="@color/primaryColorYoutube" | ||||||
|   | |||||||
| @@ -1,16 +1,17 @@ | |||||||
| <?xml version="1.0" encoding="utf-8"?> | <?xml version="1.0" encoding="utf-8"?> | ||||||
| <menu xmlns:android="http://schemas.android.com/apk/res/android" | <menu xmlns:android="http://schemas.android.com/apk/res/android" | ||||||
|     xmlns:app="http://schemas.android.com/apk/res-auto"> |     xmlns:app="http://schemas.android.com/apk/res-auto"> | ||||||
|     <item android:id="@+id/menu_item_play" |  | ||||||
|         android:title="@string/play" |  | ||||||
|         app:showAsAction="ifRoom" |  | ||||||
|         android:icon="@drawable/ic_play_arrow_black"/> |  | ||||||
|  |  | ||||||
|     <item android:id="@+id/menu_item_play_audio" |     <item android:id="@+id/menu_item_play_audio" | ||||||
|         android:title="@string/playAudio" |         android:title="@string/playAudio" | ||||||
|         app:showAsAction="always" |         app:showAsAction="ifRoom" | ||||||
|         android:icon="@drawable/ic_headset_black" /> |         android:icon="@drawable/ic_headset_black" /> | ||||||
|  |  | ||||||
|  |     <item android:id="@+id/menu_item_download" | ||||||
|  |         app:showAsAction="ifRoom" | ||||||
|  |         android:title="@string/download" | ||||||
|  |         android:icon="@drawable/ic_file_download_black"/> | ||||||
|  |  | ||||||
|     <item android:id="@+id/menu_item_share" |     <item android:id="@+id/menu_item_share" | ||||||
|         android:title="@string/share" |         android:title="@string/share" | ||||||
|         app:showAsAction="ifRoom" |         app:showAsAction="ifRoom" | ||||||
| @@ -25,10 +26,6 @@ | |||||||
|         app:showAsAction="never" |         app:showAsAction="never" | ||||||
|         android:title="@string/open_in_browser" /> |         android:title="@string/open_in_browser" /> | ||||||
|  |  | ||||||
|     <item android:id="@+id/menu_item_download" |  | ||||||
|         app:showAsAction="never" |  | ||||||
|         android:title="@string/download"/> |  | ||||||
|  |  | ||||||
|     <item android:id="@+id/action_settings" |     <item android:id="@+id/action_settings" | ||||||
|         app:showAsAction="never" |         app:showAsAction="never" | ||||||
|         android:title="@string/settings"/> |         android:title="@string/settings"/> | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user
	 Christian Schabesberger
					Christian Schabesberger