Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
R
radio_mpd
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Registry
Registry
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
azbyka
radio_mpd
Commits
c4d2e807
Commit
c4d2e807
authored
Apr 23, 2019
by
Andrey Shatokhin
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Changed radio.sh and template.service
parent
f9d691f2
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
112 additions
and
47 deletions
+112
-47
radio.sh
radio.sh
+109
-45
template.service
template.service
+3
-2
No files found.
radio.sh
View file @
c4d2e807
#!/bin/bash
# Запуск скрипта:
# ./radio <mountpoint>
# - cоздается конфиг файл (название - <mountpoint>.mpd.conf).
# - папка с конфиг-файлами (папка называется так же , как и <mountpoint>).
# - порт автоматически указывается в конфиге.
# - процесс автоматически добавляется в systemd
# - управление потоком ./radio.sh <название>
# Со стороны пользователя остается лишь добавить пути к плейлистам и изменить конфиг по усмотрению(название трансляции,описание и т.д)
source
./.port
ICECAST_DIR
=
./
if
[[
$#
-lt
1
]]
;
then
echo
"Формат ./radio.sh <поток>"
exit
1
fi
if
[[
!
-f
./
$1
.mpd.conf
]]
;
then
cp
-p
$ICECAST_DIR
/template.mpd.conf
$ICECAST_DIR
/
$1
.mpd.conf
mkdir
$ICECAST_DIR
/
$1
mkdir
$ICECAST_DIR
/
$1
/Music
touch
$ICECAST_DIR
/
$1
/mpd.log
touch
$ICECAST_DIR
/
$1
/mpdstate
touch
$ICECAST_DIR
/
$1
/mpd.db
touch
$ICECAST_DIR
/
$1
/mpd.pid
mkdir
$ICECAST_DIR
/
$1
/playlists
sed
-i
's?#1?'
`
pwd
`
/
$1
'?'
$ICECAST_DIR
/
$1
.mpd.conf
sed
-i
"s/#2/
$PORT
/g"
$ICECAST_DIR
/
$1
.mpd.conf
sed
-i
"s/#3/
$1
/g"
$ICECAST_DIR
/
$1
.mpd.conf
chown
-R
icecastradio
$ICECAST_DIR
/
$1
chgrp
-R
icecastradio
$ICECAST_DIR
/
$1
chmod
-R
777
$ICECAST_DIR
/
$1
chmod
+x
$ICECAST_DIR
/
$1
/playlists
echo
"Файлы конфигураций cозданы успешно !"
cp
template.service /etc/systemd/system/
$1
.service
PATH_TO_CFG
=
`
pwd
`
/
$1
.mpd.conf
sed
-i
's?#1?'
$PATH_TO_CFG
'?'
/etc/systemd/system/
$1
.service
echo
PORT
=
$((
PORT+1
))
>
$ICECAST_DIR
/.port
systemctl daemon-reload
systemctl start
$1
systemctl
enable
$1
echo
"Запущен mpd-поток под названием :
$1
по адресу : radio.azbyka.ru:8000/
$PORT
"
echo
"Для начала работы требуется обновить базу данных mpd"
echo
"Для работа с потоком : ./radio <название потока>"
else
ncmpc
-p
`
cat
.
'/'
$1
.mpd.conf |
grep
port |
awk
'{ print $2 ; exit; }'
|
tr
-d
\"
`
fi
ROOT_DIRECTORY
=
./
$2
function
usage
()
{
echo
"Использование : ./radio.sh <параметр> <имя>
c - создание нового потока
m - управление потоком
d - удаление потока
l - список запущенных потоков
p - порт потока"
}
function
get_port
()
{
local
CONFIG_FILE
=
./
$1
.mpd.conf
local
PORT
=
`
cat
$CONFIG_FILE
|
grep
port |
awk
'{ print $2 ; exit; }'
|
tr
-d
\"
`
echo
$PORT
}
function
create_stream
()
{
local
CONFIG_FILE
=
./
$1
.mpd.conf
local
ROOT_DIRECTORY
=
$2
local
ABS_PATH_TO_CFG
=
`
pwd
`
/
$1
.mpd.conf
if
[[
!
-f
./
$1
.mpd.conf
]]
;
then
cp
-p
./template.mpd.conf
$CONFIG_FILE
mkdir
-p
$ROOT_DIRECTORY
/playlists
mkdir
$ROOT_DIRECTORY
/Music
touch
$ROOT_DIRECTORY
/mpd.log
touch
$ROOT_DIRECTORY
/mpdstate
touch
$ROOT_DIRECTORY
/mpd.db
touch
$ROOT_DIRECTORY
/mpd.pid
sed
-i
's?#1?'
`
pwd
`
/
$1
'?'
./
$1
.mpd.conf
sed
-i
"s/#2/
$PORT
/g"
./
$1
.mpd.conf
sed
-i
"s/#3/
$1
/g"
./
$1
.mpd.conf
chown
-R
icecastradio
$ROOT_DIRECTORY
chgrp
-R
icecastradio
$ROOT_DIRECTORY
chmod
-R
777
$ROOT_DIRECTORY
chmod
+x
$ROOT_DIRECTORY
/playlists
# Systemd configuration
cp
template.service /etc/systemd/system/
$1
.service
sed
-i
's?#1?'
$ABS_PATH_TO_CFG
'?'
/etc/systemd/system/
$1
.service
echo
PORT
=
$((
PORT+1
))
>
./.port
serv daemon-reload
serv start
$1
serv
enable
/etc/systemd/system/
$1
.service
# Enable playlist repeat
mpc
-q
-p
`
cat
$CONFIG_FILE
|
grep
port |
awk
'{ print $2 ; exit; }'
|
tr
-d
\"
`
repeat on
echo
"Файлы конфигураций cозданы успешно !"
echo
"Запущен mpd-поток под названием :
$1
по адресу : radio.azbyka.ru:8000/
$1
"
echo
"Для начала работы требуется обновить базу данных mpd"
echo
"Для работа с потоком : ./radio -m
$1
"
else
echo
-e
"Поток
\"
$1
\"
уже создан.
\n
Для работы с ним : ./radio -m
$1
"
fi
}
function
manage_stream
()
{
local
STREAM_NAME
=
$2
ncmpc
-p
`
$1
$STREAM_NAME
`
}
function
delete_stream
(){
systemctl stop
$1
rm
-drf
./
$1
*
rm
-f
/etc/systemd/system/
$1
.service
serv daemon-reload
}
function
get_streams
()
{
URL
=
http://radio.azbyka.ru/json.xsl
CONTENT
=
$(
curl
$URL
2>&1 /dev/null
)
ACTIVE_STREAMS
=
`
grep
-oP
'(?<=/).*?(?=")'
<<<
$CONTENT
`
echo
"Список запущенных потоков:"
for
ELEM
in
$ACTIVE_STREAMS
;
do
echo
$ELEM
done
echo
}
while
getopts
"c:m:d:lhp:"
opt
do
case
"
${
opt
}
"
in
c
)
create_stream
$2
$ROOT_DIRECTORY
;;
m
)
manage_stream get_port
$2
;;
d
)
delete_stream
$2
;;
l
)
get_streams
;;
h
)
usage
$ROOT_DIRECTORY
;;
p
)
get_port
$2
;;
*
)
usage
$ROOT_DIRECTORY
;;
esac
done
template.service
View file @
c4d2e807
...
...
@@ -6,7 +6,7 @@ ConditionFileIsExecutable=/usr/bin/mpd
Type=simple
StartLimitInterval=5
StartLimitBurst=10
ExecStart=/usr/bin/mpd --no-daemon
#1
ExecStart=/usr/bin/mpd --no-daemon #1
User=icecastradio
Group=icecastradio
...
...
@@ -14,4 +14,4 @@ Restart=always
RestartSec=20
[Install]
WantedBy=multi-user.target
WantedBy=multi-user.target
\ No newline at end of file
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment