X-Git-Url: https://git.plutz.net/?a=blobdiff_plain;f=page_video.sh;h=587ee526f18e0b1b72d7043c990519756e02538b;hb=31def066aaf71b5a2f5184335e16c461f1a12401;hp=a1416d33adae164db56ae2ac1b473568b7ebb2b8;hpb=0b2167fa7651a9cf79c34876940a0d440b695a90;p=rawnet diff --git a/page_video.sh b/page_video.sh index a1416d3..587ee52 100644 --- a/page_video.sh +++ b/page_video.sh @@ -1,88 +1,8 @@ #!/bin/sh -# ID NAME DESCRIPTION RESX RESY LENGTH COVER STATUS (void|private|hidden|public) UPLOADER HITS DESCR_CACHE FUTUREUSE +. "$_EXEC/db_video.sh" -if [ "$video" -a -f "$vid_db" -a -r "$vid_db" ]; then - read -r VIDEO_ID VIDEO_NAME VIDEO_DESCRIPTION VIDEO_RESX VIDEO_RESY \ - VIDEO_LENGTH VIDEO_COVER VIDEO_STATUS VIDEO_UPLOADER VIDEO_HITS \ - VIDEO_DESCR_CACHE VIDEO_FUTUREUSE <<-EOF - $(grep "^${video} " "${vid_db}") - EOF - if [ "$VIDEO_ID" ]; then - VIDEO_NAME="$(UNSTRING "$VIDEO_NAME")" - VIDEO_DESCRIPTION="$(UNSTRING "$VIDEO_DESCRIPTION")" - VIDEO_COVER="$(UNSTRING "$VIDEO_COVER")" - VIDEO_DESCR_CACHE="$(UNSTRING "$VIDEO_DESCR_CACHE")" - else - video='' - fi -fi - -update_video(){ - local id="${1}" name description resx resy length cover status uploader \ - hits descr_cache futureuse - local ID NAME DESCRIPTION RESX RESY LENGTH COVER STATUS UPLOADER HITS \ - DESCR_CACHE FUTUREUSE - local arg video thumb cnt - video="${_DATA}/${CHANNEL_ID}/${VIDEO_ID}.mp4" - thumb="${_DATA}/${CHANNEL_ID}/${VIDEO_ID}_thumb.jpg" - - for arg in "$@"; do case $arg in - name=*) name="${arg#*=}";; - description=*) description="${arg#*=}";; - cover=*) cover="${arg#*=}";; - status=*) status="${arg#*=}";; - uploader=*) uploader="${arg#*=}";; - hits=*) hits="${arg#*=}";; - esac; done - - if [ -f "$video" -a -r "$video" ]; then - arg="$(echo; ffprobe -show_entries format=duration:stream=width,height "$video" 2>&-)" - resx="${arg#*width=}"; resx="${resx%%${BR}*}" - resy="${arg#*height=}"; resy="${resy%%${BR}*}" - length="${arg#*duration=}"; length="${length%%${BR}*}" - fi - if [ "${length%.*}" -a ! "${thumb}" -nt "${video}" ]; then - for cnt in 1 2 3 4 5 6 7 8 9 10; do - ffmpeg -nostdin -y -ss "$((cnt * ${length%.*} / 11))" -i "$video" \ - -frames 1 "${thumb%.jpg}_$((cnt - 1)).jpg" - done 2>&- - montage "${thumb%.jpg}"_[0-9].jpg \ - -background "#000000" \ - -tile 10x1 -geometry 320x180+0+0 \ - -interlace line -quality 85 "${thumb}" - rm -- "${thumb%.jpg}"_[0-9].jpg - fi - - if LOCK "$vid_db"; then - while read -r ID NAME DESCRIPTION RESX RESY LENGTH COVER STATUS UPLOADER HITS \ - DESCR_CACHE FUTUREUSE; do - if [ "$id" = "$ID" ]; then - printf '%s %s %s %i %i %f %s %s %s %i %s %s\n' \ - "$id" "$(STRING "${name-$(UNSTRING "$NAME")}")" \ - "$(STRING "${description-$(UNSTRING "$DESCRIPTION")}")" \ - "${resx:-${resx-${RESX}}${resx+0}}" \ - "${resy:-${resy-${RESY}}${resy+0}}" \ - "${length:-${length-${LENGTH}}${length+0}}" \ - "$(STRING "${cover-$(UNSTRING "$COVER")}")" \ - "${status:-${status-${STATUS}}${status+void}}" \ - "${uploader:-${uploader-${UPLOADER}}${uploader+\\}}" \ - "${hits:-${hits-${HITS}}${hits+0}}" \ - "$(printf %s "${description-$(UNSTRING "$DESCRIPTION")}" |markdown |STRING)" \ - "${FUTUREUSE:-\\}" - else - printf '%s %s %s %i %i %f %s %s %s %i %s %s\n' \ - "$ID" "$NAME" "$DESCRIPTION" "$RESX" "$RESY" "$LENGTH" \ - "$COVER" "$STATUS" "$UPLOADER" "$HITS" "$DESCR_CACHE" \ - "$FUTUREUSE" - fi - done <"$vid_db" >"${vid_db}.$$" - mv -- "${vid_db}.$$" "${vid_db}" - RELEASE "$vid_db" - else - return 1 - fi -} +read_video "$video" UPLOAD(){ local file="$1" @@ -141,13 +61,7 @@ UPLOAD(){ REDIRECT "${_BASE}/channel/${channel}/${video}/#ERROR_UPDATE_NOTALLOWED" elif [ "$(POST delconfirm)" != confirm ]; then REDIRECT "${_BASE}/channel/${channel}/${video}/#ERROR_NOT_CONFIRMED" - elif LOCK "$vid_db"; then - while read -r id tail; do - [ "$id" != "$video" ] && printf '%s %s\n' "$id" "$tail" - done <"$vid_db" >"${vid_db}.$$" - mv -- "${vid_db}.$$" "$vid_db" - rm -- "${_DATA}/${channel}/${video}.mp4" "${_DATA}/${channel}/${video}_thumb.jpg" - RELEASE "$vid_db" + elif delete_video "$video"; then REDIRECT "${_BASE}/channel/${channel}/#DELETE_CONFIRM" else REDIRECT "${_BASE}/channel/${channel}/${video}/#ERROR_UPDATE_NOLOCK"