Code Monkey home page Code Monkey logo

radiorecorder's Introduction

Radio Recorder

Java CI Dependency Check Integration Test ReleaseDate Maven Central License

A command line internet radio player and recorder.

Some of the features are:

  • Live Playback
    • Display of the current song title played.
    • Live playback using Java Media Framework.
    • Live Google Chromecast playback of radio streams.
  • Recording
    • Recording of one file per song.
    • Writing of ID3 tags (ID3v1 and ID3V2.4).
    • Parallel recording of multiple radio stations.
  • Integrated querying and resolving using the Radio Browser internet radio database.
  • Stream formats:
    • MP3
    • OGG Vorbis
    • AAC/AAC+/MP4 (only for recording/chromecast playback)

Restrictions:

  • Missing stream formats:
    • AAC (playback)
    • AAC+ (playback)

Downloading & installation

The current version can be downloaded for Debian, CentOS and Mac OS X systems here:

https://github.com/sfuhrm/radiorecorder/releases

Releases

Releases typically contain files named like this for downloading:

  • Shipped as x86/AMD64 installable package
    • radiorecorder_xxx_amd64.deb: A Debian install archive with the program and the Java runtime included.
    • radiorecorder-xxx.x86_64.rpm: A CentOS/RHEL install archive with the program and the Java runtime included.
    • radiorecorder-xxx.pkg: A macOS PKG installer with the program and the Java runtime included.
    • radiorecorder-xxx.dmg: A macOS DMG installer with the program and the Java runtime included.
  • Needing a JDK, runnable on any platform
    • radiorecorder-xxx-bin.tar.bz2: A program-only archive in tar.bz2 format that requires a Java runtime installed on your system.
    • radiorecorder-xxx-bin.tar.gz: A program-only archive in tar.gz format that requires a Java runtime installed on your system.
    • radiorecorder-xxx-bin.zip: A program-only archive in ZIP format that requires a Java runtime installed on your system.

You can choose whether you prefer an installation with the runtime as a package or care for the Java runtime yourself. The latter makes sense when you're on Windows, Aarch64, X86, or some other system with no dedicated installer.

Usage

Playback

When playing, the usage can consist of the search and the play step:

  • Search the stations (i.e. radiorecorder -list-station synthpop)
  • Play a specific radio station of the list from above (radiorecorder -play f9ab3256-33a7-41a3-ba57-646bf3750ae9)

Recording

When recording, the usage usually consists also of the two steps:

  • Search the stations (i.e. radiorecorder -list-station synthpop)
  • Record a specific radio station of the list from above (radiorecorder -use-songnames -directory . f9ab3256-33a7-41a3-ba57-646bf3750ae9)

Command line options

The program is a command line only program. It supports multiple parameters:

 URL_OR_UUID_OR_NAME                    : URLs of the internet radio
                                          station(s), (partial) station name
                                          for lookup or the station UUID (see
                                          option -list-station)
 -abort-after-duration DURATION         : Abort after a given time, i.e.
                                          '3m10s', '3h' or '10s'.
 -abort-after-kb (-abort-after) KB      : Abort after writing the given amount
                                          of kilobytes to target drive.
 -cast (-c) CASTDEVICE_TITLE            : Stream to the given chrome cast
                                          device. Use cast device title from
                                          '-list-cast'.
 -client (-C) [JAVA_NET |               : Specify HTTP client to use. (default:
 APACHE_CLIENT_5]                         APACHE_CLIENT_5)
 -directory (-d) DIR                    : Write recorded stream files to a
                                          folder hierarchy in this target
                                          directory.
 -help (-h)                             : Show this command line help.
                                          (default: true)
 -limit (-l) COUNT                      : Limit of stations to download in
                                          parallel. (default: 10)
 -list-cast (-L)                        : List chromecast devices, then exit.
                                          (default: false)
 -list-mixer (-X)                       : List audio playback mixers, then
                                          exit. (default: false)
 -list-station (-Z)                     : List matching radio stations limited
                                          by '-limit', then exit. (default:
                                          false)
 -min-free (-M) MEGS                    : Minimum of free megs on target drive.
                                          (default: 512)
 -mixer (-m) MIXER_NAME                 : The mixer to use for playback. The
                                          mixer parameter is the name from the
                                          '-list-mixer' option output.
 -play (-p)                             : Play live instead of recording to a
                                          file. (default: false)
 -proxy (-P) URL                        : The HTTP/HTTPS proxy to use.
 -reconnect (-r)                        : Automatically reconnect after
                                          connection loss. (default: false)
 -timeout (-T) SECS                     : Connect/read timeout in seconds.
                                          (default: 60)
 -use-songnames (-S)                    : Use songnames from retrieved metadata
                                          information. Will create one file per
                                          detected song. (default: false)
 -version (-V)                          : Show version information and exit.
                                          (default: false)

