NewPipe icon indicating copy to clipboard operation
NewPipe copied to clipboard

Feed aborts loading videos/subscribers for channels with pronouns

Open lmsalustri opened this issue 1 year ago • 13 comments

Checklist

  • [X] I am able to reproduce the bug with the latest version given here: CLICK THIS LINK.
  • [X] I made sure that there are no existing issues - open or closed - which I could contribute my information to.
  • [X] I have read the FAQ and my problem isn't listed.
  • [X] I have taken the time to fill in all the required details. I understand that the bug report will be dismissed otherwise.
  • [X] This issue contains only one bug.
  • [X] I have read and understood the contribution guidelines.

Affected version

0.27.2

Steps to reproduce the bug

  1. Pull up to load feed
  2. Affected channel doesn't load, error occurs

Expected behavior

The channel videos should load properly.

Actual behavior

"Not loaded: 1" shows up at the top, and the channel videos don't load because it can't fetch the subscriber count.

Screenshots/Screen recordings

Screenshot_20240727_145035_NewPipe.jpg

Logs

Exception

  • User Action: requested feed
  • Request:
  • Content Country: US
  • Content Language: en-US
  • App Language: en_US
  • Service: none
  • Version: 0.27.2
  • OS: Linux samsung/b0qsqw/b0q:14/UP1A.231005.007/S908USQU4EXE1:user/release-keys 14 - 34
Crash log

org.schabi.newpipe.local.feed.service.FeedLoadService$RequestException: 0:https://www.youtube.com/channel/UCOuw-jFRsAgZtyDXz8e4v3A
	at org.schabi.newpipe.local.feed.service.FeedLoadManager$DatabaseConsumer.accept$lambda$1(FeedLoadManager.kt:285)
	at org.schabi.newpipe.local.feed.service.FeedLoadManager$DatabaseConsumer.$r8$lambda$nP61ZaEPy7GNixUaWP6wyXDQaWo(FeedLoadManager.kt:0)
	at org.schabi.newpipe.local.feed.service.FeedLoadManager$DatabaseConsumer$$ExternalSyntheticLambda0.run(R8$$SyntheticClass:0)
	at androidx.room.RoomDatabase.runInTransaction(RoomDatabase.kt:585)
	at org.schabi.newpipe.local.feed.service.FeedLoadManager$DatabaseConsumer.accept(FeedLoadManager.kt:271)
	at org.schabi.newpipe.local.feed.service.FeedLoadManager$DatabaseConsumer.accept(FeedLoadManager.kt:268)
	at io.reactivex.rxjava3.internal.operators.flowable.FlowableDoOnEach$DoOnEachSubscriber.onNext(FlowableDoOnEach.java:86)
	at io.reactivex.rxjava3.internal.operators.flowable.FlowableBuffer$PublisherBufferExactSubscriber.onNext(FlowableBuffer.java:124)
	at io.reactivex.rxjava3.internal.operators.flowable.FlowableObserveOn$ObserveOnSubscriber.runAsync(FlowableObserveOn.java:403)
	at io.reactivex.rxjava3.internal.operators.flowable.FlowableObserveOn$BaseObserveOnSubscriber.run(FlowableObserveOn.java:178)
	at io.reactivex.rxjava3.internal.schedulers.ScheduledRunnable.run(ScheduledRunnable.java:65)
	at io.reactivex.rxjava3.internal.schedulers.ScheduledRunnable.call(ScheduledRunnable.java:56)
	at java.util.concurrent.FutureTask.run(FutureTask.java:264)
	at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:307)
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:644)
	at java.lang.Thread.run(Thread.java:1012)
