STREAMRIPPER(1)

NAME
streamripper - rip shoutcast radio streams to mp3 files

SYNOPSIS

streamripper URL [options]

DESCRIPTION

Streamripper records shoutcast compatible streams. It uses meta data within a shoutcast stream to determine the beginning and end of each song, and stores the songs on your hard disk as individual mp3 files. In addition, streamripper includes a relay server for listening to the station while you are recording.

OPTIONS

-h  Print help and exit.

-v  Print version info and quit.

-a [file]
    Rip to single file.

    The default mode of operation is to separate the each track into a separate file. But sometimes this is not what you want. Sometimes you want the stream recorded to a single (big) file without splitting into tracks. The -a option does this. If you use -a without including the [file], a timestamped filename will automatically be used.

-d dir
    The destination directory.

    Select a different base directory for ripping, just in case you don't want to dump tons of mp3's into whatever directory your at.

-s  Don't create a directory for each stream.

    Normally streamripper will make a directory with the same name as the stream to place the tracks into, this disables that.

-r [base port]
    Create a relay server on base port, defaults to port 8000

    Creates a relay server on base port. if base port is not specified it defaults to 8000, otherwise whatever you entered for base port. Note that if the -z option is not used, it will keep trying higher ports if the port is unavailable.

-R num_conn
    Maximum connections to relay stream.

    In addition to creating a relay server, you can also control how many clients are allowed to simultaneously connect. The default is 1 client, but if you specify the -R option you can increase this number to <num_conn> clients. If <num_conn> is set to 0, the number of connections is limited only by your processor and network speed. The -R option has no effect if -r was not used to create a relay stream.

-z  Don't scan for free ports if base port is not avail

    Disables the "scan for free port" feature. use it if your paranoid. or don't like ports being open.

-p url
    Use HTTP proxy server at <url>

    If your behind a proxy server, enter it here. This hasn't been tested in over 6 months. but it should still work. Please till me if it doesn't.

-o  Overwrite tracks in complete directory.

    When streamripper rips tracks they are first in the incomplete directory. if the tracks finishes properly it moves over to the main directory, but if they track is already there it doesn't. this make streamripper copy over tracks that already exist in the main directory. I didn't make this default because if your ripping a stream for a long time (trying to get the whole thing) it helps to see the incomplete directory fill up with tracks you already have. One the incomplete directory is as large (or larger) then your main directory you can be pretty sure you've got the whole stream.

-t  Don't overwrite tracks in incomplete directory.

    Normally streamripper writes the files in the incomplete directory, and then moves it to the base directory (the complete directory) when it is done. If the file with the name of the track already exists in incomplete, it will overwrite the old track. When you use the -t flag, however, this will tell streamripper to backup the existing file in incomplete (appending a version number), and then create the new file.

    This is useful for streams that don't have meta-data. Because these streams only have a single file, reconnects will cause overwriting the existing file, which is not desired.

-c  Don't auto-reconnect.

    Normally streamripper will be very aggressive and try to re-connect to a dropped stream. This option disables this behavior.

-l seconds
    Run for a predetermined length of time, in seconds.

    Usually, streamripper runs until it crashes. Or rather, I meant to say that it runs until you kill it, yes, I'm sure that's what I meant. But you can instead tell streamripper to run for a certain length of time, and then exit using this flag.

-q  Add sequence number to output filenames.

    When the files are copied from incomplete to complete, the filename can be prepended with a sequence number (beginning with 0001). This can be used to, for example, show the order that the files were created.

-i  Don't add ID3V1 Tags to output file.

    Mp3 files have two different kinds of header information which describe the contents of the file: ID3V1 and ID3V2. By default, both are included in the mp3 files generated by streamripper, but you can choose not to include the ID3V1 header if you like.

-u useragent
    Use a different UserAgent than "Streamripper".

    In the http request, streamripper includes a string that identifies what kind of program is requesting the connection. Be default it is the string "Streamripper/1.x". Here you can decide to identify yourself as a different agent if you like.

-f dstring
    Don't create new track if metainfo contains dstring.

    Some streams change the meta data within a song. Usually this is a thank-you notice or possibly an advertisement for an upcoming show. When this happens, the current track will become split into fragments. To prevent this, you can tell streamripper to ignore track changes which contain <dstring> as a substring.