License

Copyright 2017-2024 Stephan Fuhrmann

Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at

http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.

radiorecorder's People

Contributors

dependabot[bot] avatar sfuhrm avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar

radiorecorder's Issues

armhf release

Could you please compile it for armhf(banana pi, 32bit, ARMv7 Processor rev 3 (v7l), Mediatek Cortex-A7)?
I used to use streamripper, but from this year on my favourite radio station can't be ripped anymore through this way!
I should test your application!
Thank you in advance!

Feature Request: Abort after X minutes

Hi!

I would be awesome if it was possible to have a feature like -abort-after KB, but for time.
Something like -abort-after-minutes where we can set the amount, like 60 minutes, and after this, the recording is automatically stoped.
This would be an immense help for people like me is trying to record a schedule show, everyday, that has a duration of 60 minutes.

Thanks!

AAC Playback - Recording

Hello!

This application is awesome. You should provide some way so we can donate to this project.
I just wish to know if there is technical challenges to allow playback for AAC streams, or if this is not present due to some kind of license problem.

Would love to hear what's the status of AAC streams playback and recording, since my favorite stations are currently streaming on AAC. :)

Thanks!

Proper syntax

I am trying to record http://stream.radioparadise.com/aac-320. I have been unable to figure out the syntax to start the stream. Windows 10. Directory I wish to record to: D:\RadioRecord. Would you mind helping me with a proper command to record this? Thanks.

I cannot open the app on Mac

Hi, unfortunately I cannot open the App on my Mac. After I open the App it immediately closes without any error message. I tried both png install and dmg install.

Bug: Audio artifacts for Icecast 2.4.99.3

Icecast 2.4.99.3 servers have audio artifacts.

Analysis: Icecast 2.4.99.3 servers are not detected correctly because HTTP response headers are there mapped in lower case.

Bitrate is displayed as zero

Bitrate is displayed as zero because of a mapping bug.

$ radiorecorder -Z pop -l 100
UUID                                 Name                                                                                  Codec   BR Tags 
ef3eb2ef-3011-45ba-b15d-109af983a5e5   _ 101.1 SJK POP FM                                                                  AAC+    0  []   
9d857acf-fc89-4bc6-8746-c54d3bb40067   _ 101.5 AEK POP FM                                                                  AAC+    0  []   
203eef04-b6e0-4dac-b483-c7290e12d0d8   EXA FM: POP MUSIC in Spanish and English                                            AAC+    0  []   
3973bb14-4377-4b62-86ac-b25d11d81949  EXA FM: Música pop em inglês e espanhol                                              AAC+    0  []   
e85b3f98-9cdb-4ac1-a012-6a2e384d1901  EXA FM: Música Pop en Español e Inglés                                               AAC+    0  []   
04a5c951-6f16-417b-b07a-236d51069abd  EXA FM: Muzikë pop në anglisht dhe spanjisht                                         AAC+    0  []   
7cb5c206-c673-42b1-b8e4-84c2e4e51adb  EXA FM: Pop Music in Spanish and English                                             AAC+    0  []   
aba1f2c1-b7d7-4f4a-8bc1-621d3e16189b  EXA FM: Pop music in Spanish and English                                             AAC+    0  []   
d9e2fe7c-ecfc-48e6-b33c-af00899adc67  EXA FM: Pop musika i le Igilisi ma le Sipaniolo                                      AAC+    0  []   
d7a3eb69-9212-4b9d-98d7-ac5bdfe105da  EXA FM: Popmusik på engelska och spanska                                             AAC+    0  []   
b50fea42-9c22-45c3-a7d5-afc772cab87d  M80 Rádio – Pop                                                                      AAC     0  []   
35c273f1-bf9f-11e9-8502-52543be04c81 - 0 N - Deutsch Pop on Radio                                                          AAC+    0  []   
7332a48b-2f9c-4b51-b79b-ba7869b35426 - 0 N - Deutsch Pop on Radio                                                          AAC+    0  []   
...

