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
5 years ago
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
#!/bin/bash
# Запуск скрипта:
# ./radio <mountpoint>
# - cоздается конфиг файл (название - <mountpoint>.mpd.conf).
# - папка с конфиг-файлами (папка называется так же , как и <mountpoint>).
# - порт автоматически указывается в конфиге.
# - процесс автоматически добавляется в systemd
# - управление потоком ./radio.sh <название>
# Со стороны пользователя остается лишь добавить пути к плейлистам и изменить конфиг по усмотрению(название трансляции,описание и т.д)
source
./.port
source
./.port
ICECAST_DIR
=
./
ROOT_DIRECTORY
=
./
$2
if
[[
$#
-lt
1
]]
;
then
echo
"Формат ./radio.sh <поток>"
function
usage
()
{
exit
1
echo
"Использование : ./radio.sh <параметр> <имя>
fi
c - создание нового потока
m - управление потоком
if
[[
!
-f
./
$1
.mpd.conf
]]
;
then
d - удаление потока
cp
-p
$ICECAST_DIR
/template.mpd.conf
$ICECAST_DIR
/
$1
.mpd.conf
l - список запущенных потоков
mkdir
$ICECAST_DIR
/
$1
p - порт потока"
mkdir
$ICECAST_DIR
/
$1
/Music
touch
$ICECAST_DIR
/
$1
/mpd.log
}
touch
$ICECAST_DIR
/
$1
/mpdstate
touch
$ICECAST_DIR
/
$1
/mpd.db
function
get_port
()
{
touch
$ICECAST_DIR
/
$1
/mpd.pid
local
CONFIG_FILE
=
./
$1
.mpd.conf
mkdir
$ICECAST_DIR
/
$1
/playlists
local
PORT
=
`
cat
$CONFIG_FILE
|
grep
port |
awk
'{ print $2 ; exit; }'
|
tr
-d
\"
`
sed
-i
's?#1?'
`
pwd
`
/
$1
'?'
$ICECAST_DIR
/
$1
.mpd.conf
echo
$PORT
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
function
create_stream
()
{
chmod
-R
777
$ICECAST_DIR
/
$1
chmod
+x
$ICECAST_DIR
/
$1
/playlists
local
CONFIG_FILE
=
./
$1
.mpd.conf
echo
"Файлы конфигураций cозданы успешно !"
local
ROOT_DIRECTORY
=
$2
local
ABS_PATH_TO_CFG
=
`
pwd
`
/
$1
.mpd.conf
cp
template.service /etc/systemd/system/
$1
.service
PATH_TO_CFG
=
`
pwd
`
/
$1
.mpd.conf
if
[[
!
-f
./
$1
.mpd.conf
]]
;
then
sed
-i
's?#1?'
$PATH_TO_CFG
'?'
/etc/systemd/system/
$1
.service
echo
PORT
=
$((
PORT+1
))
>
$ICECAST_DIR
/.port
cp
-p
./template.mpd.conf
$CONFIG_FILE
systemctl daemon-reload
mkdir
-p
$ROOT_DIRECTORY
/playlists
systemctl start
$1
mkdir
$ROOT_DIRECTORY
/Music
systemctl
enable
$1
touch
$ROOT_DIRECTORY
/mpd.log
echo
"Запущен mpd-поток под названием :
$1
по адресу : radio.azbyka.ru:8000/
$PORT
"
touch
$ROOT_DIRECTORY
/mpdstate
echo
"Для начала работы требуется обновить базу данных mpd"
touch
$ROOT_DIRECTORY
/mpd.db
echo
"Для работа с потоком : ./radio <название потока>"
touch
$ROOT_DIRECTORY
/mpd.pid
else
sed
-i
's?#1?'
`
pwd
`
/
$1
'?'
./
$1
.mpd.conf
ncmpc
-p
`
cat
.
'/'
$1
.mpd.conf |
grep
port |
awk
'{ print $2 ; exit; }'
|
tr
-d
\"
`
sed
-i
"s/#2/
$PORT
/g"
./
$1
.mpd.conf
fi
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
This diff is collapsed.
Click to expand it.
template.service
View file @
c4d2e807
...
@@ -6,7 +6,7 @@ ConditionFileIsExecutable=/usr/bin/mpd
...
@@ -6,7 +6,7 @@ ConditionFileIsExecutable=/usr/bin/mpd
Type=simple
Type=simple
StartLimitInterval=5
StartLimitInterval=5
StartLimitBurst=10
StartLimitBurst=10
ExecStart=/usr/bin/mpd --no-daemon
#1
ExecStart=/usr/bin/mpd --no-daemon #1
User=icecastradio
User=icecastradio
Group=icecastradio
Group=icecastradio
...
@@ -14,4 +14,4 @@ Restart=always
...
@@ -14,4 +14,4 @@ Restart=always
RestartSec=20
RestartSec=20
[Install]
[Install]
WantedBy=multi-user.target
WantedBy=multi-user.target
\ No newline at end of file
This diff is collapsed.
Click to expand it.
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