Caused by: org.schabi.newpipe.extractor.utils.Parser$RegexException: Failed to find pattern "([\d]+([\.,][\d]+)?)" inside of "@BitByter"
	at org.schabi.newpipe.extractor.utils.Parser.matchGroup(Parser.java:75)
	at org.schabi.newpipe.extractor.utils.Parser.matchGroup(Parser.java:60)
	at org.schabi.newpipe.extractor.utils.Parser.matchGroup1(Parser.java:49)
	at org.schabi.newpipe.extractor.utils.Utils.mixedNumberWordToLong(Utils.java:93)
	at org.schabi.newpipe.extractor.services.youtube.extractors.YoutubeChannelExtractor.getSubscriberCountFromPageChannelHeader(YoutubeChannelExtractor.java:303)
	at org.schabi.newpipe.extractor.services.youtube.extractors.YoutubeChannelExtractor.getSubscriberCount(YoutubeChannelExtractor.java:248)
	at org.schabi.newpipe.extractor.channel.ChannelInfo.getInfo(ChannelInfo.java:86)
	at org.schabi.newpipe.extractor.channel.ChannelInfo.getInfo(ChannelInfo.java:53)
	at org.schabi.newpipe.util.ExtractorHelper.lambda$getChannelInfo$4(ExtractorHelper.java:126)
	at org.schabi.newpipe.util.ExtractorHelper.$r8$lambda$BOLWstv98dC8pFAG_uir5gPXYwY(ExtractorHelper.java:0)
	at org.schabi.newpipe.util.ExtractorHelper$$ExternalSyntheticLambda13.call(R8$$SyntheticClass:0)
	at io.reactivex.rxjava3.internal.operators.single.SingleFromCallable.subscribeActual(SingleFromCallable.java:43)
	at io.reactivex.rxjava3.core.Single.subscribe(Single.java:4855)
	at io.reactivex.rxjava3.internal.operators.single.SingleDoOnSuccess.subscribeActual(SingleDoOnSuccess.java:35)
	at io.reactivex.rxjava3.core.Single.subscribe(Single.java:4855)
	at io.reactivex.rxjava3.internal.operators.single.SingleOnErrorReturn.subscribeActual(SingleOnErrorReturn.java:38)
	at io.reactivex.rxjava3.core.Single.subscribe(Single.java:4855)
	at io.reactivex.rxjava3.core.Single.blockingGet(Single.java:3644)
	at org.schabi.newpipe.local.feed.service.FeedLoadManager.loadStreams(FeedLoadManager.kt:179)
	at org.schabi.newpipe.local.feed.service.FeedLoadManager.access$loadStreams(FeedLoadManager.kt:33)
	at org.schabi.newpipe.local.feed.service.FeedLoadManager$startLoading$7.apply(FeedLoadManager.kt:113)
	at org.schabi.newpipe.local.feed.service.FeedLoadManager$startLoading$7.apply(FeedLoadManager.kt:112)
	at io.reactivex.rxjava3.internal.operators.parallel.ParallelMap$ParallelMapSubscriber.onNext(ParallelMap.java:116)
	at io.reactivex.rxjava3.internal.operators.parallel.ParallelFilter$ParallelFilterSubscriber.tryOnNext(ParallelFilter.java:132)
	at io.reactivex.rxjava3.internal.operators.parallel.ParallelRunOn$RunOnConditionalSubscriber.run(ParallelRunOn.java:399)
	... 7 more


Affected Android/Custom ROM version

Android 14 / OneUI 6.1

Affected device model

Samsung Galaxy S22 Ultra

Additional information

The affected channel has 229 subscribers at the time of writing. The subscriber count is correct when searching the channel in NewPipe. Clicking on the channel shows "Subscriber count unavailable" as in #10826, but avatar and banner load fine.

The "caused by" portion of the log is the same as #9442, but this error occurs in feed loading, not search. What I find odd is that my log doesn't show "Could not get subscriber count" like that one does.

Unsubscribing and resubscribing does not fix this. Haven't seen this error in any prior version.

lmsalustri avatar Jul 27 '24 19:07 lmsalustri

The issue is with any channel that has a pronouns field. Maybe the title could be updated to reflect this?

I've done a little digging and I think the following two underlying issues are the cause:

In YoutubeChannelExtractor.java:

the metadata in the header is narrowed with the following filter:

.filter(metadataParts -> metadataParts.size() == 2)
.findFirst()

The comment explains that this is to "Find metadata parts which have two elements: channel handle and subscriber count." This approach appears to be outdated now, and only works by accident with most channels. Look at the JSON for a channel with no pronouns:

[
  {
    "metadataParts": [
      {
        "text": {
          "content": "@microzoe"
        },
        "enableTruncation": true
      }
    ]
  },
  {
    "metadataParts": [
      {
        "text": {
          "content": "2.95K subscribers"
        }
      },
      {
        "text": {
          "content": "3 videos",
          "styleRuns": [
            {
              "startIndex": 0,
              "length": 8
            }
          ]
        }
      }
    ]
  }
]

That's not what the comment describes - the subscriber count is no longer in the same metadataParts as the channel name. It just happens to still be in the first metadataParts that has length 2. But this is not true if the channel header contains pronouns. In this case the first metadataParts looks like this:

      {
        "text": {
          "content": "@anarchozoe"
        },
        "enableTruncation": true
      },
      {
        "text": {
          "content": "she/her"
        }
      }

So here this metadataParts will be selected and the Regex will fail to extract anything (which is why the channel title is printed in the crash log).

