Revision history for StreamFinder

1.00    Date/time
        First version, released on an unsuspecting world.
1.01    2018/08/10
        - Fixed issue with some Facebook videos on Youtube.
        - Removed Tunein as a valid site (can no longer extract streams).
1.02    2019/01/31
        - Make StreamFinder::Youtube the default and handle pretty much 
        anything youtube-dl handles, ie. brighteon, vimeo, etc.
1.03    2019/08/15
        - Fix StreamFinder::Reciva now failing to connect to server 
        (added wget as fallthrough as LWP::UserAgent and curl fail with 
        unsupported SSL protocol errors).
        - Fix StreamFinder.IHeartRadio now failing to grab images / icons.
        - Strip off "?autoplay=true" from StreamFinder::Youtube urls.
        - Minor doc fixes.
1.04    NOT RELEASED
        - Make debug option work for all stream types, and allow specifying 
        as either "debug", "-debug", "debug => 1", or "-debug => 1" in 
        parameter list for new()
        (ie. my $station = new StreamFinder($url, -debug => 1);
        - Better handle ".m3u8" streams returned by brighteon.com (Youtube).
1.05    2019/09/03
        - Add StreamFinder::BannedVideo (https://banned.video/) to handle 
        their video streams (which youtube-dl doesn't currently handle).
1.10    2019/09/07
        - Add user-configuration files (~/.config/StreamFinder/config, 
        ~/.config/StreamFinder/<submodule>/config (see docs).
        User can now specify / override most LWP::UserAgent options, ie. 
        "agent", "timeout", etc. in the new configuration files.
        User must create these files, if needed with a text editor.
        - Greatly reduce falling back to wget by adding default user-agent 
        and checking for wget availability.  Specify an "agent" => "your agent" 
        line in the user-configuration file to change.
        - Add "-random" and "-noplaylists" options to $station->getURL() 
        (see docs)
        - StreamFinder::BannedVideo:  Add "-keep" option to better control 
        type and order of streams returned (see docs).
        - StreamFinder::Facebook: Depreciated ~/.config/.fbdata for new 
        user-configuration files.
        - StreamFinder::IHeartRadio: Add podcast-playing capability.
        - StreamFinder::IHeartRadio: Depreciated old stream order options, 
        replacing them with new -keep and -skip arguments and configuration 
        file entries.
        - StreamFinder::RadioNet: (https://www.radion.net/) ADDED
        - StreamFinder::Tunein: RESTORED (now uses StreamFinder::Youtube for 
        stream fetching), but adds metadata loading (which youtube-dl does 
        not currently fetch for these streams.
        - StreamFinder::Youtube: Better handle "chunky" brighteon.com 
        .m3u8 video streams.  Also add "-notitle" option, streamlining 
        use by StreamFinder::Tunein (see docs).
1.11    2019/09/07
        - StreamFinder::Youtube: bugfix for brighteon.com m3u8 video URLs.
        - Docs: fix a cpl. typos, actually include the updated README file.
1.12    2019/09/10
        - StreamFinder::Tunein: Add podcast-playing capability.  
        (Will look for "playUrl" before falling back to youtube-dl for stream).
        - StreamFinder::Reciva: Fix to make LWP::Useragent fetch reciva URLs 
        using the ANCIENT TLSv1 to allow to work without falling back to wget.
        See the StreamFinder::Reciva docs for creating a one-line custom 
        config file to do this - I didn't make it the default since they could 
        FIX this at ANY time, which would break things!
        - Add URI::Escape and HTML::Entities as DEPENDENCIES - in order to 
        ensure that the returned stream titles are un-escaped.
        - Fix $station->getID('fcc') to work properly (return the station's 
        FCC call-letters for sights and stations that support it.
        - Set $station->{artist} and $station->{year} where applicable.
        - Minor doc updates.
        - Fix some sight-specific submodules to properly accept just a station 
        / video ID rather than a full URL (see docs).
