StreamFinder
view release on metacpan or search on metacpan
recent changes in their site (more stupid javascripting).
- StreamFinder::PodcastAddict - Mark DEPRECIATED since they recently
javascripted & crapped up their podcast pages making it now impossible
to fetch a playlist or first episode from them (correct episode pages
still seem to work for now, if you get them from your browser first).
2.17 2023/08/25
- StreamFinder::Rumble - Further Cleanup artist and description fields
of excess leading & trailing spacing likely introduced by possible
tweaks in their site. This issue was causing Fauxdacious mediaplayer
to fail to properly load display metadata for Rumble streams.
2.18 2023/09/04
- StreamFinder::Anystream - Add -maxstreams option to limit number of
streams that can be returned - some sites contain tons. Also
add ability to fetch additional metadata (ie. iconurl, description,
channel (artist), etc. from sites that contain them in standard HTML
<meta> tags. One site that does is: www.theepochtimes.com/epochtv
- StreamFinder::Goodpods - REMOVED due to them javascripting up their
site to where it's no longer possible to scrape any streams.
2.19 2023/09/12
- StreamFinder::Youtube - 1) Fix failure to fetch artist, icon, etc.
sometimes on embedded IFRAME urls (slight site changes) and first
episode from some channels. 2) Add -youtube-site argument to specify
a different default youtube site (default https://www.youtube.com).
3) Add ability to parse youtube channel URLs containing an at-sign,
ie.: https://www.youtube.com/@channelID.
- StreamFinder::Subsplash - Restore as EXPERIMENTAL, as this site
seems to now work again, at least for audio streams on some sites.
- StreamFinder::Anystream - doc. touchups.
2.20 2023/10/24
- Update default user-agent to:
"Mozilla/5.0 (X11; Linux x86_64; rv:109.0) Gecko/20100101 Firefox/115.0"
- StreamFinder::Apple - Handle "embedded" Apple podcasts
(https://embed.podcasts.apple.com/). Also fix embedded
subsplash.com stream URLs that contain "\u00##" characters and were
being trimmed when encountered.
- StreamFinder::Rumble - Convert one of their hosting sites that no
longer works (hugh.cdn.rumble.cloud/video) to the standard one that
still does (sp.rmbl.ws).
- StreamFinder::Youtube - Try harder to get the first (most recent)
video from channel pages (by skipping any "banner" video before it).
2.21 2023/11/16
- StreamFinder::Anystream - Handle "escaped" URLs embedded in some
sites, ie. crap like: https:\/\/stupidsite\u002fstream.mp3 and ones
that start with "//", ie. "//stupidsite/stream.mp3".
- StreamFinder::Bitchute - Fix failure to fetch artist and albumartist
(channel name and page URL) due to a slight tweak to their site.
- StreamFinder::Brighteon - Hide extraneous debug message (when not
running in debug mode).
- StreamFinder::Rumble - Warn if had to convert new "bad" site:
"hugh.cdn.rumble.cloud.video" to "sp.rmbl.ws".
Also: try harder to fetch artist, albumartist, and icon (from "embed"
URLs), since some channels allow public access to the "embed" version
of their URLs but NOT always to their main (html) ones (go figure).
2.22 2024/01/20
- Remove StreamFinder::LinkTV (site no longer hosts videos onsite).
- Mark StreamFinder::SoundCloud DEPRECIATED (now requires cookies and
trackers to be enabled onsite to browse, but song URLs still work here.
- Minor module doc touchups (to note recent depreciations, etc.)
- StreamFinder::Rumble - Add -bitrate (max kbps) option.
2.23 2024/01/28
- StreamFinder::Rumble - Stop converting Rumble's "new" streaming URLs
to their "old" format (initiated by v2.20) since the new URLS now seem
to work properly and Rumble seems to be bandwidth-throttling the old
ones, I assume to force usage of the new ones and close the old hosts.
- StreamFinder::Bitchute - Silence cpl. stray debug messages when
debug mode is not on.
- Update copyright year to 2024.
2.30 2024/04/25
- StreamFinder::Castbox - Refactor to scrape episode data from the
podcast page as now Castbox episode pages are no longer scrapable
(now dynamically generated by javascript), but for now, all required
episode data is embedded in the corresponding podcast page (for now).
Also now append "lyrics" (transcript) to the "description" field (for
Fauxdacious, etc.) for Castbox pages that provide this in a "lyrics"
(.lrc) link!
- StreamFinder::Google - REMOVED since Google has officially closed
down it's podcast service.
- StreamFinder::Podchaser - Fix failure to fetch episode data for the
first episode (when a podcast page given) and failure to fetch all due
to minor changes in their site.
- StreamFinder::Spreaker - Refactor since Spreaker has now javascripted
and cookied up their pages, but we're still able to scrape it's podcast
pages for podcast metadata, required playlist data and 1st episode ID,
and they provide a separate api site for fetching all episode data when
given the episode-ID.
- StreamFinder::Subsplash - Fix extraction of the artist & album fields
due to minor changes in their site. Also add missing "Url" (first
stream) field (not required for fetching streams).
2.31 2024/04/27
- StreamFinder::Castbox - Document new feature (in v2.30) that appends
any transcript (.lrc) link into the "description" field.
- StreamFinder::Podchaser - Fix failure to fetch the proper iconurl for
the first episode and the podcast's album fields when given a podcast
URL.
- docs - Remove StreamFinder::Google (removed in v2.30) from supported
podcast list.
2.32 2024/05/18
- Welcome epochtimes.com/epochtv videos by adding
StreamFinder::EpochTV. Site was previously supported by youtube-dl,
but was often missing some metadata & often returned wrong HLS stream
quality, particularly for users with limited bandwidth.
2.33 2024/06/03
- StreamFinder::Brighteon - Redo to handle their redesigned site (which
now requires JavaScript in order to view pages). Channel pages are no
longer scrapable (so no more video playlist or fetching latest video),
but individual video pages still contain all the same data embedded
in Json format (at least for now).
- StreamFinder::EpochTV - Few minor tweaks to try harder to fetch
streams, the artist, the artist's channel icon, and the year.
2.34 2024/07/03
- StreamFinder::Bitchute - Refactor due to Bitchute's major recent
redo of their site (more Javascript & crap), but they have a second
site URL (api.bitchute.com) which still works well, so we autoconvert
non-working URLs from www.bitchute.com to api.bitchute.com.
2.40 2024/07/26
- StreamFinder::Youtube - Refactor to add "-format-fallback" option to
allow specifying a second "-f <format-string>" option for use if no
streams match the "-format" option. Defaults have been changed from
"mp4" to "best", and the "-format-fallback" defaults to "bestaudio".
These changes are required after 07/24 due to Youtube making (nearly)
all of their public streams either audio-only or video-only, which
are pretty much useless for streaming via your own media-player without
actually downloading the video (and remuxing to combine the audio and
video streams) to a file first! Note: The ability to do this is only
possible due to the Herculean efforts of the yt-dlp developers and
users are strongly encouraged to upgrade to the latest version
2024.07.25 to avoid likely just getting audio streams, as the internet
continues to get more crapped up and locked down every day. :(
2.41 2024/09/14
- StreamFinder::AnyStream - Intercept & handle all .m3u8 (HLS) urls
in order to apply any "hls_bitrate" option limits and select the
highest one from the stream list if the HLS url is a master list.
This seems to be necessary as ffmpeg, used in Fauxdacious for HLS
streams always seems to select the highest bitrate stream and provided
no known argument for limiting stream selection by bitrate.
- StreamFinder::SermonAudio - Massive redo due to them completely
overhauling their site, which now only offers a single video stream
in HLS format in place of multiple bitrate choices, obsoleting the
"high" and "low" "quality" options. The choices are now: "audio" or
"any". Users should now use the "hls_bitrate" option to limit
bandwidth for slower internet connections.
Also add new "nowebp" option to download icon images in their native
formats instead of webp (needed by Fauxdacious GTK versions and
perhaps others).
- StreamFinder::Youtube - Change default external Youtube-fetching
program from "youtube-dl" to "yt-dlp", as the former may no longer
properly handle many youtube streams.
2.42 2024/09/22
- StreamFinder::SermonAudio - Fix excess padding sometimes left on both
sides of Genre text. Also update copyright year & docs.
- StreamFinder::Podchaser - Fix failure to fetch failure to fetch
episode icon, and sometimes other fields for the latest episode when
given a podcast url due to slight changes in their site.
- StreamFinder - Fix some issues with handling HLS (.m3u8) streams,
particularly in StreamFinder::Anystream, but effecting all modules,
mostly for better handling by Fauxdacious Mediaplayer and the ffmpeg
library when using internet connections with limited bandwidth. The
biggest change is we no longer attempt to parse out HLS master
playlists when neither hls_bandwidth (limit) or -noplaylists parameters
are set. Instead, just return the master playlist stream as-is. This
allows for better control over selected streams within bandwidth limits
within Fauxdacious itself. To function the old way, simply specify
an hls_bandwidth limit (in the config file) or "-noplaylists => 1".
2.43 - Update copyright year to include 2025
- StreamFinder::SermonAudio - Fix failure to return description
field and sometimes incorrect icon and image URLs due to slight changes
to their site. Also try harder to find description.
2.44 - StreamFinder::Rumble - Add "-order" option & refactor to better deal
with their recent addition of m3u8(hls) streams; and, if accepted,
force audio-only (aac) stream-option to last (for use if no streams
fall within the user's max. bandwidth/quality limit options. Also
exclude their new "video-only" streams ("*.[A-Z]aa.mp4*" urls).
- StreamFinder::Youtube - Strip "?list=..." part off Youtube video urls
to prevent fetch "hanging" issue.
2.45 2025/07/22
- StreamFinder::Youtube - Add ability to fetch the "New & Improved xxxx
Screwed Up" Bitchute streams which can no longer be scraped except by
the very latest (version 2025.05.22) of yt-dlp! We still scrape the
Bitchute video page for metadata (so StreamFinder::Bitchute remains
the default and best way to fetch Bitchute videos). NOTE: Users
must *NOT* have the "-youtube" option set to 'No', else Bitchute video
streams can no longer be retrieved. Also, users can no longer supply
a Bitchute channel page and get the latest video.
Internet Encrapification continues at full speed ahead here in 2025 as
more and more streaming sites continue to invest tons of money to
hire developers to obfuscate their sites to prevent a handful of users
like us avoiding their javascripts, trackers, spam, excess ads, etc. :(
- StreamFinder::Rumble - Set default "-order" to "quality".
2.46 2025/11/14
- StreamFinder::Rumble - Add "-notrim" option, and strip off "?ets=..."
from urls unless set. Also fix a Perl uninitialized variable warning.
- StreamFinder::Youtube - Properly strip off excess bs from URLs, such
as "&source=..." unless "-notrim" option set.
Also now search for any Youtube urls embedded in webpages' JSON code
as a fallback. Update copyright year to 2025.
2.47 2026/01/09
- StreamFinder::Odysee - Fix failure to fetch artist field and streams
from their webpages (they've tweaked their site and have added back
stream-fetchability directly from their pages). We also no longer call
StreamFinder::Youtube if -youtube => 'no', or if one or more streams
are successfully fetched from their webpage(s) and
-youtube => 'ifneeded' (how it was meant to work).
- StreamFinder::Rumble - Fix failure to fetch artist name and full
description text (slight changes in their site). Also reject streams
named "*.[A-Z]aa.rec.{mp4|webm}" as these seem to be video-only /
"dash"? streams, and any stream with non-numeric "quality" (except
"hls" or "auto" (ie. "timeline", "pause_ads_params", etc. as these are
not real streams.
- StreamFinder::Youtube - Fix sometimes failure to fetch the proper
image URL and/or the youtube video-url often embedded in many Odysee
videos as the last line of their description via StreamFinder::Odysee.
Also allow the -format-fallback option to be set to "" or 0 to allow
fallback to any available format (no -f option appended to yt-dlp or
youtube-dl) - unless -formatonly option is set.
2.50 2016/01/29
- Add StreamFinder::PragerU to handle www.prageru.com videos.
- StreamFinder::Subsplash - Refactor to optionally use yt-dlp to fetch
video streams (-youtube => {yes|no|first|last|ifneeded}) similar to
several of the other fetcher modules, as Subsplash pages pretty much
only return audio streams (if at all) without javascripts/cookies now.
Also fixed & greatly improved metadata fetch from their pages.
- StreamFinder::Brighteon - Fix failure when -youtube => 'only' is set.
- StreamFinder::(BitChute,Brighteon,Odysee) - Try harder to get full
"description" field, tweak a cpl. regices to better handle non-ascii
characters sometimes found in certain text and/or URL fields.
- StreamFinder::Rumble - Filter out some more now non-playable
.mp4/.webm streams from consideration.
- StreamFinder::Youtube - Prevent sometimes non-URLs being returned as
valid streams causing failure to fallback to StreamFinder::Anystream
when no valid streams found.
2.51 2016/01/31
- StreamFinder::EpochTV - Fix returning mostly invalid stream URLs.
Also add "-speakericon" (boolean) to return artist's icon instead of
the default channel icon (EpochTV offers separate ones, like
StreamFinder::SermonAudio).
Also improved several other metadata values returned.
- StreamFinder::Bitchute - Change default -youtube value from "no" to
"yes" as yt-dlp is now required to fetch Bitchute streams. Also
clean up code & docs a bit.
StreamFinder::(Anystream,Subsplash) - Touch up docs a bit.
2.60 2016/02/07
- Did a quick test of all StreamFinder modules to see if they still
work (many I haven't used in ages, and sites change!). Results below:
- StreamFinder::BrandNewTube - Refactor to work again after
brandnewtube.com became onevsp.com and ugettube.com closed up shop.
( run in 0.538 second using v1.01-cache-2.11-cpan-39bf76dae61 )