HTTP 503 when accessing radiobrowser api

When accessing radiobrowser api, the application stops with an HTTP 503 error.
Analysis: The endpoint that is used by the application is broken and it is not yet using the auto discovery of endpoints provided by radiobrowser4j.

Issue with international characters

Hi

I have a problem that the app is not recognizing international (accentuation) characters.
Is this something configurable in the application? Or this is coming from the stream?

Here is one example of a output from a station broadcasting in portuguese. The radio station is from Brazil.
I highlighted in bold the errors in the names....

C:\Program Files\radiorecorder>radiorecorder.exe -play 2ccd58d8-6924-49cb-8bce-ba10263f7bbb
INFO: Starting radio: Radio(name=Jovem Pan Pop Brasil, url=http://6d9a.webradio.upx.net.br:9046/stream?1597501793407, uuid=2ccd58d8-6924-49cb-8bce-ba10263f7bbb, favIconUrl=null, codec=MP3, bitrate=0, tags=[])
INFO: Track: 3:54 PM: Stream Name -> Clßudio Zoli - Noite do Prazer [4Ne]
INFO: Track: 3:56 PM: Stream Name -> ssia Eller - Relirio (Ao Vivo) [4MM]
INFO: Track: 3:59 PM: Stream Name -> ssia Eller - Gatas Extraordinßrias [4MH]
INFO: Track: 4:03 PM: Stream Name -> Legiπo Urbana - Ainda Θ Cedo [4Og]

Any idea?

Doesn't record on Windows

Hi,

This seems like great tool, but I can't get it to work on Windows 11. I installed the msi without problems and I can play from the commands line, e.g.:

C:\Program Files\radiorecorder>radiorecorder.exe -play 96301ea7-0601-11e8-ae97-52543be04c81
INFO: Starting radio: Radio(name=181.FM - Christmas Classics, url=http://www.181.fm/stream/pls/181-xtraditional.pls, uuid=96301ea7-0601-11e8-ae97-52543be04c81, favIconUrl=null, codec=MP3, bitrate=0, tags=[])
INFO: Track: 21.42: 181.FM Christmas Classics ->
INFO: Track: 21.42: 181.FM Christmas Classics -> Bing Crosby & The Andrews Sisters - Twelve Days Of Christmas

But recording fails:

C:\Program Files\radiorecorder>radiorecorder.exe -S -r -d . 96301ea7-0601-11e8-ae97-52543be04c81
INFO: Starting radio: Radio(name=181.FM - Christmas Classics, url=http://www.181.fm/stream/pls/181-xtraditional.pls, uuid=96301ea7-0601-11e8-ae97-52543be04c81, favIconUrl=null, codec=MP3, bitrate=0, tags=[])
WARN: File number finding problem
java.nio.file.NoSuchFileException: .\181.FM+-+Christmas+ClassicsINFO: Dropped 8192 bytes, no file name yet
INFO: Dropped 5308 bytes, no file name yet
INFO: Dropped 2500 bytes, no file name yet
INFO: Track: 21.31: 181.FM Christmas Classics -> Glenn Miller - Sleigh Ride
INFO: Deleting partly file .\181.FM+-+Christmas+Classics\001.Glenn Miller - Sleigh Ride .mp3

Any help is appreciated!

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.