Giter Club home page Giter Club logo

deefuzzer's People

Contributors

achbed avatar dependabot[bot] avatar movermeyer avatar yomguy 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  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  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  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

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

deefuzzer's Issues

OSCController object has no attribute

#Hi,

Starting Deefuzzer as daemon works without problems: deefuzzer /etc/DeeFuzzer/deefuzzer.yaml &
Ok, one stream but I like to have more streams. This should be possible in Deefuzzer. So editing the deefuzzer_multiple.yaml file for two stations.
>
deefuzzer:
log: "/var/log/deefuzzer/multi.log"
m3u: "/tmp/station.m3u"
stationdefaults:
control:
mode: 1
port: 16001
jingles:
dir: "/media/DRIVE2GO/jinglesRadioRenzo"
mode: 1
shuffle: 1
station:

control:
mode: 1
port: 16001
infos:
description: "radioRenzo Offshore broadcasts"
genre: "Various"
name: "radioRenzo offshore radio broadcasts"
short_name: RadioRenzo offshore radio broadcasts
url: "https://radiorenzo.nl-web.net"
jingles:
dir: "/media/DRIVE2GO/jinglesRadioRenzo"
mode: 1
shuffle: 1
media:
bitrate: 96
source: "/media/DRIVE2GO/RadioDiv/uitzendingen_programmas"
format: mp3
ogg_quality: 4
samplerate: 48000
shuffle: 1
voices: 2
record:
dir: "/path/to/archives"
mode: 0
relay:
author: Unknown
mode: 0
url: "http://127.0.0.1:8000/telecaster_live.mp3"
feeds:
mode: 0
rss: 1
json: 0
playlist: 1
dir: "/path/to/rss/"
enclosure: 1
media_url: "http://localhost/media/"
server:
host: "127.0.0.1"
mountpoint: monitor0
port: 8000
public: 1
sourcepassword: *****
type: icecast
appendtype: 1
twitter:
key: "your access token key"
mode: 0
secret: "your access token secret key"
tags: "parisson deefuzzer"

control:
mode: 1
port: 16001
infos:
description: "radiorenzo musical History tour"
genre: "Various top40 hits"
name: "radiorenzo musical History tour"
short_name: radiorenzo musical History tour
url: "http://radiorenzo.nl-web.net"
jingles:
dir: "/media/DRIVE2GO/jinglesRadiorenzo40"
mode: 1
shuffle: 1
media:
bitrate: 96
source: "/media/DRIVE2GO/muziek/top 40_1965-heden"
format: mp3
ogg_quality: 4
samplerate: 48000
shuffle: 1
voices: 2
record:
dir: "/path/to/archives"
mode: 0
relay:
author: Unknown
mode: 0
url: "http://127.0.0.1:8000/telecaster_live.mp3"
feeds:
mode: 0
rss: 1
json: 0
playlist: 1
dir: "/path/to/rss/"
enclosure: 1
media_url: "http://localhost/media/"
server:
host: "127.0.0.1"
mountpoint: monitor1
port: 8000
public: 1
sourcepassword: *****
type: icecast
appendtype: 1
twitter:
key: "your access token key"
mode: 0
secret: "your access token secret key"
tags: "parisson deefuzzer"
<
But this gives one error and stream “monitor1 ” does not work.
>
deefuzzer /etc/DeeFuzzer/deefuzzer_MultiRenzo.yaml
root@raspberry3:# deefuzzer /etc/DeeFuzzer/deefuzzer_MultiRenzo.yaml &
[4] 26383
root@raspberry3:
# server error 9904: b'cannot find free port'
Exception in thread Thread-1:
Traceback (most recent call last):
File "/usr/local/lib/python3.6/threading.py", line 916, in _bootstrap_inner
self.run()
File "/usr/local/lib/python3.6/site-packages/deefuzzer/core.py", line 317, in run
new_station = Station(self.station_settings[i], q, self.log_queue, self.m3u)
File "/usr/local/lib/python3.6/site-packages/deefuzzer/station.py", line 257, in init
self.osc_controller.add_method('/media/next', 'i', self.media_next_callback)
File "/usr/local/lib/python3.6/site-packages/deefuzzer/tools/osc.py", line 39, in add_method
self.server.add_method(path, type, method)
'OSCController' object has no attribute 'server'

<

Also, browsing to localIP:16001 does not work. No page is bean showed here.
Any suggestions what’s going wrong here?

Playlist does not update if MP3 file metadata changes

The playlist files are not updated when an MP3 file is changed during playback. This is because the playlists are only generated by the feed code when the playlist itself is changed and not just the metadata in the file(s).

Display album name

Hi

I am currently setting up a new webradio on my website and I would like my listeners to have the album title displayed on the Icecast status page or on their media player. I am streaming game soundtracks so having the album title is pretty much mandatory since soundtrack track titles aren't always very explicit as to which game they come from.

Is this possible using DeeFuzzer?

deefuzzer install failer: ERROR: Command errored out with exit status 1:

Hi,

On a raspberry pi 3, running Debian Stretch and python 3.6.5, it does not work to install deefuzzer. Below the last part of the output from the putty screen. I am making use of a screenreader and because of that I cannot copy the whole screen. But II hope you can help to find a solution.
Welkome sugesions!
==>>
collected packages: pyliblo
Building wheel for pyliblo (setup.py) ... error
ERROR: Command errored out with exit status 1:
command: /usr/local/bin/python3.6 -u -c 'import sys, setuptools, tokenize; sys.argv[0] = '"'"'/tmp/pip-install-5gey342u/pyliblo/setup.py'"'"'; file='"'"'/tmp/pip-install-5gey342u/pyliblo/setup.py'"'"';f=getattr(tokenize, '"'"'open'"'"', open)(file);code=f.read().replace('"'"'\r\n'"'"', '"'"'\n'"'"');f.close();exec(compile(code, file, '"'"'exec'"'"'))' bdist_wheel -d /tmp/pip-wheel-efbn8in9 --python-tag cp36
cwd: /tmp/pip-install-5gey342u/pyliblo/
Complete output (16 lines):
running bdist_wheel
running build
running build_ext
cythoning src/liblo.pyx to src/liblo.c
/usr/local/lib/python3.6/site-packages/Cython/Compiler/Main.py:369: FutureWarning: Cython directive 'language_level' not set, using 2 for now (Py2). This will change in a later release! File: /tmp/pip-install-5gey342u/pyliblo/src/liblo.pxd
tree = Parsing.p_module(s, pxd, full_module_name)
building 'liblo' extension
creating build
creating build/temp.linux-armv7l-3.6
creating build/temp.linux-armv7l-3.6/src
gcc -pthread -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -Wstrict-prototypes -fPIC -I/usr/local/include/python3.6m -c src/liblo.c -o build/temp.linux-armv7l-3.6/src/liblo.o -fno-strict-aliasing -Werror-implicit-function-declaration -Wfatal-errors
src/liblo.c:599:19: fatal error: lo/lo.h: No such file or directory
#include "lo/lo.h"
^
compilation terminated.
error: command 'gcc' failed with exit status 1

ERROR: Failed building wheel for pyliblo
Running setup.py clean for pyliblo
Failed to build pyliblo
Installing collected packages: pyliblo, deefuzzer
Running setup.py install for pyliblo ... error
ERROR: Command errored out with exit status 1:
command: /usr/local/bin/python3.6 -u -c 'import sys, setuptools, tokenize; sys.argv[0] = '"'"'/tmp/pip-install-5gey342u/pyliblo/setup.py'"'"'; file='"'"'/tmp/pip-install-5gey342u/pyliblo/setup.py'"'"';f=getattr(tokenize, '"'"'open'"'"', open)(file);code=f.read().replace('"'"'\r\n'"'"', '"'"'\n'"'"');f.close();exec(compile(code, file, '"'"'exec'"'"'))' install --record /tmp/pip-record-aiml3b4i/install-record.txt --single-version-externally-managed --compile
cwd: /tmp/pip-install-5gey342u/pyliblo/
Complete output (14 lines):
running install
running build
running build_ext
skipping 'src/liblo.c' Cython extension (up-to-date)
building 'liblo' extension
creating build
creating build/temp.linux-armv7l-3.6
creating build/temp.linux-armv7l-3.6/src
gcc -pthread -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -Wstrict-prototypes -fPIC -I/usr/local/include/python3.6m -c src/liblo.c -o build/temp.linux-armv7l-3.6/src/liblo.o -fno-strict-aliasing -Werror-implicit-function-declaration -Wfatal-errors
src/liblo.c:599:19: fatal error: lo/lo.h: No such file or directory
#include "lo/lo.h"
^
compilation terminated.
error: command 'gcc' failed with exit status 1
----------------------------------------
ERROR: Command errored out with exit status 1: /usr/local/bin/python3.6 -u -c 'import sys, setuptools, tokenize; sys.argv[0] = '"'"'/tmp/pip-install-5gey342u/pyliblo/setup.py'"'"'; file='"'"'/tmp/pip-install-5gey342u/pyliblo/setup.py'"'"';f=getattr(tokenize, '"'"'open'"'"', open)(file);code=f.read().replace('"'"'\r\n'"'"', '"'"'\n'"'"');f.close();exec(compile(code, file, '"'"'exec'"'"'))' install --record /tmp/pip-record-aiml3b4i/install-record.txt --single-version-externally-managed --compile Check the logs for full command output.
root@raspberry3:~#

Error messages in CentOS 6

I've installed Deefuzzer using pip and when trying to run it I get the following errors:

Traceback (most recent call last):
  File "/usr/bin/deefuzzer", line 54, in <module>
    main()
  File "/usr/bin/deefuzzer", line 47, in main
    d = deefuzzer.core.DeeFuzzer(sys.argv[-1])
  File "/usr/lib/python2.6/site-packages/deefuzzer/core.py", line 54, in __init__
    self.conf = self.get_conf_dict()
  File "/usr/lib/python2.6/site-packages/deefuzzer/core.py", line 85, in get_conf_dict
    return xmltodict(data,'utf-8')
  File "/usr/lib/python2.6/site-packages/deefuzzer/tools/xmltodict.py", line 37, in xmltodict
    return indexchilds(dom, enc)
  File "/usr/lib/python2.6/site-packages/deefuzzer/tools/xmltodict.py", line 23, in indexchilds
    v = indexchilds(childnode, enc)
  File "/usr/lib/python2.6/site-packages/deefuzzer/tools/xmltodict.py", line 23, in indexchilds
    v = indexchilds(childnode, enc)
  File "/usr/lib/python2.6/site-packages/deefuzzer/tools/xmltodict.py", line 23, in indexchilds
    v = indexchilds(childnode, enc)
  File "/usr/lib/python2.6/site-packages/deefuzzer/tools/xmltodict.py", line 25, in indexchilds
    v = childnode.childNodes[0].nodeValue.encode(enc)
IndexError: list index out of range

Stream the same content in mp3 + ogg

Do you think deefuzzer can stream on multiple icecast mountpoint (with the same media source)?

  • One stream in 192k mp3
  • Another one in 48k ogg
    (Or two ogg streams, or two mp3 streams)

Create Beta-0.7 branch

Can we create a new branch and call it Beta-0.7? That way we can begin final testing and apply only bug fixes to this branch, and save anything that requires new features to the main dev branch. That is, if we're targetting a 0.7 release near 2/1.

