bertybuttface / addons

Apache License 2.0
14 stars 5 forks source link

Not working on HA with AppleTV: TypeError: string indices must be integers #16

Open DogParty opened 11 months ago

DogParty commented 11 months ago

Hey, I'm running into the following issue while using the HA addon:

Connected to device YouTube on TV
Getting segments for next video: Lr8vUYFxVNY
ERROR:asyncio:Task exception was never retrieved
future: <Task finished name='Task-197' coro=<AsyncConditionalTTL.__call__.<locals>.wrapper() done, defined at /usr/app/iSponsorBlockTV/conditional_ttl_cache.py:75> exception=TypeError('string indices must be integers')>
Traceback (most recent call last):
  File "/usr/app/iSponsorBlockTV/conditional_ttl_cache.py", line 80, in wrapper
    self.ttl[key] = await func(*args, **kwargs)
  File "/usr/app/iSponsorBlockTV/api_helpers.py", line 118, in get_segments
    if str(i["videoID"]) == str(vid_id):
TypeError: string indices must be integers

Here's my set up:

  1. I set up iSponsorBlockerTV on my laptop and verified it worked
  2. I then installed the HA add on on my Intel NUC running HassOS 11.0 and HA 2023.10.3
  3. I copy and pasted the lines from my config.json file to the add on's configuration section
  4. I start it and everything loads
  5. I click play on a Youtube video and then the above error is printed in the add-on's logs
  6. Sponsored sections aren't skipped

Please let me know if you need any more info. Thank you!

bertybuttface commented 11 months ago

Can you show me your full config please (make sure to redact your keys though)

DogParty commented 11 months ago

Sure!

apikey: rAnDomText
devices:
  - screen_id: randomtext
    name: YouTube on TV
    offset: 0
channel_whitelist: []
skip_categories:
  - >-
    [         "sponsor",         "selfpromo",         "poi_highlight",        
    "preview",         "exclusive_access"     ]
skip_count_tracking: true
mute_ads: true
skip_ads: true

skip_categories definitely looks a little weird but I think it should still work?

bertybuttface commented 11 months ago

Ok try setting skip_count_tracking and mute_ads to false this might be related to a bug that was fixed upstream.

DogParty commented 11 months ago

Hmm still running into the same issue, it seems:

Getting segments for next video: DoxxV-RZS3Y
ERROR:asyncio:Task exception was never retrieved
future: <Task finished name='Task-50' coro=<AsyncConditionalTTL.__call__.<locals>.wrapper() done, defined at /usr/app/iSponsorBlockTV/conditional_ttl_cache.py:75> exception=TypeError('string indices must be integers')>
Traceback (most recent call last):
  File "/usr/app/iSponsorBlockTV/conditional_ttl_cache.py", line 80, in wrapper
    self.ttl[key] = await func(*args, **kwargs)
  File "/usr/app/iSponsorBlockTV/api_helpers.py", line 118, in get_segments
    if str(i["videoID"]) == str(vid_id):
TypeError: string indices must be integers
bertybuttface commented 11 months ago

2.0.4 is building now, updates to latest upstream.

DogParty commented 11 months ago

Unfortunately still have the same issue:

Getting segments for next video: Lr8vUYFxVNY Connected to device YouTube on TV Task exception was never retrieved future: <Task finished name='Task-13' coro=<AsyncConditionalTTL.call..wrapper() done, defined at /usr/app/iSponsorBlockTV/conditional_ttl_cache.py:75> exception=TypeError('string indices must be integers')> Traceback (most recent call last): File "/usr/app/iSponsorBlockTV/conditional_ttl_cache.py", line 80, in wrapper self.ttl[key] = await func(*args, **kwargs) File "/usr/app/iSponsorBlockTV/api_helpers.py", line 118, in get_segments if str(i["videoID"]) == str(vid_id): TypeError: string indices must be integers

bertybuttface commented 11 months ago

I don't know what to suggest I'm also using an Apple TV and I'm not able to reproduce. I'm also using a NUC so it isn't an architecture issue. Does iSponsorBlockTV function normally on another device?

Here is what the output should look like:

Connected to device YouTube on TV
Playing nRV5BGEQHKU with 2 segments
Playing nRV5BGEQHKU with 2 segments
Playing nRV5BGEQHKU with 2 segments
Getting segments for next video: FxdbD-N7pHE
Playing nRV5BGEQHKU with 2 segments
bertybuttface commented 11 months ago