In addition, given that extracting subscriber count with a Regex is flaky in the first place (as the comments note), the code should be changed to catch the RegexException and return UNKNOWN_SUBSCRIBER_COUNT. There's no good reason for updating subscriptions to fail just because NewPipe was unable to extract the subscriber count.

Ideally an expert in this code would come by and fix these issues; I'm not certain what issues there might be in a naive approach like grabbing the second metadataParts - in all the channels I've checked, the subscriber count is currently in that row, and the first row contains the channel title.

If no one fixes it in a month or so I can do a PR to get the ball rolling.

afontenot avatar Oct 09 '24 17:10 afontenot

Updated the title. Thanks for the info!

lmsalustri avatar Oct 11 '24 02:10 lmsalustri

Workaround, if you just want fetching your subscriptions to work:

screenshot of feed section of content settings; 'fetch from dedicated feed if available' is selected.

This is in the "Content" section of the NewPipe settings. It's true that it doesn't show the video duration in your subscription feed any more, but that's a trade I'm willing to make to have fetching the subscriptions work.

I have a branch that fixes the issue with the regex exception, but I'm unable to test it because I can't compile the project.

afontenot avatar Oct 15 '24 19:10 afontenot

I am getting this same-issue, recently: one-particular channel, ShempOfficial, is the only one which I'm subscribed to in NewPipe that will always say "subscriber count unavailable".

I did a search for open-tickets on here and found this one. So I checked their channel on the YouTube website and indeed, they have their pronouns listed ("he/him/they/them") on their channel.

Hopefully this issue will be fixed soon, as every time I refresh the "All" feed while subbed to them, I get "Sorry, something went wrong", and am asked to report it. Now I know what the cause is, at-least I now know I can safely ignore the errors.

dftf-stu avatar Nov 04 '24 14:11 dftf-stu

My PR is open now, so with any luck the issue with refreshing subscriptions will be fixed in the next NewPipe release. I'm going to leave the profile scraping changes to someone more experienced with this code, but my findings above should be easy to follow.

afontenot avatar Nov 04 '24 21:11 afontenot

with any luck the issue with refreshing subscriptions will be fixed in the next NewPipe release

Unfortunately, v0.24.3 was released without my PR being merged or even receiving a comment, so this is not fixed in the latest release.

afontenot avatar Nov 26 '24 04:11 afontenot

As of the latest version truttle1 appears as having 1 subscriber, despite having 17.6k. This does not crash the feed. I assume this having something to do with the fact that he has pronouns(he/him) because all other channels with pronouns in my feed show "Subscriber count not available".

cefe-origol avatar Dec 23 '24 04:12 cefe-origol

I'm having this exact same issue with the channel Acerola, it indeed does have pronouns Any eta for when the PR gets merged and newpipe gets an update?

Exception

  • User Action: requested feed
  • Request:
  • Content Country: US
  • Content Language: en-
  • App Language: es_US
  • Service: none
  • Version: 0.27.4
  • OS: Linux samsung/a55xnsxx/a55x:14/UP1A.231005.007/A556EXXU4AXH2:user/release-keys 14 - 34
Crash log

org.schabi.newpipe.local.feed.service.FeedLoadService$RequestException: 0:https://www.youtube.com/channel/UCQG40havu4kNpB4pxUDQhYQ
	at org.schabi.newpipe.local.feed.service.FeedLoadManager$DatabaseConsumer.accept$lambda$1(FeedLoadManager.kt:298)
	at org.schabi.newpipe.local.feed.service.FeedLoadManager$DatabaseConsumer.$r8$lambda$JRUmWiqcl-7m3ewNJX5ylO80zuw(FeedLoadManager.kt:0)
	at org.schabi.newpipe.local.feed.service.FeedLoadManager$DatabaseConsumer$$ExternalSyntheticLambda0.run(R8$$SyntheticClass:0)
	at androidx.room.RoomDatabase.runInTransaction(RoomDatabase.kt:585)
	at org.schabi.newpipe.local.feed.service.FeedLoadManager$DatabaseConsumer.accept(FeedLoadManager.kt:284)
	at org.schabi.newpipe.local.feed.service.FeedLoadManager$DatabaseConsumer.accept(FeedLoadManager.kt:281)
	at io.reactivex.rxjava3.internal.operators.flowable.FlowableDoOnEach$DoOnEachSubscriber.onNext(FlowableDoOnEach.java:86)
	at io.reactivex.rxjava3.internal.operators.flowable.FlowableBuffer$PublisherBufferExactSubscriber.onComplete(FlowableBuffer.java:152)
	at io.reactivex.rxjava3.internal.operators.flowable.FlowableObserveOn$BaseObserveOnSubscriber.checkTerminated(FlowableObserveOn.java:217)
	at io.reactivex.rxjava3.internal.operators.flowable.FlowableObserveOn$ObserveOnSubscriber.runAsync(FlowableObserveOn.java:395)
	at io.reactivex.rxjava3.internal.operators.flowable.FlowableObserveOn$BaseObserveOnSubscriber.run(FlowableObserveOn.java:178)
	at io.reactivex.rxjava3.internal.schedulers.ScheduledRunnable.run(ScheduledRunnable.java:65)
	at io.reactivex.rxjava3.internal.schedulers.ScheduledRunnable.call(ScheduledRunnable.java:56)
	at java.util.concurrent.FutureTask.run(FutureTask.java:264)
	at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:307)
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:644)
	at java.lang.Thread.run(Thread.java:1012)