Bug in yaml file : description with "à"

In my yaml file my stream description contain "à" character and it's fail.

$ deefuzzer deefuzzer.yaml
Exception in thread Thread-1:
Traceback (most recent call last):
  File "/usr/lib/python2.7/threading.py", line 552, in __bootstrap_inner
    self.run()
  File "/usr/local/lib/python2.7/dist-packages/DeeFuzzer-0.6.6-py2.7.egg/deefuzzer/core.py", line 122, in run
    self.stations.append(Station(station, q, self.logger, self.m3u))
  File "/usr/local/lib/python2.7/dist-packages/DeeFuzzer-0.6.6-py2.7.egg/deefuzzer/station.py", line 122, in __init__
    self.channel.description = self.station['infos']['description']
TypeError: String argument required
    infos: {name: "station name",
            description: "Test là",
            genre: music,
            url: 'http://www.station.fm'}

If I replace "là" by "la", it's works well.

Is yaml string are in UTF-8? I haven't test with xml, I can test it ;-).

'ascii' codec can't decode again

DeeFuzzer fails to decode some chars in the mp3 metadata and stops.

2014-12-10 23:08:14,265 INFO Station http://stream.parisson.com:8000/deefuzzer_test.mp3: DeeFuzzing:  id = 755, name = dgt&cbpj_vol.3--17-parris_mitchell-all_night_long-hvt.mp3
2014-12-10 23:11:42,754 ERROR Station http://stream.parisson.com:8000/deefuzzer_test.mp3: icecastloop_nextmedia: Error: 'ascii' codec can't decode byte 0xc3 in position 27: ordinal not in range(128)

losing Icecast connection after one second

Hi
I have some problem with running DeeFuzzer, the problem is I can see the my_station.mp3 for one second and after that for some reason I lose the connection and I don't know why! as you can see my xml file is:

<deefuzzer>
    <log>/home/niman66/Temp/deeF/nima.log</log>
    <m3u>/home/niman66/Temp/deeF/nima.m3u</m3u>
    <station>
        <infos>
            <short_name>my_station</short_name>
            <name>My best funky station</name>
            <description>My personal best funky playlist ever !</description>
            <url>http://localhost</url>
            <genre>Various Funk Groove</genre>
        </infos>
        <server>
            <type>icecast</type>
            <host>localhost</host>
            <port>8000</port>
            <sourcepassword>admin</sourcepassword>
            <public>0</public>
        </server>
        <media>
            <dir>/home/niman66/Music/ebi/</dir>
            <format>mp3</format>
            <bitrate>192</bitrate>
            <ogg_quality>7</ogg_quality>
            <samplerate>44100</samplerate>
            <voices>2</voices>
            <shuffle>1</shuffle>
            <m3u>/home/niman66/Temp/deeF/nima.m3u</m3u>
        </media>
        <rss>
            <dir>/home/niman66/Temp/deeF/</dir>
            <enclosure>0</enclosure>
            <media_url>http://localhost:8000/media/</media_url>
        </rss>
    </station>
</deefuzzer>

and the icecast2 log is:

[2015-01-11  12:08:27] INFO connection/_handle_source_request Source logging in at mountpoint "/my_station.mp3"
[2015-01-11  12:08:27] INFO source/source_main listener count on /my_station.mp3 now 0
[2015-01-11  12:08:38] WARN source/get_next_buffer Disconnecting source due to socket timeout
[2015-01-11  12:08:38] INFO source/source_shutdown Source "/my_station.mp3" exiting

the strange thing is when I run "deefuzzer deefuzzer.xml" my nima.m3u file content change to this:

#EXTM3U
#EXTINF:-1,my_station - My best funky station : http://localhost
http://localhost:8000/my_station.mp3

am I missed something?

Follow metadata in time from CUE or JSON files

Hello is it feasible to create a Radio Station only with DeeFuzzer which have the following features:
Stream seamless prerecorded DJ Mixes which are essentially one BIG audio
file and provide the listener with Song Information. (for each song in the mix)

I have tried different approaches like Icecast / Shoutcast.
Just playing a Playlist with files or with crossfades is not good enough.
(always audible glitches especially if you have a continious 4/4 trance
beat)
The only really seamless solution I have found so far, was using Icecast
and foobar2000 (the only cue-sheet player i have found and it is for
windows!) + edcast dsp (no longer maintained?) playing a cue sheet wich
contains the necessary Song Information.

To display the metadata on a webpage I have parsed the audio stream with
nodejs and pushed the songinfo via socketio to a htm5 based client.

While this approach is "working" I am looking for something more solid.

Can you use cuesheets (or something similar) with DeeFuzzer
Regards
Marc

segmentation fault (core dumped)

Screenshot from 2019-07-04 14-31-40
My config

<log>./log/station.log</log>
<m3u>./log/station.m3u</m3u>
<stationdefaults>
    <control>
        <mode>0</mode>
        <port>16001</port>
    </control>
    <jingles>
        <dir>/path/to/jingles</dir>
        <mode>0</mode>
        <shuffle>1</shuffle>
    </jingles>
