PyRadio offers seamless two-way conversion between its native CSV playlist format and the widely supported M3U format. This functionality allows you to import radio stations from external M3U sources and export your PyRadio stations to share with other media players.
When you have an M3U playlist file (from another media player or online source), PyRadio can convert it to its CSV format while preserving important metadata like station logos and group categories. The conversion process:
The default maximum number of stations in an M3U file is 10,000.
You can perform M3U to CSV conversion in two ways:
Command line conversion using the “–convert” option.
This is ideal for batch conversions of multiple files (or M3U URLs).
It also provides a way to convert very large M3Us to CSV; the “-lm” / “–limit” parameter will help you overcome the default 10,000 stations limit; setting it to 0 will disable any such check.
Automatic conversion within PyRadio when selecting M3U playlists from the playlist browser
PyRadio automatically detects M3U files in your playlists directory and labels them with ” (m3u)” suffix. When you select an M3U playlist from within PyRadio, it transparently converts it to CSV format for editing and use within the application.
If both M3U and CSV versions of a playlist exist, PyRadio prioritizes the CSV file, assuming it’s your preferred edited version.
When you want to use your PyRadio stations with other media players or share them with others, you can export to the universal M3U format. The conversion:
When converting from PyRadio CSV to M3U format, certain characters are automatically converted for better compatibility and visual presentation:
| Original Character | Converted To | Purpose |
|---|---|---|
| Comma (,) | Middle dot (·) with spaces | Prevents parsing issues in M3U files |
| Hyphen (-) | En dash (–) with spaces | Improved visual appearance |
| Straight quote (") | Right double quotation mark (”) | Better typography |
These conversions help maintain data integrity while ensuring the M3U files work reliably across different media players.
Here’s how PyRadio’s internal fields map to M3U attributes:
| PyRadio Field | M3U Equivalent | Description |
|---|---|---|
| Station.name | #EXTINF title | The display name of the radio station |
| Station.url | Direct URL line | The stream URL (after #EXTINF line) |
| Station.encoding | #PYRADIO-ENCODING | Character encoding specification |
| Station.icon | tvg-logo attribute or #EXTIMG | Station icon image URL |
| Station.profile | #PYRADIO-PROFILE | Audio profile setting |
| Station.buffering | network-caching + #PYRADIO-BITRATE | Buffer and bitrate settings |
| Station.http | #PYRADIO-HTTP | Force HTTP option (special PyRadio feature) |
| Station.volume | #PYRADIO-VOLUME | Volume preset for the station |
| Station.referer | http-referrer option | HTTP referer header for the stream |
| Station.player | #PYRADIO-PLAYER | Preferred media player for this station |
Group information is preserved through M3U’s group-title attribute and/or #EXTGRP directives.
All #PYRADIO-* fields inserted in created M3Us are there to preserve PyRadio specific data; they will be ignored by all existing players but will be used if the M3U is converted back to a CSV.
The conversion functionality is accessible through PyRadio’s command line interface:
# Convert M3U to CSV
pyradio --convert playlist.m3u
# Convert online M3U to CSV
pyradio --convert https://radio-site.org/m3u/playlist.m3u
# Convert CSV to M3U
pyradio --convert radio.csv
# Specify output file for conversion
pyradio --convert radio -o my_playlist.m3u
# Force overwrite without confirmation
pyradio --convert radio -o my_playlist -y
# Limit the number of processed stations
# This one actually extends it from 10,000 to 50,000
pyradio --convert large_playlist.m3u -lm 50000