From 3bba0ea621a81338005ce227ad9f67244d78346c Mon Sep 17 00:00:00 2001
From: Bob Mottram <bob@freedombone.net>
Date: Sun, 1 Apr 2018 11:50:03 +0100
Subject: [PATCH] Option to import videos into peertube

---
 src/freedombone-app-peertube | 77 ++++++++++++++++++++++++++++++++++--
 1 file changed, 74 insertions(+), 3 deletions(-)

diff --git a/src/freedombone-app-peertube b/src/freedombone-app-peertube
index b7913bae1..af984e8f4 100755
--- a/src/freedombone-app-peertube
+++ b/src/freedombone-app-peertube
@@ -149,16 +149,86 @@ function peertube_disable_signups {
     systemctl restart peertube
 }
 
+function peertube_import_videos {
+    read_config_param MY_USERNAME
+    read_config_param PEERTUBE_DOMAIN_NAME
+    read_config_param ONION_ONLY
+
+    data=$(mktemp 2>/dev/null)
+    dialog --backtitle $"Freedombone Control Panel" \
+           --title $"Import Videos" \
+           --form "Enter a channel of video URL for YouTube/Vimeo/Dailymotion" 10 75 4 \
+           $"Username:" 1 1 "$MY_USERNAME" 1 28 16 15 \
+           $"Password:" 2 1 "" 2 28 40 10000 \
+           $"Video/Channel URL:" 3 1 "" 3 28 40 10000 \
+           2> "$data"
+    sel=$?
+    case $sel in
+        1) rm -f "$data"
+           return;;
+        255) rm -f "$data"
+             return;;
+    esac
+    peertubeuser=$(sed -n 1p < "$data")
+    peertubepassword=$(sed -n 2p < "$data")
+    video_url=$(sed -n 3p < "$data")
+    rm -f "$data"
+
+    peertubedomain="https://$PEERTUBE_DOMAIN_NAME"
+    if [[ "$ONION_ONLY" != 'no' ]]; then
+        peertubedomain="http://$(cat /var/lib/tor/hidden_service_peertube/hostname)"
+    fi
+
+    if [ ${#peertubeuser} -lt 3 ]; then
+        dialog --title $"Import videos" \
+               --msgbox $"Username was not valid" 6 75
+        return
+    fi
+
+    if [ ${#peertubepassword} -lt 3 ]; then
+        dialog --title $"Import videos" \
+               --msgbox $"Password was not valid" 6 75
+        return
+    fi
+
+    if [[ "$video_url" == *' '* || "$video_url" == *','* || "$video_url" == *'@'* ]]; then
+        dialog --title $"Import videos" \
+               --msgbox $"Video/channel URL was not valid" 6 75
+        return
+    fi
+
+    if [ ${#video_url} -lt 8 ]; then
+        dialog --title $"Import videos" \
+               --msgbox $"Video/channel URL was not valid" 6 75
+        return
+    fi
+
+    cd $PEERTUBE_DIR || exit 32468356
+    import_script=$PEERTUBE_DIR/dist/server/tools/import-videos.js
+    if [ ! -f $import_script ]; then
+        dialog --title $"Import videos" \
+               --msgbox $"import-videos script was not found" 6 75
+        return
+    fi
+
+    clear
+    node $import_script -u "$peertubedomain" -U "$peertubeuser" --password "$peertubepassword" -t "$video_url"
+
+    dialog --title $"Import videos" \
+           --msgbox $"Video/s imported from $video_url" 6 75
+}
+
 function configure_interactive_peertube {
     while true
     do
         data=$(mktemp 2>/dev/null)
         dialog --backtitle $"Freedombone Control Panel" \
                --title $"PeerTube" \
-               --radiolist $"Choose an operation:" 10 70 4 \
+               --radiolist $"Choose an operation:" 11 70 5 \
                1 $"Set administrator email address" off \
                2 $"Disable or enable signups" off \
-               3 $"Exit" on 2> "$data"
+               3 $"Import videos" off \
+               4 $"Exit" on 2> "$data"
         sel=$?
         case $sel in
             1) break;;
@@ -167,7 +237,8 @@ function configure_interactive_peertube {
         case $(cat "$data") in
             1) peertube_set_admin_email;;
             2) peertube_disable_signups;;
-            3) rm -f "$data"
+            3) peertube_import_videos;;
+            4) rm -f "$data"
                break;;
         esac
         rm -f "$data"
-- 
GitLab