</stationdefaults>
<station>
    <control>
        <mode>0</mode>
        <port>16001</port>
    </control>
    <infos>
        <description>My personal best funky playlist ever !</description>
        <genre>Various Funk Groove</genre>
        <name>My best funky station</name>
        <short_name>My_station</short_name>
        <url>http://parisson.com</url>
    </infos>
    <jingles>
        <dir>/path/to/jingles</dir>
        <mode>0</mode>
        <shuffle>1</shuffle>
    </jingles>
    <media>
        <bitrate>96</bitrate>
        <source>./media/</source>
        <format>mp3</format>
        <ogg_quality>4</ogg_quality>
        <samplerate>48000</samplerate>
        <shuffle>0</shuffle>
        <voices>2</voices>
    </media>
    <record>
        <dir>/path/to/archives</dir>
        <mode>0</mode>
    </record>
    <relay>
        <author>Unknown</author>
        <mode>0</mode>
        <url>http://127.0.0.1:8000/telecaster_live.mp3</url>
    </relay>
    <feeds>
        <mode>1</mode>
        <rss>1</rss>
        <json>0</json>
        <playlist>1</playlist>
        <dir>/path/to/rss/</dir>
        <enclosure>1</enclosure>
        <media_url>http://localhost/media/</media_url>
    </feeds>
    <server>
        <host>localhost</host>
        <mountpoint>pop</mountpoint>
        <port>8000</port>
        <public>0</public>
        <sourcepassword>hackme</sourcepassword>
        <type>icecast</type>
        <appendtype>1</appendtype>
    </server>
    <twitter>
        <key>your access token key</key>
        <mode>0</mode>
        <secret>your access token secret key</secret>
        <tags>parisson deefuzzer</tags>
    </twitter>
</station>

station log
2019-07-04 14:29:19,325 INFO Core: Starting DeeFuzzer
2019-07-04 14:29:19,325 INFO Core: Using libshout version 2.4.1
2019-07-04 14:29:19,325 INFO Core: Number of stations : 1
2019-07-04 14:29:19,326 INFO Core: Loading new stations
2019-07-04 14:29:19,327 INFO Station http://localhost:8000/pop.mp3: Opening pop - My best funky station
2019-07-04 14:29:19,327 INFO Core: Started station Station 0
2019-07-04 14:29:19,328 INFO Core: Writing M3U file to : ./log/station.m3u
2019-07-04 14:29:19,333 INFO Station http://localhost:8000/pop.mp3: Channel available.
2019-07-04 14:29:19,334 INFO Station http://localhost:8000/pop.mp3: channel connected
2019-07-04 14:29:19,334 INFO Station http://localhost:8000/pop.mp3: Generating new playlist (3 tracks)
2019-07-04 14:29:19,339 INFO Station http://localhost:8000/pop.mp3: DeeFuzzing: id = 2, name = Iwan Fals - Satu Satu my-free-mp3s.com .mp3

What DeeFuzzer can do?

Hi There

im wondering firstly is there a place where we can ask these questions rather than leave an issue in github? :)

secondly can DeFuzzer receive and input from an encoder?
for example i send a stream with an icy protocol to DeFuzzer and deFuzzer sends to icecast?

Kind Regards
MooseH

IndexError: tuple index out of range

I dont know why but I can not start deefuzzer.. throws this error:
Traceback (most recent call last):
File "/usr/local/bin/deefuzzer", line 56, in
main()
File "/usr/local/bin/deefuzzer", line 48, in main
d = deefuzzer.core.DeeFuzzer(sys.argv[-1])
File "/usr/local/lib/python2.7/dist-packages/deefuzzer/core.py", line 69, in init
self.conf = get_conf_dict(self.conf_file)
File "/usr/local/lib/python2.7/dist-packages/deefuzzer/tools/utils.py", line 93, in get_conf_dict
return xmltodict(data, 'utf-8')
File "/usr/local/lib/python2.7/dist-packages/deefuzzer/tools/xmltodict.py", line 38, in xmltodict
return indexchilds(dom, enc)
File "/usr/local/lib/python2.7/dist-packages/deefuzzer/tools/xmltodict.py", line 23, in indexchilds
v = indexchilds(childnode, enc)
File "/usr/local/lib/python2.7/dist-packages/deefuzzer/tools/xmltodict.py", line 23, in indexchilds
v = indexchilds(childnode, enc)
File "/usr/local/lib/python2.7/dist-packages/deefuzzer/tools/xmltodict.py", line 25, in indexchilds
v = childnode.childNodes[0].nodeValue.encode(enc)
IndexError: tuple index out of range

My config file is:
http://pastebin.com/zEsH5nYQ

Can DeeFuzzer do this?

I only have very basic needs, but struggling a streaming client to offer them.

  • Randomly stream a directory of MP3, no need to transcode
  • Notice when new files are added and add them to the random pool
  • Optionally offer more a smart shuffle than true random (smart shuffle means everything gets played before things get repeated).

I don't need jingles, this isn't going out over the internet, it's purely streaming a 2000 or so playlist of songs on my local lan.

Certain URLs are hardcoded

Especially URLs sent to outside services (Twitter). These should be configurable in some way rather than changing code.

Error mkdir

Hello Guillaume I have this error and I don't understand why:

$ deefuzzer mystation.xml
Exception in thread Thread-1:
Traceback (most recent call last):
  File "/usr/lib/python2.7/threading.py", line 552, in __bootstrap_inner
    self.run()
  File "/usr/local/lib/python2.7/dist-packages/DeeFuzzer-0.6.5-py2.7.egg/deefuzzer/core.py", line 115, in run
    self.set_m3u_playlist()
  File "/usr/local/lib/python2.7/dist-packages/DeeFuzzer-0.6.5-py2.7.egg/deefuzzer/core.py", line 93, in set_m3u_playlist
    os.makedirs(m3u_dir)
  File "/usr/lib/python2.7/os.py", line 157, in makedirs
    mkdir(name, mode)
OSError: [Errno 2] No such file or directory: ''

I try many things… last version, version 6.5 from december 3 without success.

I don't know if i have to add in my m3u file the full path or not.
Like:
/home/deefuzzer/mp3/artist - song.mp3
Or if my m3u is in /home/deefuzzer/station.m3u only:
mp3/artist - song.mp3

Do I have to escape spaces in my m3u?
mp3/artist\ -\ song.mp3

Thanks for your help.

deefuzzer stops immediately after starting

