** Description changed: If you connect to a stream that redirects using a "location:" header rather than "Location:", the redirect is not recognized. I used the -a and -A options (just save as one file, no splitting by song), and in that case many 0-byte MP3 files are created, about 4 or 5 per second. With the attached patch, the redirect is followed and only one MP3 file is created containing the streamed data, as expected. The HTTP specification, RFC 9112, specifies in section 5 "Field Syntax" that field names are case-insensitive. - Versions: $ lsb_release -rd No LSB modules are available. Description: Ubuntu 24.04.3 LTS Release: 24.04 - $ apt-cache policy streamripper + $ apt-cache policy streamripper streamripper: - Installed: 1.64.6-1build3 - Candidate: 1.64.6-1build3 - Version table: - *** 1.64.6-1build3 500 - 500 http://nl.clouds.archive.ubuntu.com/ubuntu noble/universe amd64 Packages - 100 /var/lib/dpkg/status - $ - + Installed: 1.64.6-1build3 + Candidate: 1.64.6-1build3 + Version table: + *** 1.64.6-1build3 500 + 500 http://nl.clouds.archive.ubuntu.com/ubuntu noble/universe amd64 Packages + 100 /var/lib/dpkg/status + $ To reproduce: - $ streamripper 'https://streaming.live365.com/a78846' -A -a 'out_%d' -l 5 + $ streamripper 'https://streaming.live365.com/a81821' -A -a 'out_%d' -l 5 Connecting... stream: Streamripper_rips server name: Time to stop is here, bailing shutting down bye.. $ ls -l out_*.mp3 |wc -l 21 $ find . -name 'out_*.mp3' -size 0 |wc -l 21 $ # Patched version: - $ ~/src/streamripper/streamripper 'https://streaming.live365.com/a78846' -A -a 'outnew_%d' -l 5 + $ ~/src/streamripper/streamripper 'https://streaming.live365.com/a81821' -A -a 'outnew_%d' -l 5 Connecting... - stream: Radio stratford + stream: Further Rock Radio server name: DAS declared bitrate: 192 meta interval: 8192 - [skipping... ] - Unknown [ 577kb] + [skipping... ] Wilco - Falling Apart (Right Now) [ 585kb] Time to stop is here, bailing shutting down bye.. $ ls -l outnew_*.mp3 |wc -l 1 $ find . -name 'outnew_*.mp3' -size 0 |wc -l 0 - $ - + $ Additional notes regarding my patch: I patched the function "extract_header_value", which is used for all HTTP headers, to use strcasestr() instead of strstr(), and removed a now redundant call. Note that in the reproduction above, my patched version recognizes several other headers as well. I consider that an improvement. The function "extract_header_value" is, however, also used to parse PLS files. The PLS format appears to be specified only by reverse- engineering, but almost all sources I could find say field names in it are case-sensitive, so this may necessitate further changes. Additionally, I'd like to note that this function does not require fields to start at the beginning of a line, which one may even see as a security issue; it may be a good idea to either fix that in the function (but also think about the PLS parsing!), or call it with an extra \n like - extract_header_value(header, info->http_location, "\nLocation:", - sizeof(info->http_location)); + extract_header_value(header, info->http_location, "\nLocation:", + sizeof(info->http_location)); etc...
-- You received this bug notification because you are a member of Ubuntu Bugs, which is subscribed to Ubuntu. https://bugs.launchpad.net/bugs/2131037 Title: streamripper does not follow redirect if location header is in lowercase To manage notifications about this bug go to: https://bugs.launchpad.net/ubuntu/+source/streamripper/+bug/2131037/+subscriptions -- ubuntu-bugs mailing list [email protected] https://lists.ubuntu.com/mailman/listinfo/ubuntu-bugs