@dmunozv04 sorry to tag but have you got any idea why this might be happening?

dmunozv04 commented 11 months ago

No worries, I’ll take a closer look later because this is really odd

DogParty commented 11 months ago

Does iSponsorBlockTV function normally on another device?

It worked from my Mac last night. I ran it locally rather than with Docker, if that helps.

tonysprenk commented 10 months ago

I'm having the same issue. running isponsorblocktv on a Mac works fine but once I run it on my home assistant raspberry pi I get the same error as above.

bertybuttface commented 10 months ago

@tonysprenk thanks for reporting, does this happen with every video or is it only sometimes?

tonysprenk commented 10 months ago

Every video I have played so far. I will do some more testing later today.

tonysprenk commented 10 months ago

It's every video. this is the error:

Connected to device YouTube on TV
Ad has started, muting
Getting segments for next video: d-4JJbk3ZS0
Ad has started, muting
ERROR:asyncio:Task exception was never retrieved
future: <Task finished name='Task-11699' coro=<AsyncConditionalTTL.__call__.<locals>.wrapper() done, defined at /usr/app/iSponsorBlockTV/conditional_ttl_cache.py:75> exception=TypeError('string indices must be integers')>
Traceback (most recent call last):
  File "/usr/app/iSponsorBlockTV/conditional_ttl_cache.py", line 80, in wrapper
    self.ttl[key] = await func(*args, **kwargs)
  File "/usr/app/iSponsorBlockTV/api_helpers.py", line 118, in get_segments
    if str(i["videoID"]) == str(vid_id):
TypeError: string indices must be integers
Ad has started, muting
Getting segments for next video: d-4JJbk3ZS0
Ad has started, muting
ERROR:asyncio:Task exception was never retrieved
future: <Task finished name='Task-11742' coro=<AsyncConditionalTTL.__call__.<locals>.wrapper() done, defined at /usr/app/iSponsorBlockTV/conditional_ttl_cache.py:75> exception=TypeError('string indices must be integers')>
Traceback (most recent call last):
  File "/usr/app/iSponsorBlockTV/conditional_ttl_cache.py", line 80, in wrapper
    self.ttl[key] = await func(*args, **kwargs)
  File "/usr/app/iSponsorBlockTV/api_helpers.py", line 118, in get_segments
    if str(i["videoID"]) == str(vid_id):
TypeError: string indices must be integers
Connected to device YouTube on TV
tonysprenk commented 10 months ago

Any ideas?

dmunozv04 commented 10 months ago

I don't currently have a home assistant setup that has the option to install add-ons, but I'll be doing some tests soon

bertybuttface commented 10 months ago

Any ideas?

None sorry, right now approximately 1% of the downloads for the aarch64 build are reporting issues so it is clearly not affecting everybody (or there is an incredibly low issue reporting rate). We just need to find out why.

I wish I had something better to say than that.

dmunozv04 commented 10 months ago

It's as if the response from the SponsorBlock api was malformed, returning something that seems to be a list of strings rather than a list of dicts. The response should be something like this . Maybe switching back to the less privacy friendly method of asking for segments just giving the video id instead of doing a sha256 hash might do the trick.

It could be that some machine's sha256 is broken for some reason. I can get a new version going to check if this does the trick.

tonysprenk commented 10 months ago

Let me know if any testing is needed.

dmunozv04 commented 10 months ago

@bertybuttface I've gone ahead and made a new commit which should log the reason of this error. Please do let me know what output appears on your logs with this new version (after it's updated on the hass addon). Something like this should be printed: f"Error getting segments for video {vid_id}, hashed as {vid_id_hashed}. Code: {response.status} - {response.text()}"

bertybuttface commented 10 months ago

@dmunozv04 I'm also using an AppleTV and I'm not able to reproduce this issue so I've asked the guys having it to test.

@DogParty @tonysprenk can you please test out 2.0.6 and post the above logs here. Thanks guys.

DogParty commented 10 months ago

I’m currently on vacation but I can test it this week. Thanks for working on it!

On Sat, Nov 4, 2023 at 10:24 AM bertybuttface @.***> wrote:

@dmunozv04 https://github.com/dmunozv04 I'm also using an AppleTV and I'm not able to reproduce this issue so I've asked the guys having it to test.

@DogParty https://github.com/DogParty @tonysprenk https://github.com/tonysprenk can you please test out 2.0.6 and post the above logs here. Thanks guys.

— Reply to this email directly, view it on GitHub https://github.com/bertybuttface/addons/issues/16#issuecomment-1793457057, or unsubscribe https://github.com/notifications/unsubscribe-auth/AAK6DSNNHOWLY5UFQMJDIM3YCZF3LAVCNFSM6AAAAAA6C47WA6VHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMYTOOJTGQ2TOMBVG4 . You are receiving this because you were mentioned.Message ID: @.***>

tonysprenk commented 10 months ago

So I did some testing and for the most part it’s working now. Adds at the beginning of videos were skipping automatically for most videos but not all of them, in the log the the adds weren’t skipped for the last video. Also it seems like it is having trouble finding segments within the videos as shown in the logs. Hope this helps. Thanks!

Playing 0JkI37zAsPI with 0 segments
Error getting segments for video vThpjrCEyJk, hashed as 5fc1. Code: 400 - <coroutine object ClientResponse.text at 0x7fab008120>
Playing vThpjrCEyJk with 0 segments
Playing vThpjrCEyJk with 0 segments
Playing vThpjrCEyJk with 0 segments
Playing vThpjrCEyJk with 0 segments
Error getting segments for video W4J3sgXaCiY, hashed as 1352. Code: 400 - <coroutine object ClientResponse.text at 0x7fab036ce0>
Playing W4J3sgXaCiY with 0 segments
Playing W4J3sgXaCiY with 0 segments
Error getting segments for video myHeo54NtdI, hashed as 5fb1. Code: 400 - <coroutine object ClientResponse.text at 0x7fab0080b0>
Playing myHeo54NtdI with 0 segments
Playing myHeo54NtdI with 0 segments
Playing myHeo54NtdI with 0 segments
Error getting segments for video PUhm4hLHb-U, hashed as d3a5. Code: 400 - <coroutine object ClientResponse.text at 0x7fab008660>
Playing PUhm4hLHb-U with 0 segments
Playing PUhm4hLHb-U with 0 segments
Error getting segments for video To4wJiRCZ9I, hashed as fc25. Code: 400 - <coroutine object ClientResponse.text at 0x7fab036dc0>
Playing To4wJiRCZ9I with 0 segments
Playing To4wJiRCZ9I with 0 segments
Playing To4wJiRCZ9I with 0 segments
Error getting segments for video 8RAwBDyaW1w, hashed as 931f. Code: 400 - <coroutine object ClientResponse.text at 0x7fab008040>
Playing 8RAwBDyaW1w with 0 segments
Playing 8RAwBDyaW1w with 0 segments
Playing 8RAwBDyaW1w with 0 segments
Error getting segments for video 4t7w5xXm6d0, hashed as e868. Code: 400 - <coroutine object ClientResponse.text at 0x7fab0089e0>
Playing 4t7w5xXm6d0 with 0 segments
Playing 4t7w5xXm6d0 with 0 segments
Playing 4t7w5xXm6d0 with 0 segments
Error getting segments for video BbXle_ZB_Rs, hashed as d6fc. Code: 400 - <coroutine object ClientResponse.text at 0x7fab0089e0>
Playing BbXle_ZB_Rs with 0 segments
Playing BbXle_ZB_Rs with 0 segments
Ad has started, muting
Getting segments for next video: 6NOtKSx4ssk
Ad has started, muting
401, message='RID_OUTSIDE_WINDOW', url=URL('https://www.youtube.com/api/lounge/bc/bind?device=REMOTE_CONTROL&name=iSponsorBlockTV&app=youtube-desktop&loungeIdToken=AGdO5p8cPOhx5bPhCuHB7XTrpYPM22pjydzR2vJe_XALsI0RSFWRftqB9AwCMk-TQTz3FCNdTz-0zrrKkG9iaISB5qBva_IrDvPMjZInce3nNuBZK2Z2t5c&VER=8&v=2&RID=64&SID=38EE1DDD1355B5E2&AID=267&gsessionid=cQreF7-gqbI0vdxYpcHhzTtHID5zJ2Nm')
Traceback (most recent call last):
  File "/usr/local/lib/python3.10/site-packages/pyytlounge/wrapper.py", line 532, in _command
    resp.raise_for_status()
  File "/usr/local/lib/python3.10/site-packages/aiohttp/client_reqrep.py", line 1011, in raise_for_status
    raise ClientResponseError(
aiohttp.client_exceptions.ClientResponseError: 401, message='RID_OUTSIDE_WINDOW', url=URL('https://www.youtube.com/api/lounge/bc/bind?device=REMOTE_CONTROL&name=iSponsorBlockTV&app=youtube-desktop&loungeIdToken=AGdO5p8cPOhx5bPhCuHB7XTrpYPM22pjydzR2vJe_XALsI0RSFWRftqB9AwCMk-TQTz3FCNdTz-0zrrKkG9iaISB5qBva_IrDvPMjZInce3nNuBZK2Z2t5c&VER=8&v=2&RID=64&SID=38EE1DDD1355B5E2&AID=267&gsessionid=cQreF7-gqbI0vdxYpcHhzTtHID5zJ2Nm')
Error getting segments for video 6NOtKSx4ssk, hashed as ca5c. Code: 400 - <coroutine object ClientResponse.text at 0x7fab0089e0>
Error getting segments for video 6NOtKSx4ssk, hashed as ca5c. Code: 400 - <coroutine object ClientResponse.text at 0x7fab9bab90>
Connected to device YouTube on TV
Getting segments for next video: 6NOtKSx4ssk
Ad has started, muting
Playing 6NOtKSx4ssk with 0 segments
Playing 6NOtKSx4ssk with 0 segments
Error getting segments for video O6d1RKYapFI, hashed as cb25. Code: 400 - <coroutine object ClientResponse.text at 0x7fab008120>
Playing O6d1RKYapFI with 0 segments
Playing O6d1RKYapFI with 0 segments
Playing O6d1RKYapFI with 0 segments
Error getting segments for video TRE_brq0TRQ, hashed as 6bf6. Code: 400 - <coroutine object ClientResponse.text at 0x7fab037610>
Playing TRE_brq0TRQ with 0 segments
Playing TRE_brq0TRQ with 0 segments
Playing TRE_brq0TRQ with 0 segments
Playing TRE_brq0TRQ with 0 segments
Error getting segments for video k1-el0W7ZR4, hashed as 5936. Code: 400 - <coroutine object ClientResponse.text at 0x7fab037d10>
Playing k1-el0W7ZR4 with 0 segments
Playing k1-el0W7ZR4 with 0 segments
Error getting segments for video Czeqxh3yMeU, hashed as 2c93. Code: 400 - <coroutine object ClientResponse.text at 0x7fab008120>
Playing Czeqxh3yMeU with 0 segments
Playing Czeqxh3yMeU with 0 segments
Playing Czeqxh3yMeU with 0 segments
Error getting segments for video Cj9p5cAQZ8g, hashed as c5a8. Code: 400 - <coroutine object ClientResponse.text at 0x7fab9bab90>
Playing Cj9p5cAQZ8g with 0 segments
Playing Cj9p5cAQZ8g with 0 segments
Playing Cj9p5cAQZ8g with 0 segments
Error getting segments for video gusXBTyg1O4, hashed as 7577. Code: 400 - <coroutine object ClientResponse.text at 0x7fab0376f0>
Playing gusXBTyg1O4 with 0 segments
Playing gusXBTyg1O4 with 0 segments
Playing gusXBTyg1O4 with 0 segments
Error getting segments for video nbTwoZIOSnk, hashed as d443. Code: 400 - <coroutine object ClientResponse.text at 0x7fab0082e0>
Playing nbTwoZIOSnk with 0 segments
Playing nbTwoZIOSnk with 0 segments
Playing nbTwoZIOSnk with 0 segments
Error getting segments for video 4I14QzRY8BI, hashed as 8e06. Code: 400 - <coroutine object ClientResponse.text at 0x7fab008a50>
Playing 4I14QzRY8BI with 0 segments
Playing 4I14QzRY8BI with 0 segments
Playing 4I14QzRY8BI with 0 segments
Error getting segments for video Ofoo-VuqwY0, hashed as 66cb. Code: 400 - <coroutine object ClientResponse.text at 0x7fab037d10>
Playing Ofoo-VuqwY0 with 0 segments
Playing Ofoo-VuqwY0 with 0 segments
Error getting segments for video sjf1pWJF_-4, hashed as 4e62. Code: 400 - <coroutine object ClientResponse.text at 0x7fab9bab90>
Playing sjf1pWJF_-4 with 0 segments
Playing sjf1pWJF_-4 with 0 segments
Error getting segments for video PK0v8Fubj0E, hashed as d2da. Code: 400 - <coroutine object ClientResponse.text at 0x7fab9bab90>
Playing PK0v8Fubj0E with 0 segments
Playing PK0v8Fubj0E with 0 segments
Playing PK0v8Fubj0E with 0 segments
Ad has started, muting
Getting segments for next video: K5Pa64UU6uw
Ad has started, muting
Error getting segments for video K5Pa64UU6uw, hashed as de73. Code: 400 - <coroutine object ClientResponse.text at 0x7fab037760>
Error getting segments for video K5Pa64UU6uw, hashed as de73. Code: 400 - <coroutine object ClientResponse.text at 0x7fab008820>
Ad has started, muting
Getting segments for next video: K5Pa64UU6uw
Ad has started, muting
Playing K5Pa64UU6uw with 0 segments
Connected to device YouTube on TV
dmunozv04 commented 10 months ago

@tonysprenk thanks for testing and posting the logs. It looks like your machine is hashing the video id properly, but it’s somehow failing to get the data from the SponsorBlock server, which is why it’s failing to get segments. Would you mind trying to access this website https://sponsor.ajay.app/api/skipSegments/5fc1 on your browser and your homeassistant machine to see what you get back?

tonysprenk commented 10 months ago

The output for both is:

[{"videoID":"fBNhZHFf8rs","segments":[{"category":"sponsor","actionType":"skip","segment":[0,4.339541],"UUID":"72135a2ebbe20de6ccc0a5a8b7a79bb354ea2ae666f530257b3a47db42945084","videoDuration":0,"locked":0,"votes":0,"description":""},{"category":"sponsor","actionType":"skip","segment":[606.34143,649.1774],"UUID":"6ae1ce5aefca3c7943ecbf26803f32a82e3b2cb3d9c1e0a1beb807bbde737d5a","videoDuration":0,"locked":0,"votes":0,"description":""}]},{"videoID":"37YHvUxKTsw","segments":[{"category":"sponsor","actionType":"skip","segment":[0,6.638021],"UUID":"6cb81d848455e0bc98ab61b24160cbbc6eef16b03b3fa0fd084fb5b743202951","videoDuration":0,"locked":0,"votes":36,"description":""},{"category":"sponsor","actionType":"skip","segment":[1668.5017,1705.4851],"UUID":"9ac88e58a4bb747f32d9a13604c02cfdc3d1f06faf0a86c6516354f505cc0b0e","videoDuration":0,"locked":0,"votes":12,"description":""}]},{"videoID":"-IGZZkFJaIM","segments":[{"category":"sponsor","actionType":"skip","segment":[5.76,17.08],"UUID":"c31abc3517447b659f76b88ad7861b6b4a478e019b95c0afc9dc35ebc91b51b4","videoDuration":0,"locked":0,"votes":1,"description":""}]},{"videoID":"YFs5Yz3GrYE","segments":[{"category":"sponsor","actionType":"skip","segment":[8.368,150.772],"UUID":"90e62b4aa8b2d1a408d083ce1b953bab72398e481ad07702404d84baa643a6d16","videoDuration":652.281,"locked":0,"votes":0,"description":""}]},{"videoID":"96Ug0nsOND8","segments":[{"category":"sponsor","actionType":"skip","segment":[22.237,89.241],"UUID":"04d45ffa3aa928fc90a719e2936506776f7e94d3d5b1148a5b8389b5936595cb6","videoDuration":1300.601,"locked":0,"votes":0,"description":""}]},{"videoID":"O-JF0B1wyc4","segments":[{"category":"sponsor","actionType":"skip","segment":[39.477,68.179],"UUID":"3fcaeebf7df369ccdece100f1fd8bfdb16f7291898a93ae581b42f46621388f67","videoDuration":1324.261,"locked":0,"votes":0,"description":""}]},{"videoID":"Tp1KZl_hRQ4","segments":[{"category":"sponsor","actionType":"skip","segment":[142.893,213.593],"UUID":"d5cb8b087aebed024d813d6b9d68184a9eb70e4cc053b1dbcb1949b79144378a7","videoDuration":525.981,"locked":0,"votes":0,"description":""}]},{"videoID":"rKpPzDQxR-k","segments":[{"category":"sponsor","actionType":"skip","segment":[226.403,334.835],"UUID":"92365c6ddc4714ebf3cfb1e1f6f5940d17b3e2089158a9894ba0b911426fd5727","videoDuration":1099.521,"locked":0,"votes":1,"description":""}]},{"videoID":"uX3hMsyeTCg","segments":[{"category":"sponsor","actionType":"skip","segment":[250.472,302.212],"UUID":"143bea3f55c57bacb068d39576009468b64cefd6266189b90162a41ef1911e6a7","videoDuration":311.541,"locked":0,"votes":0,"description":""}]},{"videoID":"3TkmcIIhcaQ","segments":[{"category":"sponsor","actionType":"skip","segment":[300.086,374.026],"UUID":"1d5cc3c41d837f4a5009793fb5828fc696f21c5e75134431c4d8c45706724d8c6","videoDuration":821.601,"locked":0,"votes":0,"description":""}]},{"videoID":"vONkXONkuWY","segments":[{"category":"sponsor","actionType":"skip","segment":[412.166,448.001],"UUID":"b53b85d5c839af95f0fbf14184f59b561a1a367b2613a35e7283ae5755d45cdf7","videoDuration":551.341,"locked":0,"votes":0,"description":""}]},{"videoID":"r8CoU1wdpFw","segments":[{"category":"sponsor","actionType":"skip","segment":[672.576,721.802],"UUID":"44dbe4342a05a5f7f5363dcd05c06b4b128a59a51f4067e100d6593d23e173246","videoDuration":724,"locked":0,"votes":0,"description":""}]},{"videoID":"ild7dAInvdM","segments":[{"category":"sponsor","actionType":"skip","segment":[1068.881,1276.048],"UUID":"aa2069af232f610efcd2f50c1d96975c350402187e7accb681cc8897e0da4d8d7","videoDuration":3349.781,"locked":0,"votes":0,"description":""}]},{"videoID":"fD2ZnOFTtbc","segments":[{"category":"sponsor","actionType":"skip","segment":[1802.9476,1928.8568],"UUID":"4932b26d2cb3c4689db2233b8250228c81757047af41360aa6154dd906f12dc6","videoDuration":3811.401,"locked":0,"votes":0,"description":""}]}]
dmunozv04 commented 10 months ago

@tonysprenk thanks, that’s really odd. Let me fix the error print to show the response from the SponsorBlock api, to show something more useful than <coroutine object ClientResponse.text at 0x7fab037760> , and hopefully we can get a better idea as of why this is happening then

DogParty commented 10 months ago

Checking in to add that this is what my logs say on 2.0.6:

Error getting segments for video mwKJfNYwvm8, hashed as 2165. Code: 400 - <coroutine object ClientResponse.text at 0x7fce715a6d50> Playing mwKJfNYwvm8 with 0 segments

Here's what my laptop says with that link:

[{"videoID":"fBNhZHFf8rs","segments":[{"category":"sponsor","actionType":"skip","segment":[0,4.339541],"UUID":"72135a2ebbe20de6ccc0a5a8b7a79bb354ea2ae666f530257b3a47db42945084","videoDuration":0,"locked":0,"votes":0,"description":""},{"category":"sponsor","actionType":"skip","segment":[606.34143,649.1774],"UUID":"6ae1ce5aefca3c7943ecbf26803f32a82e3b2cb3d9c1e0a1beb807bbde737d5a","videoDuration":0,"locked":0,"votes":0,"description":""}]},{"videoID":"37YHvUxKTsw","segments":[{"category":"sponsor","actionType":"skip","segment":[0,6.638021],"UUID":"6cb81d848455e0bc98ab61b24160cbbc6eef16b03b3fa0fd084fb5b743202951","videoDuration":0,"locked":0,"votes":36,"description":""},{"category":"sponsor","actionType":"skip","segment":[1668.5017,1705.4851],"UUID":"9ac88e58a4bb747f32d9a13604c02cfdc3d1f06faf0a86c6516354f505cc0b0e","videoDuration":0,"locked":0,"votes":12,"description":""}]},{"videoID":"-IGZZkFJaIM","segments":[{"category":"sponsor","actionType":"skip","segment":[5.76,17.08],"UUID":"c31abc3517447b659f76b88ad7861b6b4a478e019b95c0afc9dc35ebc91b51b4","videoDuration":0,"locked":0,"votes":1,"description":""}]},{"videoID":"YFs5Yz3GrYE","segments":[{"category":"sponsor","actionType":"skip","segment":[8.368,150.772],"UUID":"90e62b4aa8b2d1a408d083ce1b953bab72398e481ad07702404d84baa643a6d16","videoDuration":652.281,"locked":0,"votes":0,"description":""}]},{"videoID":"96Ug0nsOND8","segments":[{"category":"sponsor","actionType":"skip","segment":[22.237,89.241],"UUID":"04d45ffa3aa928fc90a719e2936506776f7e94d3d5b1148a5b8389b5936595cb6","videoDuration":1300.601,"locked":0,"votes":0,"description":""}]},{"videoID":"O-JF0B1wyc4","segments":[{"category":"sponsor","actionType":"skip","segment":[39.477,68.179],"UUID":"3fcaeebf7df369ccdece100f1fd8bfdb16f7291898a93ae581b42f46621388f67","videoDuration":1324.261,"locked":0,"votes":0,"description":""}]},{"videoID":"Tp1KZl_hRQ4","segments":[{"category":"sponsor","actionType":"skip","segment":[142.893,213.593],"UUID":"d5cb8b087aebed024d813d6b9d68184a9eb70e4cc053b1dbcb1949b79144378a7","videoDuration":525.981,"locked":0,"votes":0,"description":""}]},{"videoID":"rKpPzDQxR-k","segments":[{"category":"sponsor","actionType":"skip","segment":[226.4,334.8],"UUID":"2b840335f651282d8c9c11eb20c401f14414dfc82e9dc71e3a7961c7ca4e59537","videoDuration":1099.521,"locked":0,"votes":0,"description":""}]},{"videoID":"uX3hMsyeTCg","segments":[{"category":"sponsor","actionType":"skip","segment":[250.472,302.212],"UUID":"143bea3f55c57bacb068d39576009468b64cefd6266189b90162a41ef1911e6a7","videoDuration":311.541,"locked":0,"votes":0,"description":""}]},{"videoID":"3TkmcIIhcaQ","segments":[{"category":"sponsor","actionType":"skip","segment":[300.086,374.026],"UUID":"1d5cc3c41d837f4a5009793fb5828fc696f21c5e75134431c4d8c45706724d8c6","videoDuration":821.601,"locked":0,"votes":0,"description":""}]},{"videoID":"vONkXONkuWY","segments":[{"category":"sponsor","actionType":"skip","segment":[412.166,448.001],"UUID":"b53b85d5c839af95f0fbf14184f59b561a1a367b2613a35e7283ae5755d45cdf7","videoDuration":551.341,"locked":0,"votes":0,"description":""}]},{"videoID":"r8CoU1wdpFw","segments":[{"category":"sponsor","actionType":"skip","segment":[672.576,721.802],"UUID":"44dbe4342a05a5f7f5363dcd05c06b4b128a59a51f4067e100d6593d23e173246","videoDuration":724,"locked":0,"votes":0,"description":""}]},{"videoID":"ild7dAInvdM","segments":[{"category":"sponsor","actionType":"skip","segment":[1068.881,1276.048],"UUID":"aa2069af232f610efcd2f50c1d96975c350402187e7accb681cc8897e0da4d8d7","videoDuration":3349.781,"locked":0,"votes":0,"description":""}]},{"videoID":"fD2ZnOFTtbc","segments":[{"category":"sponsor","actionType":"skip","segment":[1802.9476,1928.8568],"UUID":"4932b26d2cb3c4689db2233b8250228c81757047af41360aa6154dd906f12dc6","videoDuration":3811.401,"locked":0,"votes":0,"description":""}]}]

There's no browser on HassOS but I used curl from the Web Terminal add on and here's the response:

image