Got into configuring deefuzzer to play along with icecast2 on Arch Linux. I'm down to a point where it starts without error but shuts down immediately after, also without any error.
I'd presume it has something to do with mp3s but I can't begin to know how to debug this.
Here's my xml config:

<deefuzzer>
    <log>/home/useiradio/neonorigami/conf/deefuzzer/log/deefuzzer.log</log>
    <m3u>/home/useiradio/neonorigami/conf/neonorigami.m3u</m3u>
    <station>
        <infos>
            <short_name>stream</short_name>
            <name>NeonOrigamiRadio</name>
            <description>Cybernetic music from Fax</description>
            <url>http://neonorigami.com</url>
            <genre>fax electronic</genre>
        </infos>
        <server>
            <type>icecast</type>
            <host>00.00.00.000</host>
            <port>7701</port>
            <sourcepassword>neonorigami</sourcepassword>
            <public>0</public>
        </server>
        <media>
            <dir>/home/useiradio/neonorigami/library/</dir>
            <format>mp3</format>
            <bitrate>80</bitrate>
            <ogg_quality>7</ogg_quality>
            <samplerate>44100</samplerate>
            <voices>2</voices>
            <shuffle>1</shuffle>
            <m3u>/home/useiradio/neonorigami/conf/neonorigamiplaylist.m3u</m3u>
        </media>
        <rss>
            <dir>/home/useiradio/neonorigami/log</dir>
            <enclosure>0</enclosure>
            <media_url>http://neonorigami.com</media_url>
        </rss>
        <twitter>
            <mode>0</mode>
            <key>0000</key>
            <secret>0000</secret>
            <tags>blabla</tags>
        </twitter>
        <jingles>
            <mode>0</mode>
            <dir>/path/to/jingles</dir>
            <shuffle>1</shuffle>
        </jingles>
        <control>
            <mode>0</mode>
            <port>1234</port>
        </control>
        <relay>
            <mode>0</mode>
            <url>http://anotherdomain.com:8000/stream.mp3</url>
            <author>Me</author>
        </relay>
        <record>
            <mode>0</mode>
            <dir>/path/to/archives</dir>
        </record>
    </station>
</deefuzzer>

And here's log fragment:

2014-11-05 20:39:40,676 INFO Starting DeeFuzzer
2014-11-05 20:39:40,677 INFO Using libshout version 2.3.1
2014-11-05 20:39:40,677 INFO Number of stations : 1
2014-11-05 20:39:40,678 INFO Opening stream - NeonOrigamiRadio : http://neonorigami.com (182 tracks)...
2014-11-05 20:39:40,678 INFO Writing M3U file to : /home/useiradio/neonorigami/conf/neonorigami.m3u
2014-11-05 20:39:40,736 INFO Station http://00.00.00.000:7701/stream.mp3 : channel available
2014-11-05 20:39:40,737 INFO Station http://00.00.00.000:7701/stream.mp3 : channel connected
2014-11-05 20:39:40,737 INFO Station http://00.00.00.000:7701/stream.mp3 : generating new playlist (182 tracks)
2014-11-05 20:39:40,958 INFO DeeFuzzing on stream :  id = 1, name = Jonny L - Uneasy.mp3

Of course 00.00.00.000 stands or my proper public ip address.
Could you please help me with this? There is no other tool like deefuzzer and I desperately need to make it work.

Wrong duration of the "Next Play" in playlist.json

In the rss section, in the current.json the "next play time" for current track is 22:29:01.
In the playlist.json the "next play time" for the first element is : 22:29:01 instead of 22:29:01 + duration of track 1.

Add global path

Hi Guillaume,

I've edit many times my config file. I think it's great to have a "global" path for "archive", "jingles", "logs", "m3u", "mp3"… Instead of editing, jingles.dir, media.dir, media.m3u.

JSON looks like:

 {
    "deefuzzer": {
        "log":"station_name.log",
        "m3u":"station_name.m3u",
        "folder_path":"/home/station_name/",
        "station": {
            "jingles": {
                "dir":"jingle"
            }
        }
    }
}

For jingle example maybe if "dir" doesn't start by "/", you can folder_path before.

Crash when playing songs

It's works for few hours and crash.

# deefuzzer config.yaml 
Exception in thread Thread-2:
Traceback (most recent call last):
  File "/usr/lib/python2.7/threading.py", line 552, in __bootstrap_inner
    self.run()
  File "/usr/local/lib/python2.7/dist-packages/DeeFuzzer-0.6.6-py2.7.egg/deefuzzer/station.py", line 657, in run
    self.set_read_mode()
  File "/usr/local/lib/python2.7/dist-packages/DeeFuzzer-0.6.6-py2.7.egg/deefuzzer/station.py", line 573, in set_read_mode
    self.song = song.encode('utf-8')
UnicodeDecodeError: 'ascii' codec can't decode byte 0xc3 in position 27: ordinal not in range(128)

In my log:

2014-08-07 23:09:09,882 INFO DeeFuzzing on station_name :  id = 149, name = mysong.mp3
2014-08-07 23:30:06,485 INFO Starting DeeFuzzer

@yomguy The track_id 150 crash deefuzzer. It contain a "è" character. I don't know why, It can read other tracks with "é" or "ê" or "é" and "è" in same word but not this one. Do you have any idea? Do you have a tool to check file encoding / id3tag encoding?

Other question, does deefuzzer use "ID3tags" or only mp3 filename?

Doesn't display song titles correctly

At Icecast2 Status page and also in media player it can't handle some (foreign) chars and instead displays a decimal code.

For example š gets displayed as &#353;, č as &#269;, etc. (id3 tag info)

authentication

hi
Is there any way to authenticate user before connecting to the server?

m3u doesn't work in yaml "source"

My configuration file is a yaml. Maybe it's works well with an xml file or other formats…