Caused by: org.schabi.newpipe.extractor.utils.Parser$RegexException: Failed to find pattern "([\d]+([\.,][\d]+)?)" inside of "@Acerola_t"
	at org.schabi.newpipe.extractor.utils.Parser.matchGroup(Parser.java:75)
	at org.schabi.newpipe.extractor.utils.Parser.matchGroup(Parser.java:60)
	at org.schabi.newpipe.extractor.utils.Parser.matchGroup1(Parser.java:49)
	at org.schabi.newpipe.extractor.utils.Utils.mixedNumberWordToLong(Utils.java:93)
	at org.schabi.newpipe.extractor.services.youtube.extractors.YoutubeChannelExtractor.getSubscriberCountFromPageChannelHeader(YoutubeChannelExtractor.java:302)
	at org.schabi.newpipe.extractor.services.youtube.extractors.YoutubeChannelExtractor.getSubscriberCount(YoutubeChannelExtractor.java:247)
	at org.schabi.newpipe.extractor.channel.ChannelInfo.getInfo(ChannelInfo.java:86)
	at org.schabi.newpipe.extractor.channel.ChannelInfo.getInfo(ChannelInfo.java:53)
	at org.schabi.newpipe.util.ExtractorHelper.lambda$getChannelInfo$4(ExtractorHelper.java:126)
	at org.schabi.newpipe.util.ExtractorHelper.$r8$lambda$bfeU0LHJSxzIBHEG4SMNZnFnlaE(ExtractorHelper.java:0)
	at org.schabi.newpipe.util.ExtractorHelper$$ExternalSyntheticLambda7.call(R8$$SyntheticClass:0)
	at io.reactivex.rxjava3.internal.operators.single.SingleFromCallable.subscribeActual(SingleFromCallable.java:43)
	at io.reactivex.rxjava3.core.Single.subscribe(Single.java:4855)
	at io.reactivex.rxjava3.internal.operators.single.SingleDoOnSuccess.subscribeActual(SingleDoOnSuccess.java:35)
	at io.reactivex.rxjava3.core.Single.subscribe(Single.java:4855)
	at io.reactivex.rxjava3.internal.operators.single.SingleOnErrorReturn.subscribeActual(SingleOnErrorReturn.java:38)
	at io.reactivex.rxjava3.core.Single.subscribe(Single.java:4855)
	at io.reactivex.rxjava3.core.Single.blockingGet(Single.java:3644)
	at org.schabi.newpipe.local.feed.service.FeedLoadManager.loadStreams(FeedLoadManager.kt:192)
	at org.schabi.newpipe.local.feed.service.FeedLoadManager.access$loadStreams(FeedLoadManager.kt:35)
	at org.schabi.newpipe.local.feed.service.FeedLoadManager$startLoading$8.apply(FeedLoadManager.kt:126)
	at org.schabi.newpipe.local.feed.service.FeedLoadManager$startLoading$8.apply(FeedLoadManager.kt:125)
	at io.reactivex.rxjava3.internal.operators.parallel.ParallelMap$ParallelMapSubscriber.onNext(ParallelMap.java:116)
	at io.reactivex.rxjava3.internal.operators.parallel.ParallelFilter$ParallelFilterSubscriber.tryOnNext(ParallelFilter.java:132)
	at io.reactivex.rxjava3.internal.operators.parallel.ParallelRunOn$RunOnConditionalSubscriber.run(ParallelRunOn.java:399)
	... 7 more


Tchy258 avatar Jan 17 '25 17:01 Tchy258

I get a similar error, but instead of a channel handle it applies the regexp to "✪ Members only". Not sure if it's related or not. The subscriber count displays correctly.

Exception

  • User Action: requested feed
  • Request:
  • Content Country: GB
  • Content Language: en-GB
  • App Language: en_GB_#u-fw-mon-mu-celsius
  • Service: none
  • Timestamp: 2025-02-14T05:34:48.515+10:00
  • Package: org.schabi.newpipe
  • Service: none
  • Version: 0.27.6
  • OS: Linux Android 14 - 34