-k count
    Skip over <count> tracks before starting to rip.

    Sometimes the first few tracks generated by a stream are not useful, because they are advertisements, the station intro, broken songs, etc. Use this option and these tracks won't be saved.

-m timeout
    Timeout to restart connection.

    Some streams will "hang", which means they haven't disconnected, but they aren't sending any data. When this happens, if you used the -m flag, streamripper will shut down the stream and reconnect after <timeout> seconds of inactivity.

--debug
    Save debugging log.

    This creates a file called "gcs.txt" that contains all sorts of debugging information.

--xs_silence_length=num
    The volume must be less than xsd_min_volume for a period of time greater than this.

--xs_search_window=num:num
    This is how long to search for the silence. 1st number is # msec before nominal center, 2nd number is # msecs after nominal track change position.

--xs_offset=num
    Offset from center of silence window.

--xs_padding=num:num
    Amount to pad before and after splitpoint.

USING STREAMRIPPER

The easiest way to get started is to find the URL of a stream you want to rip, usually I find the URL by loading it up in winamp or xmms and querying for the source URL. (right clicking on the playlist) Once you have the URL you can begin ripping.

streamripper http://205.188.245.132:8038

This would rip Monkey Radio (as of 1/10/2001), it places the tracks into two directory's one called "Monkey Radio" and a sub-directory "Monkey Radio/incomplete" the incomplete directory is for tracks that streamripper does not know the begging or end of. the first and last tracks your rip for instance, would be in incomplete.

also you can listen to the stream by creating a relay server..

streamripper http://205.188.245.132:8038 -r

When the program starts it will display what port it's relaying the stream on, it defaults to 8000 but you can choose another port. To listen to your relay server open up XMMS or Winamp and enter your machine name with the port as you would any other stream.

SPLITPOINT DETECTION

Streamripper automatically splits tracks based on detection of a silent near the meta interval where the track changes. However, this method is imperfect, and sometimes the track splitting occurs is too early or too late. These options will fine tune the track splitting capabilities for streams that use cross-fading, which causes streamripper's automatic silence detection routine to fail.

Various --xs flags can be used to add an offset for streams that have a meta interval that comes too early or too late, to add extra padding to the beginning and end of each song, and to decide where the length of the search window and silence window.

  Default splitting

The default spitting algorithm is used when no silent point can be found. Suppose you have a meta-int with track change information at the time "mi" (see figure below).

If the xs_offset is positive, the track separation point "ts" is later the "mi" point. If xs_offset is negative, "ts" is earlier than "mi". Once "ts" is determined, a user-defined "prepad" and "postpad" are used to determine where the next track begins "ntb", and where the previous track ends "pte". The interval between "ntb" and "pte" will be copied to both songs.

/mi
|
|           /ts
|-----------|
  xs_offset |
            |
            |
  /ntb      |         /pte
  |---------|---------|
    prepad    postpad

  Silence separation

Splitting based on silence separation is similar to default splitting, only slightly more complex. Again, suppose you have a meta-int with track change information at the time "mi" (see figure below).

A search window "search_win" is determined by the xs_offset, pre_sw, and post_sw field. The beginning of the search window is at: mi + xs_offset - pre_sw and the end of the search window is at: mi + xs_offset + post_sw.

If there is a silent interval of length "silence_win" within the "search_win", the center of "silence_win" is selected as the track separation point "ts".

Once "ts" is determined, a user-defined "prepad" and "postpad" are used to determine where the next track begins "ntb", and where the previous track ends "pte". The interval between "ntb" and "pte" will be copied to both songs.

    /mi
    |
    |-----------|
      xs_offset |
                |
            ts\ |
      |-------+-|---------| *search_win
       pre_sw |   post_sw
              |
          |---+---| *silence_win
              |
/ntb          |         /pte
|-------------|---------|
      prepad    postpad

RESOURCES

Please check out the following web sites. Linked to the streamripper home page is a forum that can can be used to chat and ask questions.

Streamripper home page:
    http://streamripper.sourceforge.net/

Sourceforge project page
    http://sourceforge.net/projects/streamripper

Shoutcast
    http://www.shoutcast.com

Icecast
    http://www.icecast.org

COPYING

Copyright (C) 2000-2002 Jon Clegg, (C) 2004 Gregory C. Sharp. Free use of this software is granted under the terms of the GNU General Public License (GPL).