When I use a folder like /home/choiz/tracks/ It's works well!
When I use a m3u file like /home/choiz/playlist.m3u It's doesn't works well.

My media config is like:

media: {source: /home/choiz/playlist.m3u,
        format: mp3,
        bitrate: 192,
        ogg_quality: 0,
        samplerate: 44100,
        shuffle: 0,
        voices: '2'}

I update only "source" and it's works with a folder with mp3 inside.

Here my log:

2015-01-30 00:45:28,852 INFO Station http://mystation/test.mp3: Generating new playlist (0 tracks)
2015-01-30 00:45:28,852 ERROR Station http://mystation/test.mp3: icecastloop_nextmedia: Error: list index out of range
2015-01-30 00:45:28,852 INFO Station http://mystation/test.mp3: Something wrong happened in icecastloop_nextmedia.  Ending.

Log with a single mp3 file in my folder:

2015-01-30 00:56:34,976 INFO Station http://mystation/test.mp3: Generating new playlist (1 tracks)
2015-01-30 00:56:34,986 INFO Station http://mystation/test.mp3: DeeFuzzing:  id = 0, name = artist - track.mp3

Can't read m3u playlist if media.dir is set.

If you want to read an m3u file you need to remove "media.dir" parameter.

Maybe we can imagine a "mode" for media node:

  • mode = file: read the param "source" as media directory.
  • mode = playlist: read the param "source" as a playlist.

With this "mode" maybe "dir" and "m3u" can be the "same" parameter named: "source".

losing relay connection

I want to use another stream in deefuzzer and my xml is:

<'station'>
<'infos'>
<'short_name'>radio<'/short_name'>
<'name'>radio<'/name'>
<'description'>radio<'/description'>
<'url'>http://localhost<'/url'>
<'genre'>radio<'/genre'>
<'/infos'>
<'media'>
<'dir'>/home/niman66/ogg/<'/dir'>
<'format'>mp3<'/format'>
<'bitrate'>128<'/bitrate'>
<'ogg_quality'>7<'/ogg_quality'>
<'samplerate'>44100<'/samplerate'>
<'voices'>2<'/voices'>
<'shuffle'>1<'/shuffle'>
<'/media'>
<'server'>
<'type'>icecast<'/type'>
<'host'>localhost<'/host'>
<'port'>8000<'/port'>
<'sourcepassword'>admin<'/sourcepassword'>
<'public'>0<'/public'>
<'/server'>
<'rss'>
<'dir'>/home/niman66/Temp/deefuzzer/<'/dir'>
<'enclosure'>0<'/enclosure'>
<'media_url'>http://localhost:8000/media/<'/media_url'>
<'/rss'>
<'relay'>
<'mode'>1<'/mode'>
<'url'>http://buecrplb01.cienradios.com.ar/50_32000.aac<'/url'>
<'author'>radio<'/author'>
<'/relay'>
<'/station'>

I can here stream for a few second and after that I lose the connection, the deefuzzer log is:

2015-01-28 09:06:39,230 INFO Opening radio - radio : http://localhost (1 tracks)...
2015-01-28 09:06:39,897 INFO Station http://localhost:8000/radio.mp3 : received OSC message '/media/relay' with arguments '1'
2015-01-28 09:06:39,897 INFO Station http://localhost:8000/radio.mp3 : relaying : http://buecrplb01.cienradios.com.ar/50_32000.aac
2015-01-28 09:06:39,897 INFO Writing M3U file to : /home/niman66/Temp/deefuzzer/mystation.m3u
2015-01-28 09:06:39,900 INFO Station http://localhost:8000/radio.mp3 : channel available
2015-01-28 09:06:39,900 INFO Station http://localhost:8000/radio.mp3 : channel connected
2015-01-28 09:06:39,901 INFO Station http://localhost:8000/radio.mp3 : generating new playlist (1 tracks)
2015-01-28 09:06:52,747 ERROR Station http://localhost:8000/radio.mp3 : could not send the buffer
2015-01-28 09:06:52,748 INFO Station http://localhost:8000/radio.mp3 : channel closed
2015-01-28 09:06:52,749 INFO Station http://localhost:8000/radio.mp3 : channel restarted
2015-01-28 09:07:20,501 ERROR Station http://localhost:8000/radio.mp3 : could not send the buffer
2015-01-28 09:07:20,501 INFO Station http://localhost:8000/radio.mp3 : channel closed

ps: my deefuzzer version is 0.6.5

simple mp3 streaming server

Hello,
I am trying to build a simple mp3 streaming server with your example XML config file.
But I am not getting any result for that.
I've installed DeeFuzzer on Ubuntu 18.04.
I want to get a simple config example file and please guide this.
this is my config:
'''
deefuzzer:
log: /home/ubuntu/Work/Music_streaming/music_data/station.log
m3u: /home/ubuntu/Work/Music_streaming/music_data/station.m3u

stationdefaults:
control: {mode: 0,
port: 16001}

jingles: {dir: /home/ubuntu/Work/Music_streaming/music_data/jingles,
          mode: 0,
          shuffle: 0}

station:
control: {mode: 0,
port: 16001}

infos: {description: 'My personal best funky playlist ever!',
        genre: 'Various Funk Groove',
        name: 'My best funky station',
        short_name: "My_station",
        url: 'http://parisson.com'}

jingles: {dir: /home/ubuntu/Work/Music_streaming/music_data/jingles,
          mode: 0,
          shuffle: 1}

media: {bitrate: 96,
        source: /home/ubuntu/Work/Music_streaming/music_data/mp3,
        format: mp3,
        ogg_quality: 4,
        samplerate: 48000,
        shuffle: 0,
        voices: '1'}

record: {dir: /home/ubuntu/Work/Music_streaming/music_data/archives,
         mode: 0}

relay: {author: Unknown,
        mode: 0,
        url: 'http://127.0.0.1:8000/test.mp3'}

feeds: {mode: 1, rss: 1, json: 0, playlist: 1,
      dir: /home/ubuntu/Work/Music_streaming/music_data/rss,
      enclosure: 0,
      media_url: 'http://localhost/media/'}

server: {host: 127.0.0.1,
         mountpoint: monitor,
         port: 8000, public: 0,
         sourcepassword: icecast_source_password,
         type: icecast, appendtype: 1}

twitter: {key: 'your access token key',
          mode: 0, secret: 'your acess token secret key',
          tags: 'parisson deefuzzzer'}

'''
Please share your idea of what's wrong.
Thanks