Exceptions (2)

Crash log 1

org.schabi.newpipe.local.feed.service.FeedLoadService$RequestException: 0:https://www.youtube.com/channel/UCs4NwZLcsBz75VYZYR5Y5Jw
	at org.schabi.newpipe.local.feed.service.FeedLoadManager$DatabaseConsumer.accept$lambda$1(FeedLoadManager.kt:298)
	at org.schabi.newpipe.local.feed.service.FeedLoadManager$DatabaseConsumer.$r8$lambda$JRUmWiqcl-7m3ewNJX5ylO80zuw(FeedLoadManager.kt:0)
	at org.schabi.newpipe.local.feed.service.FeedLoadManager$DatabaseConsumer$$ExternalSyntheticLambda0.run(R8$$SyntheticClass:0)
	at androidx.room.RoomDatabase.runInTransaction(RoomDatabase.kt:585)
	at org.schabi.newpipe.local.feed.service.FeedLoadManager$DatabaseConsumer.accept(FeedLoadManager.kt:284)
	at org.schabi.newpipe.local.feed.service.FeedLoadManager$DatabaseConsumer.accept(FeedLoadManager.kt:281)
	at io.reactivex.rxjava3.internal.operators.flowable.FlowableDoOnEach$DoOnEachSubscriber.onNext(FlowableDoOnEach.java:86)
	at io.reactivex.rxjava3.internal.operators.flowable.FlowableBuffer$PublisherBufferExactSubscriber.onComplete(FlowableBuffer.java:152)
	at io.reactivex.rxjava3.internal.operators.flowable.FlowableObserveOn$BaseObserveOnSubscriber.checkTerminated(FlowableObserveOn.java:217)
	at io.reactivex.rxjava3.internal.operators.flowable.FlowableObserveOn$ObserveOnSubscriber.runAsync(FlowableObserveOn.java:395)
	at io.reactivex.rxjava3.internal.operators.flowable.FlowableObserveOn$BaseObserveOnSubscriber.run(FlowableObserveOn.java:178)
	at io.reactivex.rxjava3.internal.schedulers.ScheduledRunnable.run(ScheduledRunnable.java:65)
	at io.reactivex.rxjava3.internal.schedulers.ScheduledRunnable.call(ScheduledRunnable.java:56)
	at java.util.concurrent.FutureTask.run(FutureTask.java:264)
	at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:307)
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:644)
	at java.lang.Thread.run(Thread.java:1012)
