Are there any legal issues recreating YouTube SponsorBlock for Podcasts?
I'm part of a small group of Jr Self Taught Web Developers who were recently brainstorming ideas for a Group Project App we could put together and actually create a user base.
I offered up the suggestion of a podcast application which would have the major feature of being akin to YouTube Sponsor Block, but specifically for podcast episodes.
Essentially, a user contributed database of timestamps for podcast episodes where the mention of cutting to sponsored ads or mentions of sponsorships would be marked so they could be edited out of the episode and then the user could also download said episode where ads are cut out of the final audio file.
My idea was shot down due to fears of possibly infringing on copyright and we ended up with going with another idea. I'm certainly not upset, and am actually excited with the project idea we did choose, but it did get me wondering about whether this idea actually could have legal implications.
I know specifically with YouTube there appears to be a sort of legal loophole that prevents Google from suing projects like invidious, yt-dlp, and YouTube Sponsor Block, but am unaware of the specific details as to how this works.
Thusly, I just wanted to ask if anyone has any insights into whether this project idea would incur any legal infractions from the likes of IheartRadio and other media platforms?
To be clear, I'm not seeking legal advice here, and I'll be taking any responses with a grain of salt, but I just wanted to see if anyone knows anything on this subject and the legal concerns raised.
I very much dislike being advertised to and podcasts are one of the last bastions of media where advertisements still come up regularly and I'd love to make this application for those who are frustrated with how often they have to skip through sponsor mentions.
It likely won't work (well), because lots of podcasts actually use Megaphone and similar services that add interest-based ads into your download. I.e. ads can be of variable length or there may even be no ads, because the podcast targets the US but you're downloading from Pakistan.
Oh man, that answers some questions I've had for a while. Some of the podcasts I listened to have custom ad reads and then some will just blast the same ad as another unrelated one. Especially considering I get republican ads on podcasts with very liberal hosts. Plus gambling ads fucking everywhere
I see. I think there might be an issue in redistribution to a certain extent. Some podcasts you can download directly from their website using RSS feeds and command line tools like wget. But a lot of those don't directly have sponsor mentions, but if they do, those are easily removed because they aren't injected at download time.
Others would require download using a service like Spotify, etc. And then editing the audio file and then redistributing it from a centralized data store, and that's where I believe the legal question would certain gain more validity
Rather than just providing the timestamps and running a script that removes those clips prior to download from another source (like how the sponsor block api can be queried to cut out sponsor menttions using a command line flag from yt-dlp prior to download), which I believe would fall into more of a legal grey area.
But yeah, injection of ads based off of location is one potential hiccup I had considered when thinking on the proposed app's implementation. Unless the ads are always loaded at a specific timestamp in the episode, this means that the length of the ads would be of varying length, making it less likely to work consistently, as you indicated.
So the only way would be to keep the audio files with the sponsor mentions removed in a centralized data store to be redistributed from, which I'm pretty sure isn't legal...not sure though.
You definitely would have legal issues redistributing the ad-free version.
Sponsor block works partly because it simply automates something the user is already allowed to do - it's legally very safe. No modification or distribution of the source file is necessary, only some metadata.
It's an approach that works against the one-off sponsorships read by the actual performers, but isn't effective against ads dynamically inserted by the download server.
One option could be to crowdsource a database of signatures of audio ads, Shazam style. This could then be used by software controlled by the user (c.f. SB browser extension) to detect the ads and skip them, or have the software cut the ads out of files the user had legitimately downloaded, regardless of which podcast or where the ads appear.
Sponsorships by the actual content producers could then be handled in the same way as SB: check the podcast ID and total track length is right (to ensure no ads were missed) then flag and skip certain timestamps.
Even if you're downloading the file directly from the URL found in the RSS feed, that doesn't mean that ads can't be dynamically injected into the file. A URL like https://download.my.podcast/episode4.mp3 can still be answered by a script that serves a custom version of the podcast with region specific ads.
Ftr: I was talking about regular RSS feeds+MP3 downloads, not Spotify exclusives.
If you really wanted to do something about Spotify exclusives, the likely only way to do this legally is building a custom Spotify client—Spotify allows custom clients, but only for paying customers, not for free users.
I know nothing of the implications of developing what you’re proposing, but I 1000% support it and would actually start listening to podcasts again if it ever came to fruition and I could use it.
so they could be edited out of the episode and then the user could also download said episode where ads are cut out of the final audio file.
This is the part that might be problematic and I can see being part of a civil suit (I am not a lawyer). Depending on how you collect and store the episodes (which you may not actually have to do to achieve your goal, but is the easiest solution) you would likely run afoul of "distribution" precedents in the US that may result in a judgement against you.
But even if you didn't actually break the law, the media lobbies globally are well known for filing huge numbers of lawsuits over anything that even looks a little like it might be costing them money. Defending yourself at all is hard time-consuming and often expensive. It's not something I would recommend going into casually.
https://torrentfreak.com/category/lawsuits/ is a great site for learning about the current lawsuits from a tech perspective, and has helped me out many times over the last decade. It's one of the gems of the internet, in my opinion.
Ultimately, as others have suggested, the most probable way of doing this legally would be to not distribute anything other than timestamps as well as a simple binary/executable that would use a built in media editing tool like ffmpeg to cut out the advertisements/sponsor mentions and then recut the audio file back together. This is much akin to how sponsorblock works from what I've gathered so far.
I thought about this, and I believe I just wouldn't want to increase my threat profile that much. I'd have to put the API up on either a .onion or i2p vps instance, in which case I'd have to brush up my knowledge on the dark web more than I currently have. I'd also have to become a much better cybersecurity expert than I am now. Don't get me wrong, these are all great skills to have, but if I can go the more legit route of being able to do this legally and without fear of unnecessary legal hurdles (frivolous lawsuits, etc.), then I'd prefer that.
Other answer seems to suggest that the problem is that the same podcast can be available, depending on where and who is listening to it, with different length due to different ads injected into. Here's my probably stupid and completely ignorant suggestion: instead of using timestamps for both begin and end of the ads segment, you could use a timestamp for the beginning, and an hash of the first part of "non-ads" segment. I'll try to explain better:
The xxx is the ads segment, the ^ is the timestamp of the beginning of the ads, the |___| is a small duration segment (for example, 0.5 seconds) right after the ads segment. The data of that segment is hashed and used as "end ads segment indicator".
On the other device, with a different duration of the ads, you should start hashing it to find the corresponding segment.
Is this doable or did I just said a bunch of idiot things?
Possibly doable, and definitely not a bunch of idiot things.
The beginning of the FIRST ad certainly does start at a consistent point during the podcast episode, but due to the dynamic nature of the injected targeted ads afterwards, the remaining timestamps for the beginning of the subsequent ads would be different. The hash of the audio file was suggested by another helpful person earlier, and it has piqued my interest, though it's implementation, at least as I conceive of it currently, would be rather clunky, as it would require an ad free version of the audio file to compare it against, as well as a way (possibly a hash or some sort of audio recognition software, or AI trained to recognize ads, effectively acting as audio recognition software), to recognize exactly when the ads started and stopped by comparing the ad free version second by second to the ad-injected version.
Additionally, because re-distribution of said audio files would definitely land me in legal trouble, I'd have to dynamically generate those timestamps and send it to you while you received the audio file from the official distributor, all to be edited on your device upon arrival.
I'm still very much a noob at programming and webdev, so this is definitely something that is probably a few years down the line in the making as I continue to upskill, but it's good to think about as I would like to produce this if at all feasible (and won't land me in legal trouble or hurdles, I'd like this to be akin to Invidious and Sponsorblock if possible).
Thanks for the suggestion! You definitely got me thinking hard on this problem and its potential solutions.