Merge remote-tracking branch 'origin/master'

This commit is contained in:
Weblate 2017-02-01 20:58:21 +01:00
commit 4baa23af5f
9 changed files with 49 additions and 24 deletions

View File

@ -8,8 +8,8 @@ android {
applicationId "org.schabi.newpipe" applicationId "org.schabi.newpipe"
minSdkVersion 15 minSdkVersion 15
targetSdkVersion 25 targetSdkVersion 25
versionCode 22 versionCode 23
versionName "0.8.8" versionName "0.8.9"
} }
buildTypes { buildTypes {
release { release {
@ -32,10 +32,10 @@ android {
dependencies { dependencies {
testCompile 'junit:junit:4.12' testCompile 'junit:junit:4.12'
compile 'com.android.support:appcompat-v7:25.1.0' compile 'com.android.support:appcompat-v7:25.1.1'
compile 'com.android.support:support-v4:25.1.0' compile 'com.android.support:support-v4:25.1.1'
compile 'com.android.support:design:25.1.0' compile 'com.android.support:design:25.1.1'
compile 'com.android.support:recyclerview-v7:25.1.0' compile 'com.android.support:recyclerview-v7:25.1.1'
compile 'org.jsoup:jsoup:1.8.3' compile 'org.jsoup:jsoup:1.8.3'
compile 'org.mozilla:rhino:1.7.7' compile 'org.mozilla:rhino:1.7.7'
compile 'info.guardianproject.netcipher:netcipher:1.2' compile 'info.guardianproject.netcipher:netcipher:1.2'

View File

@ -73,8 +73,9 @@ public class ChannelActivity extends AppCompatActivity {
@Override @Override
protected void onCreate(Bundle savedInstanceState) { protected void onCreate(Bundle savedInstanceState) {
if (Objects.equals(PreferenceManager.getDefaultSharedPreferences(this) if (PreferenceManager.getDefaultSharedPreferences(this)
.getString("theme", getResources().getString(R.string.light_theme_title)), getResources().getString(R.string.dark_theme_title))) { .getString("theme", getResources().getString(R.string.light_theme_title)).
equals(getResources().getString(R.string.dark_theme_title))) {
setTheme(R.style.DarkTheme_NoActionBar); setTheme(R.style.DarkTheme_NoActionBar);
} }
super.onCreate(savedInstanceState); super.onCreate(savedInstanceState);

View File

@ -1,21 +1,19 @@
package org.schabi.newpipe; package org.schabi.newpipe;
import android.os.Build;
import android.os.Bundle; import android.os.Bundle;
import android.preference.PreferenceManager; import android.preference.PreferenceManager;
import android.support.v7.app.AppCompatActivity; import android.support.v7.app.AppCompatActivity;
import java.util.Objects;
import static org.schabi.newpipe.R.attr.theme;
public class ThemableActivity extends AppCompatActivity { public class ThemableActivity extends AppCompatActivity {
@Override @Override
protected void onCreate(Bundle savedInstanceState) { protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState); super.onCreate(savedInstanceState);
if (Objects.equals(PreferenceManager.getDefaultSharedPreferences(this) if (PreferenceManager.getDefaultSharedPreferences(this)
.getString("theme", getResources().getString(R.string.light_theme_title)), getResources().getString(R.string.dark_theme_title))) { .getString("theme", getResources().getString(R.string.light_theme_title)).
setTheme(R.style.DarkTheme); equals(getResources().getString(R.string.dark_theme_title))) {
setTheme(R.style.DarkTheme);
} }
} }
} }

View File

@ -125,10 +125,13 @@ public class StreamInfoWorker {
e.printStackTrace(); e.printStackTrace();
} catch (YoutubeStreamExtractor.DecryptException de) { } catch (YoutubeStreamExtractor.DecryptException de) {
// custom service related exceptions // custom service related exceptions
ErrorActivity.reportError(h, a, de, VideoItemDetailFragment.class, null,
ErrorActivity.ErrorInfo.make(ErrorActivity.REQUESTED_STREAM,
service.getServiceInfo().name, videoUrl, R.string.youtube_signature_decryption_error));
h.post(new Runnable() { h.post(new Runnable() {
@Override @Override
public void run() { public void run() {
onStreamInfoReceivedListener.onError(R.string.youtube_signature_decryption_error); a.finish();
} }
}); });
de.printStackTrace(); de.printStackTrace();

View File

@ -144,6 +144,7 @@ public class VideoItemDetailFragment extends Fragment {
TextView similarTitle = (TextView) activity.findViewById(R.id.detail_similar_title); TextView similarTitle = (TextView) activity.findViewById(R.id.detail_similar_title);
Button backgroundButton = (Button) Button backgroundButton = (Button)
activity.findViewById(R.id.detail_stream_thumbnail_window_background_button); activity.findViewById(R.id.detail_stream_thumbnail_window_background_button);
View thumbnailView = activity.findViewById(R.id.detail_thumbnail_view);
View topView = activity.findViewById(R.id.detailTopView); View topView = activity.findViewById(R.id.detailTopView);
Button channelButton = (Button) activity.findViewById(R.id.channel_button); Button channelButton = (Button) activity.findViewById(R.id.channel_button);
@ -275,6 +276,14 @@ public class VideoItemDetailFragment extends Fragment {
} }
}); });
//todo: make backgroundButton handle this
thumbnailView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
playVideo(info);
}
});
if (info.channel_url != null && info.channel_url != "") { if (info.channel_url != null && info.channel_url != "") {
channelButton.setOnClickListener(new View.OnClickListener() { channelButton.setOnClickListener(new View.OnClickListener() {
@Override @Override

View File

@ -42,15 +42,23 @@ public class Parser {
} }
public static String matchGroup1(String pattern, String input) throws RegexException { public static String matchGroup1(String pattern, String input) throws RegexException {
return matchGroup(pattern, input, 1);
}
public static String matchGroup(String pattern, String input, int group) throws RegexException {
Pattern pat = Pattern.compile(pattern); Pattern pat = Pattern.compile(pattern);
Matcher mat = pat.matcher(input); Matcher mat = pat.matcher(input);
boolean foundMatch = mat.find(); boolean foundMatch = mat.find();
if (foundMatch) { if (foundMatch) {
return mat.group(1); return mat.group(group);
} }
else { else {
//Log.e(TAG, "failed to find pattern \""+pattern+"\" inside of \""+input+"\""); //Log.e(TAG, "failed to find pattern \""+pattern+"\" inside of \""+input+"\"");
throw new RegexException("failed to find pattern \""+pattern+" inside of "+input+"\""); if(input.length() > 1024) {
throw new RegexException("failed to find pattern \""+pattern);
} else {
throw new RegexException("failed to find pattern \"" + pattern + " inside of " + input + "\"");
}
} }
} }

View File

@ -791,10 +791,15 @@ public class YoutubeStreamExtractor extends StreamExtractor {
try { try {
Downloader downloader = NewPipe.getDownloader(); Downloader downloader = NewPipe.getDownloader();
if(!playerUrl.contains("https://youtube.com")) {
//sometimes the https://youtube.com part does not get send with
//than we have to add it by hand
playerUrl = "https://youtube.com" + playerUrl;
}
String playerCode = downloader.download(playerUrl); String playerCode = downloader.download(playerUrl);
decryptionFuncName = decryptionFuncName =
Parser.matchGroup1("\\.sig\\|\\|([a-zA-Z0-9$]+)\\(", playerCode); Parser.matchGroup("([\"\\'])signature\\1\\s*,\\s*([a-zA-Z0-9$]+)\\(", playerCode, 2);
String functionPattern = "(" String functionPattern = "("
+ decryptionFuncName.replace("$", "\\$") + decryptionFuncName.replace("$", "\\$")

View File

@ -46,9 +46,10 @@ public class SettingsActivity extends PreferenceActivity {
@Override @Override
protected void onCreate(Bundle savedInstanceBundle) { protected void onCreate(Bundle savedInstanceBundle) {
if (Objects.equals(PreferenceManager.getDefaultSharedPreferences(this) if (PreferenceManager.getDefaultSharedPreferences(this)
.getString("theme", getResources().getString(R.string.light_theme_title)), getResources().getString(R.string.dark_theme_title))) { .getString("theme", getResources().getString(R.string.light_theme_title)).
setTheme(R.style.DarkTheme); equals(getResources().getString(R.string.dark_theme_title))) {
setTheme(R.style.DarkTheme);
} }
getDelegate().installViewFactory(); getDelegate().installViewFactory();
getDelegate().onCreate(savedInstanceBundle); getDelegate().onCreate(savedInstanceBundle);

View File

@ -42,7 +42,7 @@
android:id="@+id/errorMessageView" android:id="@+id/errorMessageView"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:textColor="?android:attr/colorAccent" android:textColor="?attr/colorAccent"
android:text="@string/info_labels"/> android:text="@string/info_labels"/>
<TextView <TextView
@ -63,7 +63,7 @@
android:id="@+id/errorInfoLabelsView" android:id="@+id/errorInfoLabelsView"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:textColor="?android:attr/colorAccent" android:textColor="?attr/colorAccent"
android:text="@string/info_labels"/> android:text="@string/info_labels"/>
<HorizontalScrollView <HorizontalScrollView