web-dev-qa-db-ja.com

Webページを開き、cronジョブとして記録するスクリプト

Webページのアドレスと時間を秒単位で引数として取るスクリプトを作成する必要があります。 Webページに表示されているもの(JavaScriptおよびHTMLコンテンツ(Flashは不要))をすべて記録します。スクリプトは、cronジョブとして非対話的に実行されます。その他の制約は、ログインマネージャを起動したり、すでに実行中のXサーバーをハイジャックしたりできないことです。また、ログインマネージャがインストールされていることや、サーバーにどのようなグラフィックアダプタが組み込まれていることも想定できません。このセミソリューションは私がこれまでに思いついたものですが、Xserverのため、またcronジョブとして実行する必要があるため、良くありません。また、最新のUbuntuまたはDebianで実行する必要があります。

他に回避策や提案がある場合は、言ってください! :)

if [ $# -ne 3 ]then
echo "Arguments missing!";
echo "Entered  : $0 $1 $2 $3 (out of $# vars)";
echo "Should be: $0 http://feri.uni-mb.si/ 60s i_stare_at_websites_everyday.ogv";
exit
fi

#continued...
URL=$1;
TIME=$2;
OUTFILE=$3;

echo "++ Using URL: $URL";
echo "++ Capturing browser window for $TIME seconds";

# chromium is used as a better workaround for firefox's safe mode PITA browser.jar settings unpack+set+pack bug
#firefox $1 &
chromium-browser --disable-translate --app=$URL --user-data-dir /tmp &
browserPID=$!
#sleep for 4 secodns = loading firefox + webpage loading time 2+2?
#recordmydesktop has a delay argument which doesn't work.
#we need to sleep the execution old school way.
sleep 4s

unset xC yC wC hC
  eval $(xwininfo -id $(xdotool getactivewindow) |
    sed -n -e "s/^ \+Absolute upper-left X: \+\([0-9]\+\).*/xC=\1/p" \
           -e "s/^ \+Absolute upper-left Y: \+\([0-9]\+\).*/yC=\1/p" \
           -e "s/^ \+Width: \+\([0-9]\+\).*/wC=\1/p" \
           -e "s/^ \+Height: \+\([0-9]\+\).*/hC=\1/p" )

echo "Starting capture...";
recordmydesktop -x=$xC -y=$yC --width=$wC --height=$hC -o $OUTFILE 2&> /tmp/record_script_log &
# 2&> /tmp/recording_script.log &
recorderPID=$!
echo "++ Firefox Process ID: $firefoxPID, RCD ID: $recorderPID, Recording for: $TIME";
sleep $TIME
echo "++ All done! Cleaning up..."
echo "++ File saved as $OUTFILE";
# shut down "record my desktop" nicely
kill $recorderPID
kill -9 $browserPID
2
Nooich

wgetを使用します。 ubuntu-standardパッケージの依存関係であるため、システムにインストールする必要があります。それ以外の場合は、apt-get install wgetを使用してインストールしてください。

1
zwets