Caused by: org.schabi.newpipe.extractor.utils.Parser$RegexException: Failed to find pattern "([\d]+([\.,][\d]+)?)" inside of "✪ Members only"
	at org.schabi.newpipe.extractor.utils.Parser.matchGroup(Parser.java:75)
	at org.schabi.newpipe.extractor.utils.Parser.matchGroup(Parser.java:60)
	at org.schabi.newpipe.extractor.utils.Parser.matchGroup1(Parser.java:49)
	at org.schabi.newpipe.extractor.utils.Utils.mixedNumberWordToLong(Utils.java:93)
	at org.schabi.newpipe.extractor.services.youtube.extractors.YoutubeShortsLockupInfoItemExtractor.getViewCount(YoutubeShortsLockupInfoItemExtractor.java:101)
	at org.schabi.newpipe.extractor.stream.StreamInfoItemsCollector.extract(StreamInfoItemsCollector.java:72)
	at org.schabi.newpipe.extractor.MultiInfoItemsCollector.extract(MultiInfoItemsCollector.java:82)
	at org.schabi.newpipe.extractor.MultiInfoItemsCollector.extract(MultiInfoItemsCollector.java:48)
	at org.schabi.newpipe.extractor.InfoItemsCollector.commit(InfoItemsCollector.java:104)
	at org.schabi.newpipe.extractor.services.youtube.extractors.YoutubeChannelTabExtractor.commitShortsLockup(YoutubeChannelTabExtractor.java:356)
	at org.schabi.newpipe.extractor.services.youtube.extractors.YoutubeChannelTabExtractor.collectItem(YoutubeChannelTabExtractor.java:286)
	at org.schabi.newpipe.extractor.services.youtube.extractors.YoutubeChannelTabExtractor.lambda$collectItemsFrom$6(YoutubeChannelTabExtractor.java:263)
	at org.schabi.newpipe.extractor.services.youtube.extractors.YoutubeChannelTabExtractor.$r8$lambda$2lzZGdAYu1uNcOHZlpcrhXlK-xg(YoutubeChannelTabExtractor.java:0)
	at org.schabi.newpipe.extractor.services.youtube.extractors.YoutubeChannelTabExtractor$$ExternalSyntheticLambda8.apply(R8$$SyntheticClass:0)
	at j$.util.stream.q.accept(SourceFile:195)
	at j$.util.stream.q.accept(SourceFile:195)
	at j$.util.stream.q.accept(SourceFile:177)
	at j$.util.a.forEachRemaining(SourceFile:720)
	at j$.util.stream.b.n(SourceFile:484)
	at j$.util.stream.b.O(SourceFile:474)
	at j$.util.stream.y0.b(SourceFile:913)
	at j$.util.stream.b.w(SourceFile:234)
	at j$.util.stream.j2.reduce(SourceFile:553)
	at org.schabi.newpipe.extractor.services.youtube.extractors.YoutubeChannelTabExtractor.collectItemsFrom(YoutubeChannelTabExtractor.java:265)
	at org.schabi.newpipe.extractor.services.youtube.extractors.YoutubeChannelTabExtractor.getInitialPage(YoutubeChannelTabExtractor.java:160)
	at org.schabi.newpipe.extractor.utils.ExtractorHelper.getItemsPageOrLogError(ExtractorHelper.java:21)
	at org.schabi.newpipe.extractor.channel.tabs.ChannelTabInfo.getInfo(ChannelTabInfo.java:57)
	at org.schabi.newpipe.extractor.channel.tabs.ChannelTabInfo.getInfo(ChannelTabInfo.java:36)
	at org.schabi.newpipe.util.ExtractorHelper.lambda$getChannelTab$5(ExtractorHelper.java:136)
	at org.schabi.newpipe.util.ExtractorHelper.$r8$lambda$ywl_KCJseTTYfOgEv9Py_0u_0h8(ExtractorHelper.java:0)
	at org.schabi.newpipe.util.ExtractorHelper$$ExternalSyntheticLambda1.call(R8$$SyntheticClass:0)
	at io.reactivex.rxjava3.internal.operators.single.SingleFromCallable.subscribeActual(SingleFromCallable.java:43)
	at io.reactivex.rxjava3.core.Single.subscribe(Single.java:4855)
	at io.reactivex.rxjava3.internal.operators.single.SingleDoOnSuccess.subscribeActual(SingleDoOnSuccess.java:35)
	at io.reactivex.rxjava3.core.Single.subscribe(Single.java:4855)
	at io.reactivex.rxjava3.internal.operators.single.SingleOnErrorReturn.subscribeActual(SingleOnErrorReturn.java:38)
	at io.reactivex.rxjava3.core.Single.subscribe(Single.java:4855)
	at io.reactivex.rxjava3.core.Single.blockingGet(Single.java:3644)
	at org.schabi.newpipe.local.feed.service.FeedLoadManager.loadStreams(FeedLoadManager.kt:208)
	at org.schabi.newpipe.local.feed.service.FeedLoadManager.access$loadStreams(FeedLoadManager.kt:35)
	at org.schabi.newpipe.local.feed.service.FeedLoadManager$startLoading$8.apply(FeedLoadManager.kt:126)
	at org.schabi.newpipe.local.feed.service.FeedLoadManager$startLoading$8.apply(FeedLoadManager.kt:125)
	at io.reactivex.rxjava3.internal.operators.parallel.ParallelMap$ParallelMapSubscriber.onNext(ParallelMap.java:116)
	at io.reactivex.rxjava3.internal.operators.parallel.ParallelFilter$ParallelFilterSubscriber.tryOnNext(ParallelFilter.java:132)
	at io.reactivex.rxjava3.internal.operators.parallel.ParallelRunOn$RunOnConditionalSubscriber.run(ParallelRunOn.java:399)
	... 7 more

Crash log 2