Could not send the buffer

There is a 10-20s seconds break between each song where the stream seems to be interupted, here is the log :

2016-09-04 03:00:17,946 INFO Station http://exemple.com:8000/radio.mp3: channel restarted
2016-09-04 03:05:13,710 INFO Station http://exemple.com:8000/radio.mp3: DeeFuzzing: id = 8, name = 1-06 LABYRINTH.mp3
2016-09-04 03:05:13,748 ERROR Station http://exemple.com:8000/radio.mp3: could not send the buffer
2016-09-04 03:05:13,748 INFO Station http://exemple.com:8000/radio.mp3: channel closed
2016-09-04 03:05:13,757 INFO Station http://exemple.com:8000/radio.mp3: channel connected
2016-09-04 03:05:13,757 INFO Station http://exemple.com:8000/radio.mp3: channel restarted
2016-09-04 03:07:23,547 INFO Station http://exemple.com:8000/radio.mp3: DeeFuzzing: id = 9, name = 4.Lost Bribe -Night Stalker-.mp3
2016-09-04 03:07:23,562 ERROR Station http://exemple.com:8000/radio.mp3: could not send the buffer
2016-09-04 03:07:23,563 INFO Station http://exemple.com:8000/radio.mp3: channel closed
2016-09-04 03:07:23,570 INFO Station http://exemple.com:8000/radio.mp3: channel connected
2016-09-04 03:07:23,571 INFO Station http://exemple.com:8000/radio.mp3: channel restarted

and here is my xml file : http://pastebin.com/6evntzSj

yaml and json conf files

DeeFuzzer should be able to :

  • read yaml and json conf files (recognition based on mimetypes)
  • Additionally, it should accept any configuration as an attribute of the DeeFuzzer class instance.

Multiple relaying with audio AND video makes libshout crazy

WebM streaming with pycurl together with MP3 streaming with libshout is buggy.
Although I thought the pycurl method would lock the GIL, it seems that urllib is NOT thread safe ! So we need to find a better thread safe solution for relaying.

Bug:
[1244719.263286] deefuzzer[2699]: segfault at 2dfc000 ip 00007f7b6156e8a2 sp 00007f7b5df615c0 error 4 in libshout.so.3.2.0[7f7b61567000+f000]

Some infos & clues:
http://stackoverflow.com/questions/4549490/pycurl-curl-not-following-the-curlopt-timeout-option
http://stackoverflow.com/questions/5825151/are-urllib2-and-httplib-thread-safe
http://urllib3.readthedocs.org/en/latest/
https://gist.github.com/andrewwatts/2012630
http://fragmentsofcode.wordpress.com/2011/01/22/pycurl-curlmulti-example/

Requesting testers

I've created a new branch called dsw-playlist. It's got a large number of changes that need testing, including an all-new playlist class. You can see the code at https://github.com/achbed/DeeFuzzer/tree/dsw-playlist - feel free to branch and submit pull requests back. At the current time, it's completely untested, and pretty much guaranteed to break your instance, so do NOT use this on a production machine.

Highlights:

  • Huge refactoring effort to reduce code analysis warnings
  • Created new Playlist sub-package, with base class and several subclasses
  • Added playlist handler for PLS files
  • Refactored Media types into a sub-package
  • Added several type and file checks for security
  • Reworked station.py to use new playlist classes
  • Jingles now use the same playlist class (and can take advantage of M3U/PLS playlist types)
  • New logging base types
  • Added additional levels to logging functions (warning, debug, fatal)
  • Renamed some utility functions to better describe their actual purpose
  • Added Prev Track to OSC controls
  • Now requires mutagen package

