-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathpeerflix
More file actions
executable file
·121 lines (103 loc) · 4 KB
/
peerflix
File metadata and controls
executable file
·121 lines (103 loc) · 4 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
#!/usr/bin/env bash
#
# ############################################################################
# Project: scripts (none)
# File...: peerflix
# Created: Sunday, 2025/01/19 - 11:55:48
# Author.: fbnmtz, (fabiano.matoz@gmail.com)
# ~·~·~·~·~·~·~·~·~·~·~·~·~~·~·~·~·~·~·~·~·~·~·~·~·~~·~·~·~·~·~~·~·~·~·~·~·~·~
# Last Modified: Saturday, 2025/08/02 - 08:32:20
# Modified By..: @fbnmtz, (fabiano.matoz@gmail.com)
# ~·~·~·~·~·~·~·~·~·~·~·~·~~·~·~·~·~·~·~·~·~·~·~·~·~~·~·~·~·~·~~·~·~·~·~·~·~·~
# Version: 1.0.0.115
# ~·~·~·~·~·~·~·~·~·~·~·~·~~·~·~·~·~·~·~·~·~·~·~·~·~~·~·~·~·~·~~·~·~·~·~·~·~·~
# Description:
# >
# ############################################################################
# HISTORY:
#
# shellcheck disable=SC1090,SC2154
source "$xSHELL_INIT"
use args
_app_=peerflix
xrequirements "$_app_|docker fzf wc awk nc"
xarg --id -c,--custom --var params+r --desc "custom params to peerflix server"
xarg --id -d,--defaults --var defaults:true --desc "default params (--all --subtitles --list)"
xarg --id -k,--kill --var kill:true --desc "kill runnung server"
xarg --id -p,--port --var port+r --desc "port to run peerflix server (default 8888)"
xarg --header "peerflix wrapper"
xarg --footer "stream a torrent file on a webserver (localhost:8888 or custom <port>)"
xrun --xversionrc --xcolors "$@"
_kill(){
# Listar todos os contêineres em execução da imagem cdrage/peerflix
containers=$(docker ps --filter "ancestor=cdrage/peerflix" --format "{{.ID}} {{.Names}}")
# Verificar se há contêineres em execução
if [ -z "$containers" ]; then
echo "Nenhum contêiner em execução da imagem cdrage/peerflix."
exit 0
fi
# Contar o número de contêineres
num_containers=$(echo "$containers" | wc -l)
# Se houver apenas um contêiner, pará-lo imediatamente
if [ "$num_containers" -eq 1 ]; then
container_id=$(echo "$containers" | awk '{print $1}')
if docker stop "$container_id"; then
echo "Contêiner $container_id parado com sucesso."
exit 0
else
echo "Falha ao parar o contêiner $container_id. Verifique se o ID ou nome está correto."
fi
exit 0
fi
# Usar fzf para selecionar o contêiner
selected_container=$(echo "$containers" | fzf --prompt="Selecione o contêiner para parar: " --header="Contêineres em execução da imagem cdrage/peerflix:")
# Verificar se um contêiner foi selecionado
if [ -z "$selected_container" ]; then
echo "Nenhum contêiner selecionado."
exit 0
fi
# Extrair o ID do contêiner selecionado
container_id=$(echo "$selected_container" | awk '{print $1}')
# Parar o contêiner escolhido
if docker stop "$container_id"; then
echo "Contêiner $container_id parado com sucesso."
else
echo "Falha ao parar o contêiner $container_id. Verifique se o ID ou nome está correto."
fi
exit 0
}
_get_port(){
# porta padrão
local _port=8888
while true; do
# Verifica se a porta está em uso
if nc -z localhost $_port &> /dev/null; then
# Sim? incrementa em um
echo "port '$_port' already in use! trying next..." >&2
_port=$((_port + 1))
else
# Não? retorna a porta
echo $_port
return
fi
done
}
[ -z "$port" ] && port="$(_get_port)"
[ "$defaults" == "true" ] && params="--all --subtitles --list"
[ "$kill" == "true" ] && { _kill && exit 0; }
_app_function(){
docker run --rm -it -p "$port":8888 \
-v "$HOME"/popcorn:/tmp/torrent-stream \
cdrage/peerflix "$params" "$@"
# docker run -d --name peerflix-server \
# -p 8080:8080 \
# -v "$HOME"/popcorn/torrent-stream:/tmp/torrent-stream \
# onisuly/peerflix-server "$@"
}
if builtin $_app_ 2> /dev/null; then
echo "$_app_ binary"
$_app_ "$@"
else
echo "$_app_ (docker:$port)"
_app_function "$@"
fi