org.schabi.newpipe.local.feed.service.FeedLoadService$RequestException: 0:https://www.youtube.com/channel/UCs4NwZLcsBz75VYZYR5Y5Jw
	at org.schabi.newpipe.local.feed.service.FeedLoadManager$DatabaseConsumer.accept$lambda$1(FeedLoadManager.kt:298)
	at org.schabi.newpipe.local.feed.service.FeedLoadManager$DatabaseConsumer.$r8$lambda$JRUmWiqcl-7m3ewNJX5ylO80zuw(FeedLoadManager.kt:0)
	at org.schabi.newpipe.local.feed.service.FeedLoadManager$DatabaseConsumer$$ExternalSyntheticLambda0.run(R8$$SyntheticClass:0)
	at androidx.room.RoomDatabase.runInTransaction(RoomDatabase.kt:585)
	at org.schabi.newpipe.local.feed.service.FeedLoadManager$DatabaseConsumer.accept(FeedLoadManager.kt:284)
	at org.schabi.newpipe.local.feed.service.FeedLoadManager$DatabaseConsumer.accept(FeedLoadManager.kt:281)
	at io.reactivex.rxjava3.internal.operators.flowable.FlowableDoOnEach$DoOnEachSubscriber.onNext(FlowableDoOnEach.java:86)
	at io.reactivex.rxjava3.internal.operators.flowable.FlowableBuffer$PublisherBufferExactSubscriber.onComplete(FlowableBuffer.java:152)
	at io.reactivex.rxjava3.internal.operators.flowable.FlowableObserveOn$BaseObserveOnSubscriber.checkTerminated(FlowableObserveOn.java:217)
	at io.reactivex.rxjava3.internal.operators.flowable.FlowableObserveOn$ObserveOnSubscriber.runAsync(FlowableObserveOn.java:395)
	at io.reactivex.rxjava3.internal.operators.flowable.FlowableObserveOn$BaseObserveOnSubscriber.run(FlowableObserveOn.java:178)
	at io.reactivex.rxjava3.internal.schedulers.ScheduledRunnable.run(ScheduledRunnable.java:65)
	at io.reactivex.rxjava3.internal.schedulers.ScheduledRunnable.call(ScheduledRunnable.java:56)
	at java.util.concurrent.FutureTask.run(FutureTask.java:264)
	at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:307)
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:644)
	at java.lang.Thread.run(Thread.java:1012)
Caused by: org.schabi.newpipe.extractor.utils.Parser$RegexException: Failed to find pattern "([\d]+([\.,][\d]+)?)" inside of "✪ Members only"
	at org.schabi.newpipe.extractor.utils.Parser.matchGroup(Parser.java:75)
	at org.schabi.newpipe.extractor.utils.Parser.matchGroup(Parser.java:60)
	at org.schabi.newpipe.extractor.utils.Parser.matchGroup1(Parser.java:49)
	at org.schabi.newpipe.extractor.utils.Utils.mixedNumberWordToLong(Utils.java:93)
	at org.schabi.newpipe.extractor.services.youtube.extractors.YoutubeShortsLockupInfoItemExtractor.getViewCount(YoutubeShortsLockupInfoItemExtractor.java:101)
	at org.schabi.newpipe.extractor.stream.StreamInfoItemsCollector.extract(StreamInfoItemsCollector.java:72)
	at org.schabi.newpipe.extractor.MultiInfoItemsCollector.extract(MultiInfoItemsCollector.java:82)
	at org.schabi.newpipe.extractor.MultiInfoItemsCollector.extract(MultiInfoItemsCollector.java:48)
	at org.schabi.newpipe.extractor.InfoItemsCollector.commit(InfoItemsCollector.java:104)
	at org.schabi.newpipe.extractor.services.youtube.extractors.YoutubeChannelTabExtractor.commitShortsLockup(YoutubeChannelTabExtractor.java:356)
	at org.schabi.newpipe.extractor.services.youtube.extractors.YoutubeChannelTabExtractor.collectItem(YoutubeChannelTabExtractor.java:286)
	at org.schabi.newpipe.extractor.services.youtube.extractors.YoutubeChannelTabExtractor.lambda$collectItemsFrom$6(YoutubeChannelTabExtractor.java:263)
	at org.schabi.newpipe.extractor.services.youtube.extractors.YoutubeChannelTabExtractor.$r8$lambda$2lzZGdAYu1uNcOHZlpcrhXlK-xg(YoutubeChannelTabExtractor.java:0)
	at org.schabi.newpipe.extractor.services.youtube.extractors.YoutubeChannelTabExtractor$$ExternalSyntheticLambda8.apply(R8$$SyntheticClass:0)
	at j$.util.stream.q.accept(SourceFile:195)
	at j$.util.stream.q.accept(SourceFile:195)
	at j$.util.stream.q.accept(SourceFile:177)
	at j$.util.a.forEachRemaining(SourceFile:720)
	at j$.util.stream.b.n(SourceFile:484)
	at j$.util.stream.b.O(SourceFile:474)
	at j$.util.stream.y0.b(SourceFile:913)
	at j$.util.stream.b.w(SourceFile:234)
	at j$.util.stream.j2.reduce(SourceFile:553)
	at org.schabi.newpipe.extractor.services.youtube.extractors.YoutubeChannelTabExtractor.collectItemsFrom(YoutubeChannelTabExtractor.java:265)
	at org.schabi.newpipe.extractor.services.youtube.extractors.YoutubeChannelTabExtractor.getInitialPage(YoutubeChannelTabExtractor.java:160)
	at org.schabi.newpipe.extractor.utils.ExtractorHelper.getItemsPageOrLogError(ExtractorHelper.java:21)
	at org.schabi.newpipe.extractor.channel.tabs.ChannelTabInfo.getInfo(ChannelTabInfo.java:57)
	at org.schabi.newpipe.extractor.channel.tabs.ChannelTabInfo.getInfo(ChannelTabInfo.java:36)
	at org.schabi.newpipe.util.ExtractorHelper.lambda$getChannelTab$5(ExtractorHelper.java:136)
	at org.schabi.newpipe.util.ExtractorHelper.$r8$lambda$ywl_KCJseTTYfOgEv9Py_0u_0h8(ExtractorHelper.java:0)
	at org.schabi.newpipe.util.ExtractorHelper$$ExternalSyntheticLambda1.call(R8$$SyntheticClass:0)
	at io.reactivex.rxjava3.internal.operators.single.SingleFromCallable.subscribeActual(SingleFromCallable.java:43)
	at io.reactivex.rxjava3.core.Single.subscribe(Single.java:4855)
	at io.reactivex.rxjava3.internal.operators.single.SingleDoOnSuccess.subscribeActual(SingleDoOnSuccess.java:35)
	at io.reactivex.rxjava3.core.Single.subscribe(Single.java:4855)
	at io.reactivex.rxjava3.internal.operators.single.SingleOnErrorReturn.subscribeActual(SingleOnErrorReturn.java:38)
	at io.reactivex.rxjava3.core.Single.subscribe(Single.java:4855)
	at io.reactivex.rxjava3.core.Single.blockingGet(Single.java:3644)
	at org.schabi.newpipe.local.feed.service.FeedLoadManager.loadStreams(FeedLoadManager.kt:208)
	at org.schabi.newpipe.local.feed.service.FeedLoadManager.access$loadStreams(FeedLoadManager.kt:35)
	at org.schabi.newpipe.local.feed.service.FeedLoadManager$startLoading$8.apply(FeedLoadManager.kt:126)
	at org.schabi.newpipe.local.feed.service.FeedLoadManager$startLoading$8.apply(FeedLoadManager.kt:125)
	at io.reactivex.rxjava3.internal.operators.parallel.ParallelMap$ParallelMapSubscriber.onNext(ParallelMap.java:116)
	at io.reactivex.rxjava3.internal.operators.parallel.ParallelFilter$ParallelFilterSubscriber.tryOnNext(ParallelFilter.java:132)
	at io.reactivex.rxjava3.internal.operators.parallel.ParallelRunOn$RunOnConditionalSubscriber.run(ParallelRunOn.java:399)
	... 7 more


