bash script загрузки screenshot на pixs.ru

idea для облегчения "постинга" на banki.ru создать скрипт, который загружает изображения на сайт pixs.ru
Скрипт предназначен пользователям Linux/Gnome3

#!/bin/bash # idea для облегчения "постинга" на banki.ru # создать скрипт, который загружает изображения на сайт pixs.ru # draft-idea процесса, # 1) Запускаем "снимок экрана" встроенный в Gnome, и получаем сохраняем(tmpfs) скриншот # 2) для начала делаем запрос(GET), и сохраняем(tmpfs) cookie # 3) Далее выполняем запрос(POST) который собственно и загружает screenshot # 4) Далее, разбираем полученную страницу, скрипт/page простой --> парсим регуляркой # 5) копируем в буфер Gtk ссылку на загруженное изображение (изпользую Gpaste) # 6) вывожу звук и системное сообщение о загрузке (notify-send, pactl)

# Поехали # устанавливаем/создаем временную директорию ptmp="/tmp/tmpscreenshot/" # UUID экземпляра запущенного процесса prUUID="$$" # Дата запуска экземпляра процесса prd=$(date +%Y-%m-%d) # Время запуска экземпляра процесса prt=$(date +%H-%M-%S) # временный файл с cookie cookieget="$ptmp""cookieget" # временный файл содержащий "тело" страницы содержащую ссылку для форума pageimage="$ptmp/pagelinkimage" # 1) Делаем скриншот и сохраняем его в файл (в tmpfs) # Проверка доступности директории, временных файлов if [ -d $ptmp ]; then echo "Dir ""$ptmp"" Exists" else echo "The Dir ""$ptmp" "Does Not Exist Create Dir" # Создаём директорию для скринов echo "$(mkdir "$ptmp")" fi # запускаем gnome-screenshot echo "$(gnome-screenshot --area --file=$ptmp$prd""$prt""$prUUID)" # проверяем, что файл создался if [ -f $ptmp$prd""$prt""$prUUID ]; then echo "Ok: файл "$ptmp$prd""$prt""$prUUID" присутствует" else echo "Stop: failure operation? файл "$ptmp$prd""$prt""$prUUID" отсутствует" exit 2 fi # 2) get cookie resultcurl="$(curl --silent --show-error --write-out %{httpcode} --location \ --cookie-jar $cookieget -o /dev/null \ --header "User-Agent: Mozilla/5.0 (X11; Linux x866 4; rv:48.0) Gecko/20100101 Firefox/48.0" \ --header "text/html,application/xhtml+xml,application/xml;q=0.9,/;q=0.8" \ --header "Accept-Language: en-US,en;q=0.5" \ --header "Accept-Encoding: deflate, gzip" \ --header "DNT: 1" \ pixs.ru)" echo "result:" "$resultcurl" # check get request if [ $resultcurl != "200" ]; then echo "Stop: Нет, доступа к странице" exit 2 fi # 3 Пример Curl для загрузки(POST multi/part), и сразу перекодируем в utf8 # проверок на ошибки нет :) будет желание, перелопачу скрипт и сделаю красиво echo "$(curl -s --show-error -L -b $cookieget --write-out %{httpcode} \ --header "DNT: 1" \ --header "Referer: http://pixs.ru/" \ --header "User-Agent: Mozilla/5.0 (X11; Linux x8664; rv:48.0) Gecko/20100101 Firefox/48.0" \ --form "userfile=@$ptmp$prd""$prt""$prUUID; type=image/jpeg" \ --form "file2=" \ --form "title=" \ --form "resizex=800" \ --form "privatecode=" \ pixs.ru/redirects/upload.php \ | iconv -f cp1251 -t utf8 -o $pageimage)" # 4) разбираем полученную страницу regular expression REGEXP=".Прямая ссылка:(.<){3}.(http://.png)'>.{4}" if [[ $(cat "$pageimage") =~ $REGEXP ]] then echo "Регулярное выражение совпало со строкой!" echo "Подвыражение 2 (то, что в скобках): ""${BASHREMATCH[2]}" else echo "Совпадений с шаблоном: ""$REGEXP"" не найдено" exit 2 fi #5) Копируем(Gpaste) в буфер Gtk resultgpaste="$(gpaste-client add "${BASHREMATCH[2]}")" # 6) звук и системное сообщение # Показываем сообщение в Gnome echo "$(notify-send "Screenshot["${BASHREMATCH[2]}"] load to web" -i gtk-info)" # Воспроизводим звук # Получаем устройство out default устройство defsoundout="$(pactl info | grep -o -P '(?<=Default\sSink: \s)(.*)')" # Получаем текущую громкость для out default устройства defsoundoutvol="$(pactl list sinks \ | grep -A 20 "Name: $defsoundout" \ | grep -o -P '\s+?Volume:.dB.?dB' \ | grep -o -P '(?<=%\s/\s)(.*?)(?=\sdB)' \ | head -n 1 )" # Воспроизводим звук c текущей громкостью системы echo "$(canberra-gtk-play --id="service-login" --volume=$defsoundout_vol)"