Closed WesleyTRV closed 2 years ago
I would like to add that you can still play the audio in the background, and the videos will sometimes be watchable after doing this.
Still the same issue. Age-restriction is broken.
Not sure if it's terribly relevant but I see that Android 8 is the cited Android OS version for this particular issue. I didn't look for additional issues citing the same problem with age-restricted videos suddenly not playing anymore, as I was really only trying to determine if there was already an open issue for it, which this satisfied. The only noteworthy difference is Android version. The issue is also reproducible using Android 12
I'm having the same issue it's part of why I downloaded this app I would really like to see this fixed please 😕😊
I'm still having the same issue. IDK if this bug also affected other devices but this bug needs to be fixed ASAP.
Also related: https://github.com/yt-dlp/yt-dlp/issues/3182
Is the bug fixed already? I'm still getting the issue.
I don't think it's been fixed yet as it's still an issue for me too
hint: if the issue is still open, it's not fixed yet. Don't comment that it's still broken either, because that's obvious. Do comment if it fixes itself though.
issue all versions android
Not working, Android 11
For everyone: please stop commenting on the issue unless you have something useful to add.
We know the extraction of YouTube age-restricted videos is broken, so it happens on all devices on every Android version, due to a YouTube change which patched the way we are able to get them.
It seems there is no way to get anonymously streams of age-restricted videos anymore, at least for the same amount.
I've created a bruteforce script that tries thousands of possible combinations between innertube clients and versions. TVHTML5_SIMPLY_EMBEDDED_PLAYER
with version 2.0
has currently no age restrictions. So we can access age-restricted videos anonymously again (at least for now).
POST /youtubei/v1/player?key=AIzaSyAO_FJ2SlqU8Q4STEHLGCilw_Y9_11qcW8 HTTP/2
Host: www.youtube.com
{
"context": {
"client": {
"clientName": "TVHTML5_SIMPLY_EMBEDDED_PLAYER",
"clientVersion": "2.0"
},
"thirdParty": {
"embedUrl": "https://www.youtube.com/",
}
},
"videoId": "dqRZDebPIGs",
"racyCheckOk": true,
"contentCheckOk": true
}
Fortunately I found a alternate app that allows me too watch and download video and I'll stick with that for now should this never be fixed 👍
Fortunately I found a alternate app that allows me too watch and download video and I'll stick with that for now should this never be fixed 👍
You ever read a thread for the exact problem you're looking to solve and the person replies "Thanks guys I solved it myself", but they don't say specifically what they did to solve it? That's how I feel about this comment, respectfully.
I do like the Brute force script mentioned above and I think I will work.
Feel free to collapse my comment as off topic...
I've created a bruteforce script
How to add this script to Newpipe?
Mod note: don't paste a giant wall of text. Only quote the part needed for context for your reply.
So, newpipe cannot download age restricted videos for now?
I've created a bruteforce script
Mod note: read https://github.com/TeamNewPipe/NewPipe/issues/8102#issuecomment-1081957057 edit: i will take care about it, thanks
i wrote a simple frida snippet to test that, and it works
Java.perform(function () {
var JsonBuilder = Java.use("com.grack.nanojson.JsonBuilder");
JsonBuilder.value.overload("java.lang.String", "java.lang.String").implementation = function (key, s) {
if (key == "clientName" && s == "ANDROID") {
s = "TVHTML5_SIMPLY_EMBEDDED_PLAYER"
} else if (key == "clientVersion" && s == "16.29.38") {
s = "2.0"
}
var ret_value = this.value(key, s);
return ret_value;
}
});
https://github.com/TeamNewPipe/NewPipeExtractor/blob/5a1873084526a8f67a9924c32457eb4a0a3101c4/extractor/src/main/java/org/schabi/newpipe/extractor/services/youtube/YoutubeParsingHelper.java#L1043-L1044 https://github.com/mmastrac/nanojson/blob/959842ccc39256f545a96581e78071a27cb83558/src/main/java/com/grack/nanojson/JsonBuilder.java#L122 (these two lines been hooked) but pretty slow, only 50-80kb with 1 connection. it means that not very useful to watch video, unless watch only low resolution video or download (multi thread) video before watch it.
but pretty slow, only 50-80kb with 1 connection. it means that not very useful to watch video, unless watch only low resolution video or download (multi thread) video before watch it.
So I guess we are stuck with having no access to watch age-restricted videos? Daim Europe, thanks 😕
Please test this APK: app-debug.zip
Please test this APK: app-debug.zip
IT WORKS! I obviously haven't tested it extensively yet, as you only posted it 5 minutes ago but I have confirmed that it works to bypass YT's age restriction script. It's a little slow but it appears that when you configure the app to use an external video player things are sped up a bit.
THANK YOU! You and anyone else that contributed are the dude(s)
I'll continue testing and report back...
Not sure if it's at all helpful but see the hidden comment below for a heap analysis (7 leaks)
Not sure if this is helpful at all but here is the heap dump analysis showing 7 leaks. If you've got a bugsnap account or anything similar, I'm happy to upload it there... The preview isn't displaying properly in the code box, hopefully this doesn't come spewing out in one long-ass chunk but if it does, I'll edit accordingly. Mods may feel free to do so as well if I haven't figured it out in a timely fashion
Edit - even using the "add code" function, it was still absurdly long so I just hid the comment as to not take an inordinate amount of space up. Please feel free to alter/adjust this post in an way that's helpful or conducive. Or delete it if it doesn't contribute anything meaningful
<====================================
HEAP ANALYSIS RESULT
====================================
7 APPLICATION LEAKS
References underlined with "~~~" are likely causes.
Learn more at https://squ.re/leaks.
2987 bytes retained by leaking objects
Signature: 4bb989b87242c1f13d563c5196326e4df01ad387
┬───
│ GC Root: Global variable in native code
│
├─ android.database.ContentObserver$Transport instance
│ Leaking: NO (VideoDetailFragment↓ is not leaking)
│ ↓ ContentObserver$Transport.mContentObserver
├─ org.schabi.newpipe.fragments.detail.VideoDetailFragment$1 instance
│ Leaking: NO (VideoDetailFragment↓ is not leaking)
│ Anonymous subclass of android.database.ContentObserver
│ ↓ VideoDetailFragment$1.this$0
├─ org.schabi.newpipe.fragments.detail.VideoDetailFragment instance
│ Leaking: NO (MainFragment↓ is not leaking and Fragment#mFragmentManager is
│ not null)
│ activity instance of org.schabi.newpipe.MainActivity with mDestroyed =
│ false
│ ↓ VideoDetailFragment.mFragmentManager
├─ androidx.fragment.app.FragmentManagerImpl instance
│ Leaking: NO (MainFragment↓ is not leaking)
│ ↓ FragmentManagerImpl.mFragmentStore
├─ androidx.fragment.app.FragmentStore instance
│ Leaking: NO (MainFragment↓ is not leaking)
│ ↓ FragmentStore.mActive
├─ java.util.HashMap instance
│ Leaking: NO (MainFragment↓ is not leaking)
│ ↓ HashMap.table
├─ java.util.HashMap$Node[] array
│ Leaking: NO (MainFragment↓ is not leaking)
│ ↓ HashMap$Node[].[1]
├─ java.util.HashMap$Node instance
│ Leaking: NO (MainFragment↓ is not leaking)
│ ↓ HashMap$Node.value
├─ androidx.fragment.app.FragmentStateManager instance
│ Leaking: NO (MainFragment↓ is not leaking)
│ ↓ FragmentStateManager.mFragment
├─ org.schabi.newpipe.fragments.MainFragment instance
│ Leaking: NO (Fragment#mFragmentManager is not null)
│ activity instance of org.schabi.newpipe.MainActivity with mDestroyed =
│ false
│ ↓ MainFragment.binding
│ ~~~~~~~
├─ org.schabi.newpipe.databinding.FragmentMainBinding instance
│ Leaking: UNKNOWN
│ Retaining 30574 bytes in 623 objects
│ ↓ FragmentMainBinding.rootView
│ ~~~~~~~~
╰→ android.widget.RelativeLayout instance
Leaking: YES (ObjectWatcher was watching this because org.schabi.newpipe.
fragments.MainFragment received Fragment#onDestroyView() callback
(references to its views should be cleared to prevent leaks))
Retaining 2987 bytes in 75 objects
key = 7b15b76e-435a-41ef-ad16-5e060e8f1c95
watchDurationMillis = 509725
retainedDurationMillis = 499689
View not part of a window view hierarchy
View.mAttachInfo is null (view detached)
View.mWindowAttachCount = 1
mContext instance of org.schabi.newpipe.MainActivity with mDestroyed =
false
8517 bytes retained by leaking objects
Displaying only 1 leak trace out of 3 with the same signature
Signature: 68fc49bac6716cbec651d5a79eb64683b3e1736
┬───
│ GC Root: Global variable in native code
│
├─ android.database.ContentObserver$Transport instance
│ Leaking: NO (VideoDetailFragment↓ is not leaking)
│ ↓ ContentObserver$Transport.mContentObserver
├─ org.schabi.newpipe.fragments.detail.VideoDetailFragment$1 instance
│ Leaking: NO (VideoDetailFragment↓ is not leaking)
│ Anonymous subclass of android.database.ContentObserver
│ ↓ VideoDetailFragment$1.this$0
├─ org.schabi.newpipe.fragments.detail.VideoDetailFragment instance
│ Leaking: NO (MainFragment↓ is not leaking and Fragment#mFragmentManager is
│ not null)
│ activity instance of org.schabi.newpipe.MainActivity with mDestroyed =
│ false
│ ↓ VideoDetailFragment.mFragmentManager
├─ androidx.fragment.app.FragmentManagerImpl instance
│ Leaking: NO (MainFragment↓ is not leaking)
│ ↓ FragmentManagerImpl.mFragmentStore
├─ androidx.fragment.app.FragmentStore instance
│ Leaking: NO (MainFragment↓ is not leaking)
│ ↓ FragmentStore.mActive
├─ java.util.HashMap instance
│ Leaking: NO (MainFragment↓ is not leaking)
│ ↓ HashMap.table
├─ java.util.HashMap$Node[] array
│ Leaking: NO (MainFragment↓ is not leaking)
│ ↓ HashMap$Node[].[1]
├─ java.util.HashMap$Node instance
│ Leaking: NO (MainFragment↓ is not leaking)
│ ↓ HashMap$Node.value
├─ androidx.fragment.app.FragmentStateManager instance
│ Leaking: NO (MainFragment↓ is not leaking)
│ ↓ FragmentStateManager.mFragment
├─ org.schabi.newpipe.fragments.MainFragment instance
│ Leaking: NO (Fragment#mFragmentManager is not null)
│ activity instance of org.schabi.newpipe.MainActivity with mDestroyed =
│ false
│ ↓ MainFragment.pagerAdapter
│ ~~~~~~~~~~~~
├─ org.schabi.newpipe.fragments.MainFragment$SelectedTabsPagerAdapter instance
│ Leaking: UNKNOWN
│ Retaining 100496 bytes in 2035 objects
│ context instance of org.schabi.newpipe.MainActivity with mDestroyed = false
│ ↓ MainFragment$SelectedTabsPagerAdapter.mObservable
│ ~~~~~~~~~~~
├─ android.database.DataSetObservable instance
│ Leaking: UNKNOWN
│ Retaining 100328 bytes in 2029 objects
│ ↓ DataSetObservable.mObservers
│ ~~~~~~~~~~
├─ java.util.ArrayList instance
│ Leaking: UNKNOWN
│ Retaining 100316 bytes in 2028 objects
│ ↓ ArrayList.elementData
│ ~~~~~~~~~~~
├─ java.lang.Object[] array
│ Leaking: UNKNOWN
│ Retaining 100296 bytes in 2027 objects
│ ↓ Object[].[0]
│ ~~~
├─ com.google.android.material.tabs.TabLayout$PagerAdapterObserver instance
│ Leaking: UNKNOWN
│ Retaining 33962 bytes in 684 objects
│ ↓ TabLayout$PagerAdapterObserver.this$0
│ ~~~~~~
├─ org.schabi.newpipe.views.ScrollableTabLayout instance
│ Leaking: UNKNOWN
│ Retaining 33950 bytes in 683 objects
│ View not part of a window view hierarchy
│ View.mAttachInfo is null (view detached)
│ View.mID = R.id.main_tab_layout
│ View.mWindowAttachCount = 1
│ mContext instance of org.schabi.newpipe.MainActivity with mDestroyed =
│ false
│ ↓ ScrollableTabLayout.mParent
│ ~~~~~~~
╰→ android.widget.RelativeLayout instance
Leaking: YES (ObjectWatcher was watching this because org.schabi.newpipe.
fragments.MainFragment received Fragment#onDestroyView() callback
(references to its views should be cleared to prevent leaks))
Retaining 2723 bytes in 70 objects
key = 03563b3f-3acb-4dd3-81d4-fbf494ad0685
watchDurationMillis = 648202
retainedDurationMillis = 638201
View not part of a window view hierarchy
View.mAttachInfo is null (view detached)
View.mWindowAttachCount = 1
mContext instance of org.schabi.newpipe.MainActivity with mDestroyed =
false
4573 bytes retained by leaking objects
Signature: e94c1e897038acb8f6a52161df3e9d4993eb6c45
┬───
│ GC Root: Global variable in native code
│
├─ android.view.contentcapture.
│ MainContentCaptureSession$$ExternalSyntheticLambda0 instance
│ Leaking: NO (MainActivity↓ is not leaking)
│ ↓ MainContentCaptureSession$$ExternalSyntheticLambda0.f$0
├─ android.view.contentcapture.MainContentCaptureSession instance
│ Leaking: NO (MainActivity↓ is not leaking)
│ mContext instance of org.schabi.newpipe.MainActivity with mDestroyed =
│ false
│ ↓ MainContentCaptureSession.mContext
├─ org.schabi.newpipe.MainActivity instance
│ Leaking: NO (SubscriptionFragment↓ is not leaking and Activity#mDestroyed
│ is false)
│ mApplication instance of org.schabi.newpipe.DebugApp
│ mBase instance of androidx.appcompat.view.ContextThemeWrapper, not
│ wrapping known Android context
│ ↓ MainActivity.mActivityResultRegistry
├─ androidx.activity.ComponentActivity$2 instance
│ Leaking: NO (SubscriptionFragment↓ is not leaking)
│ Anonymous subclass of androidx.activity.result.ActivityResultRegistry
│ this$0 instance of org.schabi.newpipe.MainActivity with mDestroyed = false
│ ↓ ComponentActivity$2.mKeyToCallback
├─ java.util.HashMap instance
│ Leaking: NO (SubscriptionFragment↓ is not leaking)
│ ↓ HashMap.table
├─ java.util.HashMap$Node[] array
│ Leaking: NO (SubscriptionFragment↓ is not leaking)
│ ↓ HashMap$Node[].[0]
├─ java.util.HashMap$Node instance
│ Leaking: NO (SubscriptionFragment↓ is not leaking)
│ ↓ HashMap$Node.value
├─ androidx.activity.result.ActivityResultRegistry$CallbackAndContract instance
│ Leaking: NO (SubscriptionFragment↓ is not leaking)
│ ↓ ActivityResultRegistry$CallbackAndContract.mCallback
├─ androidx.fragment.app.FragmentManager$10 instance
│ Leaking: NO (SubscriptionFragment↓ is not leaking)
│ Anonymous class implementing androidx.activity.result.
│ ActivityResultCallback
│ ↓ FragmentManager$10.this$0
├─ androidx.fragment.app.FragmentManagerImpl instance
│ Leaking: NO (SubscriptionFragment↓ is not leaking)
│ ↓ FragmentManagerImpl.mParent
├─ org.schabi.newpipe.local.subscription.SubscriptionFragment instance
│ Leaking: NO (Fragment#mFragmentManager is not null)
│ activity instance of org.schabi.newpipe.MainActivity with mDestroyed =
│ false
│ ↓ SubscriptionFragment._binding
│ ~~~~~~~~
├─ org.schabi.newpipe.databinding.FragmentSubscriptionBinding instance
│ Leaking: UNKNOWN
│ Retaining 68 bytes in 3 objects
│ ↓ FragmentSubscriptionBinding.rootView
│ ~~~~~~~~
╰→ android.widget.RelativeLayout instance
Leaking: YES (ObjectWatcher was watching this because org.schabi.newpipe.
local.subscription.SubscriptionFragment received Fragment#onDestroyView()
callback (references to its views should be cleared to prevent leaks))
Retaining 4573 bytes in 102 objects
key = 24cf5b5f-24dc-46e4-81a3-db66f33de290
watchDurationMillis = 509727
retainedDurationMillis = 499689
View not part of a window view hierarchy
View.mAttachInfo is null (view detached)
View.mWindowAttachCount = 1
mContext instance of org.schabi.newpipe.MainActivity with mDestroyed =
false
96136 bytes retained by leaking objects
Displaying only 1 leak trace out of 3 with the same signature
Signature: 758c83e8d6038ef40c865b5a71b252f19439a34
┬───
│ GC Root: Global variable in native code
│
├─ android.view.contentcapture.
│ MainContentCaptureSession$$ExternalSyntheticLambda0 instance
│ Leaking: NO (MainActivity↓ is not leaking)
│ ↓ MainContentCaptureSession$$ExternalSyntheticLambda0.f$0
├─ android.view.contentcapture.MainContentCaptureSession instance
│ Leaking: NO (MainActivity↓ is not leaking)
│ mContext instance of org.schabi.newpipe.MainActivity with mDestroyed =
│ false
│ ↓ MainContentCaptureSession.mContext
├─ org.schabi.newpipe.MainActivity instance
│ Leaking: NO (SubscriptionFragment↓ is not leaking and Activity#mDestroyed
│ is false)
│ mApplication instance of org.schabi.newpipe.DebugApp
│ mBase instance of androidx.appcompat.view.ContextThemeWrapper, not
│ wrapping known Android context
│ ↓ MainActivity.mActivityResultRegistry
├─ androidx.activity.ComponentActivity$2 instance
│ Leaking: NO (SubscriptionFragment↓ is not leaking)
│ Anonymous subclass of androidx.activity.result.ActivityResultRegistry
│ this$0 instance of org.schabi.newpipe.MainActivity with mDestroyed = false
│ ↓ ComponentActivity$2.mKeyToCallback
├─ java.util.HashMap instance
│ Leaking: NO (SubscriptionFragment↓ is not leaking)
│ ↓ HashMap.table
├─ java.util.HashMap$Node[] array
│ Leaking: NO (SubscriptionFragment↓ is not leaking)
│ ↓ HashMap$Node[].[0]
├─ java.util.HashMap$Node instance
│ Leaking: NO (SubscriptionFragment↓ is not leaking)
│ ↓ HashMap$Node.value
├─ androidx.activity.result.ActivityResultRegistry$CallbackAndContract instance
│ Leaking: NO (SubscriptionFragment↓ is not leaking)
│ ↓ ActivityResultRegistry$CallbackAndContract.mCallback
├─ androidx.fragment.app.FragmentManager$10 instance
│ Leaking: NO (SubscriptionFragment↓ is not leaking)
│ Anonymous class implementing androidx.activity.result.
│ ActivityResultCallback
│ ↓ FragmentManager$10.this$0
├─ androidx.fragment.app.FragmentManagerImpl instance
│ Leaking: NO (SubscriptionFragment↓ is not leaking)
│ ↓ FragmentManagerImpl.mParent
├─ org.schabi.newpipe.local.subscription.SubscriptionFragment instance
│ Leaking: NO (Fragment#mFragmentManager is not null)
│ activity instance of org.schabi.newpipe.MainActivity with mDestroyed =
│ false
│ ↓ SubscriptionFragment.groupAdapter
│ ~~~~~~~~~~~~
├─ com.xwray.groupie.GroupAdapter instance
│ Leaking: UNKNOWN
│ Retaining 252 bytes in 11 objects
│ ↓ GroupAdapter.mObservable
│ ~~~~~~~~~~~
├─ androidx.recyclerview.widget.RecyclerView$AdapterDataObservable instance
│ Leaking: UNKNOWN
│ Retaining 108 bytes in 6 objects
│ ↓ RecyclerView$AdapterDataObservable.mObservers
│ ~~~~~~~~~~
├─ java.util.ArrayList instance
│ Leaking: UNKNOWN
│ Retaining 96 bytes in 5 objects
│ ↓ ArrayList.elementData
│ ~~~~~~~~~~~
├─ java.lang.Object[] array
│ Leaking: UNKNOWN
│ Retaining 76 bytes in 4 objects
│ ↓ Object[].[0]
│ ~~~
├─ androidx.recyclerview.widget.RecyclerView$RecyclerViewDataObserver instance
│ Leaking: UNKNOWN
│ Retaining 12 bytes in 1 objects
│ ↓ RecyclerView$RecyclerViewDataObserver.this$0
│ ~~~~~~
├─ androidx.recyclerview.widget.RecyclerView instance
│ Leaking: UNKNOWN
│ Retaining 2194738 bytes in 1707 objects
│ View not part of a window view hierarchy
│ View.mAttachInfo is null (view detached)
│ View.mID = R.id.items_list
│ View.mWindowAttachCount = 1
│ mContext instance of org.schabi.newpipe.MainActivity with mDestroyed =
│ false
│ ↓ RecyclerView.mParent
│ ~~~~~~~
╰→ android.widget.RelativeLayout instance
Leaking: YES (ObjectWatcher was watching this because org.schabi.newpipe.
local.subscription.SubscriptionFragment received Fragment#onDestroyView()
callback (references to its views should be cleared to prevent leaks))
Retaining 32016 bytes in 668 objects
key = 9fcde48c-bc32-4066-98de-1adadea60ce4
watchDurationMillis = 648202
retainedDurationMillis = 638201
View not part of a window view hierarchy
View.mAttachInfo is null (view detached)
View.mWindowAttachCount = 1
mContext instance of org.schabi.newpipe.MainActivity with mDestroyed =
false
4915 bytes retained by leaking objects
Signature: 5fe849ce30a038be8ff2a51c1ecace8b7d8a6
┬───
│ GC Root: Global variable in native code
│
├─ android.view.contentcapture.
│ MainContentCaptureSession$$ExternalSyntheticLambda0 instance
│ Leaking: NO (MainActivity↓ is not leaking)
│ ↓ MainContentCaptureSession$$ExternalSyntheticLambda0.f$0
├─ android.view.contentcapture.MainContentCaptureSession instance
│ Leaking: NO (MainActivity↓ is not leaking)
│ mContext instance of org.schabi.newpipe.MainActivity with mDestroyed =
│ false
│ ↓ MainContentCaptureSession.mContext
├─ org.schabi.newpipe.MainActivity instance
│ Leaking: NO (DefaultKioskFragment↓ is not leaking and Activity#mDestroyed
│ is false)
│ mApplication instance of org.schabi.newpipe.DebugApp
│ mBase instance of androidx.appcompat.view.ContextThemeWrapper, not
│ wrapping known Android context
│ ↓ MainActivity.mActivityResultRegistry
├─ androidx.activity.ComponentActivity$2 instance
│ Leaking: NO (DefaultKioskFragment↓ is not leaking)
│ Anonymous subclass of androidx.activity.result.ActivityResultRegistry
│ this$0 instance of org.schabi.newpipe.MainActivity with mDestroyed = false
│ ↓ ComponentActivity$2.mKeyToCallback
├─ java.util.HashMap instance
│ Leaking: NO (DefaultKioskFragment↓ is not leaking)
│ ↓ HashMap.table
├─ java.util.HashMap$Node[] array
│ Leaking: NO (DefaultKioskFragment↓ is not leaking)
│ ↓ HashMap$Node[].[7]
├─ java.util.HashMap$Node instance
│ Leaking: NO (DefaultKioskFragment↓ is not leaking)
│ ↓ HashMap$Node.value
├─ androidx.activity.result.ActivityResultRegistry$CallbackAndContract instance
│ Leaking: NO (DefaultKioskFragment↓ is not leaking)
│ ↓ ActivityResultRegistry$CallbackAndContract.mCallback
├─ androidx.fragment.app.FragmentManager$11 instance
│ Leaking: NO (DefaultKioskFragment↓ is not leaking)
│ Anonymous class implementing androidx.activity.result.
│ ActivityResultCallback
│ ↓ FragmentManager$11.this$0
├─ androidx.fragment.app.FragmentManagerImpl instance
│ Leaking: NO (DefaultKioskFragment↓ is not leaking)
│ ↓ FragmentManagerImpl.mParent
├─ org.schabi.newpipe.fragments.list.kiosk.DefaultKioskFragment instance
│ Leaking: NO (Fragment#mFragmentManager is not null)
│ activity instance of org.schabi.newpipe.MainActivity with mDestroyed =
│ false
│ ↓ DefaultKioskFragment.emptyStateView
│ ~~~~~~~~~~~~~~
├─ android.widget.LinearLayout instance
│ Leaking: UNKNOWN
│ Retaining 4381 bytes in 44 objects
│ View not part of a window view hierarchy
│ View.mAttachInfo is null (view detached)
│ View.mID = R.id.empty_state_view
│ View.mWindowAttachCount = 1
│ mContext instance of org.schabi.newpipe.MainActivity with mDestroyed =
│ false
│ ↓ LinearLayout.mParent
│ ~~~~~~~
╰→ android.widget.RelativeLayout instance
Leaking: YES (ObjectWatcher was watching this because org.schabi.newpipe.
fragments.list.kiosk.DefaultKioskFragment received
Fragment#onDestroyView() callback (references to its views should be
cleared to prevent leaks))
Retaining 4915 bytes in 112 objects
key = a43ef9a4-1d33-498b-937c-bf861462e2ff
watchDurationMillis = 509727
retainedDurationMillis = 499689
View not part of a window view hierarchy
View.mAttachInfo is null (view detached)
View.mWindowAttachCount = 1
mContext instance of org.schabi.newpipe.MainActivity with mDestroyed =
false
113710 bytes retained by leaking objects
Displaying only 1 leak trace out of 3 with the same signature
Signature: aebd5c76cde34df8e97975e2ef58fd3f1ea9a4
┬───
│ GC Root: Global variable in native code
│
├─ android.view.contentcapture.
│ MainContentCaptureSession$$ExternalSyntheticLambda0 instance
│ Leaking: NO (MainActivity↓ is not leaking)
│ ↓ MainContentCaptureSession$$ExternalSyntheticLambda0.f$0
├─ android.view.contentcapture.MainContentCaptureSession instance
│ Leaking: NO (MainActivity↓ is not leaking)
│ mContext instance of org.schabi.newpipe.MainActivity with mDestroyed =
│ false
│ ↓ MainContentCaptureSession.mContext
├─ org.schabi.newpipe.MainActivity instance
│ Leaking: NO (DefaultKioskFragment↓ is not leaking and Activity#mDestroyed
│ is false)
│ mApplication instance of org.schabi.newpipe.DebugApp
│ mBase instance of androidx.appcompat.view.ContextThemeWrapper, not
│ wrapping known Android context
│ ↓ MainActivity.mActivityResultRegistry
├─ androidx.activity.ComponentActivity$2 instance
│ Leaking: NO (DefaultKioskFragment↓ is not leaking)
│ Anonymous subclass of androidx.activity.result.ActivityResultRegistry
│ this$0 instance of org.schabi.newpipe.MainActivity with mDestroyed = false
│ ↓ ComponentActivity$2.mKeyToCallback
├─ java.util.HashMap instance
│ Leaking: NO (DefaultKioskFragment↓ is not leaking)
│ ↓ HashMap.table
├─ java.util.HashMap$Node[] array
│ Leaking: NO (DefaultKioskFragment↓ is not leaking)
│ ↓ HashMap$Node[].[7]
├─ java.util.HashMap$Node instance
│ Leaking: NO (DefaultKioskFragment↓ is not leaking)
│ ↓ HashMap$Node.value
├─ androidx.activity.result.ActivityResultRegistry$CallbackAndContract instance
│ Leaking: NO (DefaultKioskFragment↓ is not leaking)
│ ↓ ActivityResultRegistry$CallbackAndContract.mCallback
├─ androidx.fragment.app.FragmentManager$11 instance
│ Leaking: NO (DefaultKioskFragment↓ is not leaking)
│ Anonymous class implementing androidx.activity.result.
│ ActivityResultCallback
│ ↓ FragmentManager$11.this$0
├─ androidx.fragment.app.FragmentManagerImpl instance
│ Leaking: NO (DefaultKioskFragment↓ is not leaking)
│ ↓ FragmentManagerImpl.mParent
├─ org.schabi.newpipe.fragments.list.kiosk.DefaultKioskFragment instance
│ Leaking: NO (Fragment#mFragmentManager is not null)
│ activity instance of org.schabi.newpipe.MainActivity with mDestroyed =
│ false
│ ↓ DefaultKioskFragment.infoListAdapter
│ ~~~~~~~~~~~~~~~
├─ org.schabi.newpipe.info_list.InfoListAdapter instance
│ Leaking: UNKNOWN
│ Retaining 1839968 bytes in 31984 objects
│ ↓ InfoListAdapter.mObservable
│ ~~~~~~~~~~~
├─ androidx.recyclerview.widget.RecyclerView$AdapterDataObservable instance
│ Leaking: UNKNOWN
│ Retaining 1839468 bytes in 31980 objects
│ ↓ RecyclerView$AdapterDataObservable.mObservers
│ ~~~~~~~~~~
├─ java.util.ArrayList instance
│ Leaking: UNKNOWN
│ Retaining 1839456 bytes in 31979 objects
│ ↓ ArrayList.elementData
│ ~~~~~~~~~~~
├─ java.lang.Object[] array
│ Leaking: UNKNOWN
│ Retaining 1839436 bytes in 31978 objects
│ ↓ Object[].[0]
│ ~~~
├─ androidx.recyclerview.widget.RecyclerView$RecyclerViewDataObserver instance
│ Leaking: UNKNOWN
│ Retaining 637306 bytes in 10921 objects
│ ↓ RecyclerView$RecyclerViewDataObserver.this$0
│ ~~~~~~
├─ org.schabi.newpipe.views.NewPipeRecyclerView instance
│ Leaking: UNKNOWN
│ Retaining 637294 bytes in 10920 objects
│ View not part of a window view hierarchy
│ View.mAttachInfo is null (view detached)
│ View.mID = R.id.items_list
│ View.mWindowAttachCount = 1
│ mContext instance of org.schabi.newpipe.MainActivity with mDestroyed =
│ false
│ ↓ NewPipeRecyclerView.mParent
│ ~~~~~~~
╰→ android.widget.RelativeLayout instance
Leaking: YES (ObjectWatcher was watching this because org.schabi.newpipe.
fragments.list.kiosk.DefaultKioskFragment received
Fragment#onDestroyView() callback (references to its views should be
cleared to prevent leaks))
Retaining 42812 bytes in 976 objects
key = f70c010a-65ea-4026-b884-4fa11c979dda
watchDurationMillis = 648203
retainedDurationMillis = 638201
View not part of a window view hierarchy
View.mAttachInfo is null (view detached)
View.mWindowAttachCount = 1
mContext instance of org.schabi.newpipe.MainActivity with mDestroyed =
false
10252 bytes retained by leaking objects
Signature: ffd68db09531a40e5a1f380bd7d4694ac1d24a
┬───
│ GC Root: Global variable in native code
│
├─ android.view.contentcapture.
│ MainContentCaptureSession$$ExternalSyntheticLambda0 instance
│ Leaking: NO (MainActivity↓ is not leaking)
│ ↓ MainContentCaptureSession$$ExternalSyntheticLambda0.f$0
├─ android.view.contentcapture.MainContentCaptureSession instance
│ Leaking: NO (MainActivity↓ is not leaking)
│ mContext instance of org.schabi.newpipe.MainActivity with mDestroyed =
│ false
│ ↓ MainContentCaptureSession.mContext
├─ org.schabi.newpipe.MainActivity instance
│ Leaking: NO (BookmarkFragment↓ is not leaking and Activity#mDestroyed is
│ false)
│ mApplication instance of org.schabi.newpipe.DebugApp
│ mBase instance of androidx.appcompat.view.ContextThemeWrapper, not
│ wrapping known Android context
│ ↓ MainActivity.mActivityResultRegistry
├─ androidx.activity.ComponentActivity$2 instance
│ Leaking: NO (BookmarkFragment↓ is not leaking)
│ Anonymous subclass of androidx.activity.result.ActivityResultRegistry
│ this$0 instance of org.schabi.newpipe.MainActivity with mDestroyed = false
│ ↓ ComponentActivity$2.mKeyToCallback
├─ java.util.HashMap instance
│ Leaking: NO (BookmarkFragment↓ is not leaking)
│ ↓ HashMap.table
├─ java.util.HashMap$Node[] array
│ Leaking: NO (BookmarkFragment↓ is not leaking)
│ ↓ HashMap$Node[].[11]
├─ java.util.HashMap$Node instance
│ Leaking: NO (BookmarkFragment↓ is not leaking)
│ ↓ HashMap$Node.value
├─ androidx.activity.result.ActivityResultRegistry$CallbackAndContract instance
│ Leaking: NO (BookmarkFragment↓ is not leaking)
│ ↓ ActivityResultRegistry$CallbackAndContract.mCallback
├─ androidx.fragment.app.FragmentManager$10 instance
│ Leaking: NO (BookmarkFragment↓ is not leaking)
│ Anonymous class implementing androidx.activity.result.
│ ActivityResultCallback
│ ↓ FragmentManager$10.this$0
├─ androidx.fragment.app.FragmentManagerImpl instance
│ Leaking: NO (BookmarkFragment↓ is not leaking)
│ ↓ FragmentManagerImpl.mParent
├─ org.schabi.newpipe.local.bookmark.BookmarkFragment instance
│ Leaking: NO (Fragment#mFragmentManager is not null)
│ activity instance of org.schabi.newpipe.MainActivity with mDestroyed =
│ false
│ ↓ BookmarkFragment.emptyStateView
│ ~~~~~~~~~~~~~~
├─ android.widget.LinearLayout instance
│ Leaking: UNKNOWN
│ Retaining 5585 bytes in 67 objects
│ View not part of a window view hierarchy
│ View.mAttachInfo is null (view detached)
│ View.mID = R.id.empty_state_view
│ View.mWindowAttachCount = 1
│ mContext instance of org.schabi.newpipe.MainActivity with mDestroyed =
│ false
│ ↓ LinearLayout.mParent
│ ~~~~~~~
╰→ android.widget.RelativeLayout instance
Leaking: YES (ObjectWatcher was watching this because org.schabi.newpipe.
local.bookmark.BookmarkFragment received Fragment#onDestroyView()
callback (references to its views should be cleared to prevent leaks))
Retaining 10252 bytes in 246 objects
key = 06455e69-de56-42ff-a462-0fed7a8e2a07
watchDurationMillis = 509725
retainedDurationMillis = 499689
View not part of a window view hierarchy
View.mAttachInfo is null (view detached)
View.mWindowAttachCount = 1
mContext instance of org.schabi.newpipe.MainActivity with mDestroyed =
false
====================================
0 LIBRARY LEAKS
A Library Leak is a leak caused by a known bug in 3rd party code that you do
not have control over.
See https://square.github.
io/leakcanary/fundamentals-how-leakcanary-works/#4-categorizing-leaks
====================================
METADATA
Please include this in bug reports and Stack Overflow questions.
Build.VERSION.SDK_INT: 32
Build.MANUFACTURER: Google
LeakCanary version: 2.5
App process name: org.schabi.newpipe.debug.ytmoreparamsinnertuberequests
Stats: LruCache[maxSize=3000,hits=10568,misses=227753,hitRate=4%]
RandomAccess[bytes=12341415,reads=227753,travel=142651198782,range=43823468,size
=53675228]
Analysis duration: 6099 ms
Heap dump file path: /storage/emulated/0/Download/leakcanary-org.schabi.newpipe.
debug.ytmoreparamsinnertuberequests/2022-04-02_14-09-58_302.hprof
Heap dump timestamp: 1648923006790
Heap dump duration: 2025 ms
====================================>
Works. 👍 Now comedians can swear again.
Can also confirm this is working now.
Works !
Please test this APK: app-debug.zip
Thought it was gonna be a virus or scam but it works! Thanks!
No, it's not at all, I compiled it myself from sources I published that you can find here:
https://github.com/TiA4f8R/NewPipe/tree/yt-more-params-innertube-requests https://github.com/TiA4f8R/NewPipeExtractor/tree/yt-more-params-innertube-requests (corresponding PR: TeamNewPipe/NewPipeExtractor#780)
Only extractor changes are needed to fix the extraction (the app changes only change the extractor used).
Is there any ETA about the merge of the changes of TiA4f8R?
His apk fixed the issue.
Checklist
Affected version
0.22.1
Steps to reproduce the bug
Expected behavior
Age restricted video will normally load up and proceed.
Actual behavior
This message shows up and it's annoying.
Screenshots/Screen recordings
Logs
Exception
Crash log
Affected Android/Custom ROM version
Android 8
Affected device model
Galaxy S7
Additional information
This bug is in requirement of an immediate fix/patch ASAP.