eternal-sorrow avatar Feb 13 '25 19:02 eternal-sorrow

@eternal-sorrow Your issue looks similar at first glance, but it's actually unrelated and I would suggest filing a new issue (after searching for duplicates) so that someone can fix this. Based on the traceback, the issue appears to be related to loading view counts on shorts, so I would try to verify this if you can and explicitly mention it in the title of the issue in order to attract someone who can help.

It likely has something to do with videos being locked behind channel membership with Youtube Premium. I wonder if other channels that have shorts and offer such memberships are affected.

YoutubeShortsLockupInfoItemExtractor.getViewCount

afontenot avatar Feb 13 '25 22:02 afontenot

@eternal-sorrow , @afontenot

I'm subscribed to Linus Tech Tips in NewPipe, using the latest 0.27.6 release, and despite them having "⭐Members only" videos, I'm not getting any crashes or errors when refreshing the "all subscriptions" feed in the app, nor if I visit their channel directly.

If I tap on such a video, it says:

"This content is only available to users who have paid, so it cannot be streamed or downloaded by NewPipe".

(It would be good in a future update though if such videos were marked some-way in the UI, as if you were to look at any of these recent three videos within NewPipe I've marked in the screenshot, they all just appear like every-other video. You only know they are a paid one once you tap on them. Maybe you could just append [PAID] at the start of the video-title or something?)

Image

But yes... despite them also having members-only videos (as above), I'm getting no issues in NewPipe here.

dftf-stu avatar Feb 14 '25 10:02 dftf-stu

@dftf-stu Let's discuss this further in a separate issue that I opened #12038

eternal-sorrow avatar Feb 14 '25 10:02 eternal-sorrow

I have the same error with https://www.youtube.com/channel/UCs4fQRyl1TJvoeOdekW6lYA. Fortunately, this is the only one I have with this issue so I can manually look sometimes

PitiBouchon avatar May 08 '25 19:05 PitiBouchon