3 [ "$include_dbvideo" ] && return 0
7 # ID NAME DESCRIPTION RESX RESY LENGTH COVER STATUS UPLOADER HITS DESCR_CACHE FUTUREUSE
8 # (private|hidden|public)
12 VIDEO_ID VIDEO_NAME VIDEO_DESCRIPTION VIDEO_RESX VIDEO_RESY \
13 VIDEO_LENGTH VIDEO_COVER VIDEO_STATUS VIDEO_UPLOADER VIDEO_HITS \
14 VIDEO_DESCR_CACHE VIDEO_FUTUREUSE \
15 VIDEO_FILE VIDEO_THUMB VIDEO_MP4 VIDEO_WEBM
19 VIDEO_ID VIDEO_NAME VIDEO_DESCRIPTION VIDEO_RESX VIDEO_RESY \
20 VIDEO_LENGTH VIDEO_COVER VIDEO_STATUS VIDEO_UPLOADER VIDEO_HITS \
21 VIDEO_DESCR_CACHE VIDEO_FUTUREUSE \
22 VIDEO_FILE VIDEO_THUMB VIDEO_MP4 VIDEO_WEBM
28 local video="$1" vid_db="$_DATA/$CHANNEL_ID/videos.db"
29 [ "$CHANNEL_ID" ] || return 1
32 VIDEO_ID='' VIDEO_NAME='' VIDEO_DESCRIPTION='' VIDEO_RESX='' VIDEO_RESY=''
33 VIDEO_LENGTH='' VIDEO_COVER='' VIDEO_STATUS='' VIDEO_UPLOADER=''
34 VIDEO_HITS='' VIDEO_DESCR_CACHE='' VIDEO_FUTUREUSE=''
35 VIDEO_FILE='' VIDEO_THUMB='' VIDEO_MP4='' VIDEO_WEBM=''
38 read -r VIDEO_ID VIDEO_NAME VIDEO_DESCRIPTION VIDEO_RESX VIDEO_RESY \
39 VIDEO_LENGTH VIDEO_COVER VIDEO_STATUS VIDEO_UPLOADER VIDEO_HITS \
40 VIDEO_DESCR_CACHE VIDEO_FUTUREUSE
41 elif [ "$video" -a -f "$vid_db" -a -r "$vid_db" ]; then
42 read -r VIDEO_ID VIDEO_NAME VIDEO_DESCRIPTION VIDEO_RESX VIDEO_RESY \
43 VIDEO_LENGTH VIDEO_COVER VIDEO_STATUS VIDEO_UPLOADER VIDEO_HITS \
44 VIDEO_DESCR_CACHE VIDEO_FUTUREUSE <<-EOF
45 $(grep "^${video} " "${vid_db}")
48 if [ "$VIDEO_ID" ]; then
49 VIDEO_NAME="$(UNSTRING "$VIDEO_NAME")"
50 VIDEO_DESCRIPTION="$(UNSTRING "$VIDEO_DESCRIPTION")"
51 VIDEO_COVER="$(UNSTRING "$VIDEO_COVER")"
52 VIDEO_DESCR_CACHE="$(UNSTRING "$VIDEO_DESCR_CACHE")"
54 VIDEO_FILE="$_DATA/$CHANNEL_ID/${VIDEO_ID}.upload.mp4"
55 VIDEO_THUMB="$_DATA/$CHANNEL_ID/${VIDEO_ID}.thumb.jpg"
56 VIDEO_MP4="$_DATA/$CHANNEL_ID/${VIDEO_ID}.mp4"
57 VIDEO_WEBM="$_DATA/$CHANNEL_ID/${VIDEO_ID}.webm"
65 local id="${1:=${VIDEO_ID}}" name description resx resy length cover status uploader \
66 hits descr_cache futureuse
67 local ID NAME DESCRIPTION RESX RESY LENGTH COVER STATUS UPLOADER HITS \
69 local FILE THUMB MP4 WEBM arg cnt vid_db="$_DATA/$CHANNEL_ID/videos.db"
70 [ "$id" -a "$CHANNEL_ID" ] || return 1
72 FILE="$_DATA/$CHANNEL_ID/${id}.upload.mp4"
73 THUMB="$_DATA/$CHANNEL_ID/${id}.thumb.jpg"
74 # MP4="$_DATA/$CHANNEL_ID/${id}.mp4"
75 # WEBM="$_DATA/$CHANNEL_ID/${id}.webm"
77 for arg in "$@"; do case $arg in
78 name=*) name="${arg#*=}";;
79 description=*) description="${arg#*=}";;
80 cover=*) cover="${arg#*=}";;
81 status=*) status="${arg#*=}";;
82 uploader=*) uploader="${arg#*=}";;
83 hits=*) hits="${arg#*=}";;
86 if [ -f "$FILE" -a -r "$FILE" ]; then
87 arg="$(echo; ffprobe -show_entries format=duration:stream=width,height "$FILE" 2>&-)"
88 resx="${arg#*width=}"; resx="${resx%%${BR}*}"
89 resy="${arg#*height=}"; resy="${resy%%${BR}*}"
90 length="${arg#*duration=}"; length="${length%%${BR}*}"
92 if [ "${length}" -a ! "${THUMB}" -nt "${FILE}" ]; then
93 for cnt in 1 2 3 4 5 6 7 8 9 10; do
94 ffmpeg -nostdin -y -ss "$((cnt * ${length%.*} / 11))" -i "$FILE" \
95 -frames 1 "${THUMB%.jpg}_$((cnt - 1)).jpg"
97 montage "${THUMB%.jpg}"_[0-9].jpg \
98 -background "#000000" \
99 -tile 10x1 -geometry 320x180+0+0 \
100 -interlace line -quality 85 "${THUMB}"
101 rm -- "${THUMB%.jpg}"_[0-9].jpg
104 if LOCK "$vid_db"; then
105 while read -r ID NAME DESCRIPTION RESX RESY LENGTH COVER STATUS UPLOADER HITS \
106 DESCR_CACHE FUTUREUSE; do
107 if [ "$id" = "$ID" ]; then
108 printf '%s %s %s %i %i %f %s %s %s %i %s %s\n' \
109 "$id" "$(STRING "${name-$(UNSTRING "$NAME")}")" \
110 "$(STRING "${description-$(UNSTRING "$DESCRIPTION")}")" \
111 "${resx:-${resx-${RESX}}${resx+0}}" \
112 "${resy:-${resy-${RESY}}${resy+0}}" \
113 "${length:-${length-${LENGTH}}${length+0}}" \
114 "$(STRING "${cover-$(UNSTRING "$COVER")}")" \
115 "${status:-${status-${STATUS}}${status+private}}" \
116 "${uploader:-${uploader-${UPLOADER}}${uploader+\\}}" \
117 "${hits:-${hits-${HITS}}${hits+0}}" \
118 "$(printf %s "${description-$(UNSTRING "$DESCRIPTION")}" |markdown |STRING)" \
121 printf '%s %s %s %i %i %f %s %s %s %i %s %s\n' \
122 "$ID" "$NAME" "$DESCRIPTION" "$RESX" "$RESY" "$LENGTH" \
123 "$COVER" "$STATUS" "$UPLOADER" "$HITS" "$DESCR_CACHE" \
126 done <"$vid_db" >"${vid_db}.$$"
127 mv -- "${vid_db}.$$" "${vid_db}"
135 local video="${1:-$(randomid)}" vid_db="$_DATA/$CHANNEL_ID/videos.db"
136 [ "$CHANNEL_ID" ] || return 1
138 if LOCK "$vid_db"; then
139 if grep -q "^${video} " "$vid_db"; then
143 # ID NAME DESC RESX RESY LENGTH COVER STATUS UPLDR HITS FUTUREUSE
144 printf '%s \\ \\ 0 0 0 \\ private %s 0 \\\n' \
145 "$video" "$(STRING "$USER_ID")" >>"$vid_db"
153 local video="$1" vid_db="$_DATA/$CHANNEL_ID/videos.db"
154 [ "$CHANNEL_ID" ] || return 1
156 if LOCK "$vid_db"; then
157 grep -v "^${video} " <"$vid_db" >"${vid_db}.$$"
158 mv -- "${vid_db}.$$" "$vid_db"
166 local order="${1:-newest}" vid_db="$_DATA/$CHANNEL_ID/videos.db"
167 [ "$CHANNEL_ID" ] || return 1
169 [ -f "$vid_db" -a -r "$vid_db" ] && case "$order" in
174 sort -n -k6 "$vid_db"
177 sort -rn -k6 "$vid_db"