forked from graysky2/xscreensaver-aerial
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathatv4wall
executable file
·186 lines (167 loc) · 8.34 KB
/
atv4wall
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
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
#!/bin/bash
[[ -z "$XDG_CONFIG_HOME" ]] &&
XDG_CONFIG_HOME="$HOME/.config"
command -v mpv >/dev/null 2>&1 || {
echo "I require mpv but it's not installed. Aborting." >&2
exit 1; }
LOOP=$1
FILE1=$2
if [ -n "$FILE1" ]; then
FILES=1
value=${FILE1#*=}
elif [ -n "$LOOP" ]; then
if [ "$LOOP" != "false" ] && [ "$LOOP" != "true" ]; then
FILES=1
FILE1=$LOOP
LOOP="false"
value=${FILE1#*=}
fi
fi
# path of movies
movies=/opt/ATV4
# Intel driver fix, see https://bugs.launchpad.net/ubuntu/+source/libvdpau/+bug/1300215
if [[ ! $(/usr/bin/prime-select query) == "nvidia" ]]; then
if [[ $(/usr/bin/prime-select query) == "intel" ]]; then
export VDPAU_DRIVER=va_gl
fi
fi
# day and night videos
DayArr=(b1-1.mov b1-3.mov b2-1.mov b2-2.mov b3-2.mov b3-3.mov b4-1.mov b4-2.mov
b5-1.mov b5-2.mov b6-1.mov b6-3.mov b7-1.mov b7-2.mov b8-2.mov b8-3.mov b9-1.mov
b9-3.mov b10-1.mov b10-3.mov comp_GL_G004_C010_v03_6Mbps.mov
comp_HK_H004_C008_v10_6Mbps.mov comp_C002_C005_0818SC_001_v01_6M_HB_tag0.mov
comp_LW_L001_C006_t9_6M_tag0.mov comp_LA_A005_C009_v05_t9_6M.mov
plate_G002_C002_BG_t9_6M_HB_tag0.mov comp_C007_C011_08244D_001_v01_6M_HB_tag0.mov
comp_LA_A006_C008_t9_6M_HB_tag0.mov comp_DB_D001_C001_v03_6Mbps.mov
comp_HK_H004_C010_4k_v01_6Mbps.mov comp_LA_A008_C004_ALT_v33_6Mbps.mov
comp_DB_D002_C003_t9_6M_HB_tag0.mov comp_C007_C004_0824AJ_001_v01_6M_HB_tag0.mov
comp_DB_D001_C005_t9_6M_HB_tag0.mov comp_HK_H004_C013_t9_6M_HB_tag0.mov
comp_DB_D008_C010_v04_6Mbps.mov
comp_A001_C004_1207W5_v23_SDR_FINAL_20180706_SDR_2K_HEVC.mov
comp_A009_C001_010181A_v09_SDR_PS_FINAL_20180725_SDR_2K_HEVC.mov
comp_A083_C002_1130KZ_v04_SDR_PS_FINAL_20180725_SDR_2K_HEVC.mov
comp_A103_C002_0205DG_v12_SDR_FINAL_20180706_SDR_2K_HEVC.mov
comp_A105_C003_0212CT_FLARE_v10_SDR_PS_FINAL_20180711_SDR_2K_HEVC.mov
comp_A108_C001_v09_SDR_FINAL_22062018_SDR_2K_HEVC.mov
comp_A114_C001_0305OT_v10_SDR_FINAL_22062018_SDR_2K_HEVC.mov
comp_GMT026_363A_103NC_E1027_KOREA_JAPAN_NIGHT_v17_SDR_FINAL_25062018_SDR_2K_HEVC.mov
comp_GMT306_139NC_139J_3066_CALI_TO_VEGAS_v07_SDR_FINAL_22062018_SDR_4K_HEVC.mov
comp_GMT308_139K_142NC_CARIBBEAN_DAY_v09_SDR_FINAL_22062018_SDR_2K_HEVC.mov
comp_GMT312_162NC_139M_1041_AFRICA_NIGHT_v14_SDR_FINAL_20180706_SDR_2K_HEVC.mov
comp_GMT329_113NC_396B_1105_CHINA_v04_SDR_FINAL_20180706_F900F2700_SDR_2K_HEVC.mov
comp_GMT329_117NC_401C_1037_IRELAND_TO_ASIA_v48_SDR_PS_FINAL_20180725_F0F6300_SDR_2K_HEVC.mov)
NightArr=(b1-2.mov b1-4.mov b2-3.mov b2-4.mov b3-1.mov b4-2.mov b5-3.mov
b6-2.mov b6-4.mov b7-3.mov b10-4.mov b9-2.mov b10-2.mov b8-1.mov
comp_DB_D011_D009_SIGNCMP_v15_6Mbps.mov comp_LA_A009_C009_t9_6M_tag0.mov
comp_GL_G010_C006_v08_6Mbps.mov comp_DB_D011_C010_v10_6Mbps.mov
comp_HK_B005_C011_t9_6M_tag0.mov DB_D011_C009_2K_SDR_HEVC.mov LA_A011_C003_2K_SDR_HEVC.mov
comp_A001_C004_1207W5_v23_SDR_FINAL_20180706_SDR_2K_HEVC.mov
comp_A009_C001_010181A_v09_SDR_PS_FINAL_20180725_SDR_2K_HEVC.mov
comp_A083_C002_1130KZ_v04_SDR_PS_FINAL_20180725_SDR_2K_HEVC.mov
comp_A103_C002_0205DG_v12_SDR_FINAL_20180706_SDR_2K_HEVC.mov
comp_A105_C003_0212CT_FLARE_v10_SDR_PS_FINAL_20180711_SDR_2K_HEVC.mov
comp_A108_C001_v09_SDR_FINAL_22062018_SDR_2K_HEVC.mov
comp_A114_C001_0305OT_v10_SDR_FINAL_22062018_SDR_2K_HEVC.mov
comp_GMT026_363A_103NC_E1027_KOREA_JAPAN_NIGHT_v17_SDR_FINAL_25062018_SDR_2K_HEVC.mov
comp_GMT306_139NC_139J_3066_CALI_TO_VEGAS_v07_SDR_FINAL_22062018_SDR_4K_HEVC.mov
comp_GMT308_139K_142NC_CARIBBEAN_DAY_v09_SDR_FINAL_22062018_SDR_2K_HEVC.mov
comp_GMT312_162NC_139M_1041_AFRICA_NIGHT_v14_SDR_FINAL_20180706_SDR_2K_HEVC.mov
comp_GMT329_113NC_396B_1105_CHINA_v04_SDR_FINAL_20180706_F900F2700_SDR_2K_HEVC.mov
comp_GMT329_117NC_401C_1037_IRELAND_TO_ASIA_v48_SDR_PS_FINAL_20180725_F0F6300_SDR_2K_HEVC.mov)
# database files to allow for no repeats when playing videos
day_db=$XDG_CONFIG_HOME/.atv4-day
night_db=$XDG_CONFIG_HOME/.atv4-night
runit() {
[[ -s "$day_db" ]] || echo "${DayArr[@]}" | sed 's/ /\n/g' > "$day_db"
[[ -s "$night_db" ]] || echo "${NightArr[@]}" | sed 's/ /\n/g' > "$night_db"
# set the time of day based on the local clock
# where day is after 7AM and before 6PM
hour=$(date +%H)
if [ "$hour" -gt 19 -o "$hour" -lt 7 ]; then
use_db=$night_db
else
use_db=$day_db
fi
# select at random a video to play from the day or night pools
howmany=$(wc -l "$use_db" | awk '{ print $1 }')
##echo "$use_db contains $howmany records"
# two conditions:
# 1) 1 line left (one vid) so use the vid and regenerate the list
# 2) 2 or more lines left so select a random number between 1 and $howmany
if [[ $howmany -eq 1 ]]; then
# condition 1 is true
useit=$(sed -n "1 p" "$use_db")
# exclude the one we just picked to create the illusion that we NEVER repeat :)
sed -i "/$useit/d" "$use_db"
elif [[ $howmany -ge 2 ]]; then
# condition 2 is true
rndpick=1
while [[ $rndpick -lt 2 ]]; do
rndpick=$((RANDOM%howmany+1))
done
useit=$(sed -n "$rndpick p" "$use_db")
# exclude the one we just picked to create the illusion that we NEVER repeat :)
sed -i "/$useit/d" "$use_db"
fi
}
UserBack=$(/usr/bin/gsettings get org.gnome.desktop.background picture-uri)
mkdir -p ~/.config/atv4wall
conifgdir=~/.config/atv4wall
# this part taken from Kevin Cox
# https://github.com/kevincox/xscreensaver-videos
IFS=$'\n'
trap : SIGTERM SIGINT SIGHUP
trap '{ echo "Ending..." ; /usr/bin/gsettings set org.gnome.desktop.background picture-uri "$UserBack"; exit 1; }' INT
if [ $FILES == 1 ]; then
if [[ $LOOP == "loop" ]]; then
nice xwinwrap -ovr -s -fdt -ni -nf -- mpv -wid WID --really-quiet --panscan="1.0" --autofit-larger=100%x100% --hwdec=auto --input-ipc-server=/tmp/mpvsocket --loop-file $FILE1 &
FILE1short=$(basename "${FILE1}")
echo $FILE1short
if [ ! -f "$conifgdir/$FILE1short.png" ]; then
ffmpeg -y -i $FILE1 -vframes 1 $conifgdir/$FILE1short.png
/usr/bin/gsettings set org.gnome.desktop.background picture-uri "file:///$conifgdir/$FILE1short.png"
ffmpeg -y -i $FILE1 -vf select=\'eq\(n,$(expr "$(ffprobe -show_streams "$FILE1" 2> /dev/null | grep nb_frames | head -1 | cut -d \= -f 2) - 1")\) -vframes 1 $conifgdir/$FILE1short.png
fi
/usr/bin/gsettings set org.gnome.desktop.background picture-uri "file:///$conifgdir/$FILE1short.png"
else
nice xwinwrap -ovr -s -fdt -ni -nf -- mpv -wid WID --really-quiet --panscan="1.0" --autofit-larger=100%x100% --hwdec=auto --input-ipc-server=/tmp/mpvsocket $FILE1 &
if [ ! -f "$conifgdir/$value.jpg" ]; then
echo BABABA
wget "https://img.youtube.com/vi/$value/maxresdefault.jpg" -O $conifgdir/$value.jpg
/usr/bin/gsettings set org.gnome.desktop.background picture-uri "file:///$conifgdir/$value.jpg"
fi
fi
pid=$!
wait $pid
fi
/usr/bin/gsettings set org.gnome.desktop.background picture-uri "$UserBack"
_screen() {
echo yeet
if [[ $LOOP != "false" ]]; then
while (true) #!(keystate lshift)
do
runit
if [[ -f "$movies/$useit" ]]; then
# file is on filesystem so just play it
# nice xwinwrap -ovr -s -fdt -ni -nf -g $1 -- mpv -wid WID --really-quiet --no-audio --panscan="1.0" --video-aspect=16:9 --autofit-larger=100%x100% --input-ipc-server=/tmp/mpvsocket --background="$3" --video-zoom="$4" $movies/$useit &
nice xwinwrap -ovr -s -b -sp -st -ni -nf -g $1 -- mpv --fullscreen --no-stop-screensaver --no-audio --panscan="1.0" --input-ipc-server=/tmp/mpvsocket --no-osc --no-osd-bar -wid WID --quiet "$movies/$useit" --background="#000000" &
pid=$!
if [ ! -f "$conifgdir/$useit.png" ]; then
ffmpeg -y -i $movies/$useit -vframes 1 $conifgdir/$useit.png
/usr/bin/gsettings set org.gnome.desktop.background picture-uri "file:///$conifgdir/$useit.png"
ffmpeg -y -i $movies/$useit -vf select=\'eq\(n,$(expr "$(ffprobe -show_streams "$movies/$useit" 2> /dev/null | grep nb_frames | head -1 | cut -d \= -f 2) - 1")\) -vframes 1 $conifgdir/$useit.png
fi
/usr/bin/gsettings set org.gnome.desktop.background picture-uri "file:///$conifgdir/$useit.png"
# /usr/bin/gsettings set org.compiz.unityshell:/org/compiz/profiles/unity/plugins/unityshell/ background-color $(convert $temp_dir/thumb.png -scale 1x1\! txt:-|egrep -o '#\w+')ff
# FILES=$(expr $FILES - 1) # ...
# echo "$FILES"
fi
wait $pid
# [ $? -gt 128 ] && { kill $pid ; exit 128; } ;
done
fi
}
for i in $( xrandr -q | grep ' connected' | grep -oP '\d+x\d+\+\d+\+\d+')
do
_screen $i &
done