To Do:

  • Update playlist class to allow caching of metadata from media files
  • Update playlist class to read metadata from the playlist file instead of media files (Useful for CUE files)
  • Update playlist class to support multiple metadata values for a single media file based on playback time (this will finally address issue #3 )

streaming from alsa input

Hi I tried to stream alsa input (as mp3 file) with deefuzzer but I get this error:

Exception in thread Thread-2:
Traceback (most recent call last):
File "/usr/lib/python2.7/threading.py", line 810, in __bootstrap_inner
self.run()
File "/usr/local/lib/python2.7/dist-packages/deefuzzer/station.py", line 625, in run
self.set_read_mode()
File "/usr/local/lib/python2.7/dist-packages/deefuzzer/station.py", line 530, in set_read_mode
self.title = self.current_media_obj[0].metadata['title']
IndexError: list index out of range

so I changed the Mp3 class(deefuzzer/tools/mp3.py) from:

self.bitrate = int(str(self.info.bitrate)[:-3])

to:

try:
self.bitrate = int(str(self.info.bitrate)[:-3])
except:
self.bitrate = self.bitrate_default

is there any better way?

ps: I'm using ffmpeg for converting input to mp3 file:

ffmpeg -f alsa -i hw:0,0 -acodec libmp3lame -ab 128k -ac 1 -ar 44100 -vn test.mp3

Multistation doesn't work

I use a xml config file with 2 stations and on starting deefuzzer:

Exception in thread Thread-2:
Traceback (most recent call last):
File "/usr/lib/python2.7/threading.py", line 552, in __bootstrap_inner
self.run()
File "/usr/local/lib/python2.7/dist-packages/DeeFuzzer-0.6.5_chz-py2.7.egg/deefuzzer/station.py", line 611, in run
self.channel_open()
File "/usr/local/lib/python2.7/dist-packages/DeeFuzzer-0.6.5_chz-py2.7.egg/deefuzzer/station.py", line 569, in channel_open
self.channel.open()
ShoutException: Login failed

In my log file:
2013-12-04 23:18:41,779 INFO Starting DeeFuzzer
2013-12-04 23:18:41,780 INFO Using libshout version 2.2.2
2013-12-04 23:18:41,780 INFO Number of stations : 2
2013-12-04 23:18:41,780 INFO Opening station1 - Station1 (13 tracks)...
2013-12-04 23:18:41,780 INFO Opening station2 - Station 2 (2 tracks)...
2013-12-04 23:18:41,781 INFO Writing M3U file to : /home/dee/station.m3u
2013-12-04 23:18:41,797 INFO Station http://localhost:8000/station2 : channel available
2013-12-04 23:18:41,997 INFO Station http://localhost:8000/station : channel available
2013-12-04 23:18:41,997 INFO Station http://localhost:8000/station2 : channel connected
2013-12-04 23:18:41,997 INFO Station http://localhost:8000/station2 : generating new playlist (2 tracks)
2013-12-04 23:18:42,003 INFO DeeFuzzing on station2 : id = 1, name = mysong.mp3

M3U playlist

DeeFuzzer should be able to read a M3U file to get the playlist.

Crash without logging

First of all, I suspect this may be my environment. I'm not sure what's causing it, but DeeFuzzer seems to be crashing about every 13 hours (so far) when playing 10 streams at once. When it dies, there;s nothing reported to the log at all - just silence. I'm unable to see anything in any log that says its either stopping or crashed.

Log snippet during a crash/restart:

2014-12-02 14:04:32,230 INFO Station http://streams.patestapes.com:80/world001: DeeFuzzing:  id = 15, name = 15-Chinalia Brothers_ Coco BeansThe Chinalia Brothers.mp3
2014-12-02 14:05:18,096 INFO Station http://streams.patestapes.com:80/carib001: DeeFuzzing:  id = 17, name = 17-Eric_Donaldson_Cherry_O_Baby_-_Single.mp3
2014-12-02 14:05:43,468 INFO Station http://streams.patestapes.com:80/populux001: DeeFuzzing:  id = 12, name = 12-Gong_ Percolations Part 1.mp3
2014-12-02 14:06:13,585 INFO Station http://streams.patestapes.com:80/easy001: DeeFuzzing:  id = 13, name = 13-Talking_Heads__Once_In_A_Lifetime.mp3
2014-12-02 14:06:21,601 INFO Station http://streams.patestapes.com:80/populux012: DeeFuzzing:  id = 8, name = 08-Punch_Brothers__Movements___Locations_.mp3
2014-12-02 14:06:45,161 INFO Station http://streams.patestapes.com:80/jazz001: DeeFuzzing:  id = 15, name = 15-Thelonious_Monk_Epistrophy_64_Its_Monk_Time.mp3
2014-12-02 14:06:46,732 INFO Station http://streams.patestapes.com:80/populux011: DeeFuzzing:  id = 47, name = 47-Purity Ring_ Loftcries – Ungirthed 7_ (Canada).mp3
2014-12-02 14:07:15,195 INFO Core: Starting DeeFuzzer
2014-12-02 14:07:15,195 INFO Core: Using libshout version 2.3.1
2014-12-02 14:07:15,195 INFO Core: Number of stations : 0
2014-12-02 14:07:15,198 INFO Core: Creating station for folder /srv/pt/patestapes.com/media/populux012
2014-12-02 14:07:15,198 INFO Core: Creating station for folder /srv/pt/patestapes.com/media/easy001
2014-12-02 14:07:15,198 INFO Core: Creating station for folder /srv/pt/patestapes.com/media/jazz001
2014-12-02 14:07:15,198 INFO Core: Creating station for folder /srv/pt/patestapes.com/media/sound001
2014-12-02 14:07:15,198 INFO Core: Creating station for folder /srv/pt/patestapes.com/media/africa001
2014-12-02 14:07:15,198 INFO Core: Creating station for folder /srv/pt/patestapes.com/media/populux011
2014-12-02 14:07:15,198 INFO Core: Creating station for folder /srv/pt/patestapes.com/media/world002
2014-12-02 14:07:15,198 INFO Core: Creating station for folder /srv/pt/patestapes.com/media/xmas001
2014-12-02 14:07:15,198 INFO Core: Creating station for folder /srv/pt/patestapes.com/media/world001
2014-12-02 14:07:15,198 INFO Core: Creating station for folder /srv/pt/patestapes.com/media/populux001
2014-12-02 14:07:15,198 INFO Core: Creating station for folder /srv/pt/patestapes.com/media/jukebox001
2014-12-02 14:07:15,198 INFO Core: Creating station for folder /srv/pt/patestapes.com/media/carib001
2014-12-02 14:07:15,198 INFO Core: Loading new stations

Empty XML tags causes crash

An overly-aggressive XML parser is causing any XML files with empty tag values to crash the entire application.

Example:
<name></name> causes a crash, <name> </name> does not.

As this is an issue with the parser itself (I belive we're using xml.dom.minidom), I'm not sure what we can do here.

Release tarball

  • Current release tarball 0.6.2 in pypy doesn't have License.txt and REAME.rst, so setup.py fail to install.
  • Github doesn"t have release tarball available.

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.