automatorを使って、画像の一括保存がしたいです。

Macのautomatorを使って、画像の一括保存がしたいのですがうまくいきません。



画像保存したいのはこのページの画像です。

http://p.unext.jp/title/new_title



下記のサイトを参考に設定しましたができませんでした。

http://matome.naver.jp/odai/2133832901978560301



できる方法がお分かりになる方がいらっしゃいましたらお教え願います。よろしくお願い致します。

MacBook Pro, Mac OS X (10.7.5), OS Xのバージョンはわかりかねます。

投稿日 2015/07/10 02:29

返信
返信: 11

2015/07/10 22:11 nananann への返信

こんな感じの Automator ワークフローでどうでしょうか。


Safari で当該ページを開き、一番下までスクロールして、画像をすべて読み込んだ状態で実行してください。そうしないと、Safari が読み込んだ画像しかダウンロードしません。


また、画像は PNG 形式のファイルをダウンロードするようにしてあります。JPEG の方はファイルサイズがかなり小さいのですが、その分画質が悪いのでこのようにしました。


それと、サーバに負担をかけないように短い間隔での定期実行はしないでください。


なお、動作確認は Mac OS X 10.6.8。動かない場合は、どなたか直していただけると嬉しいです。


ーーーーー


Automator ワークフロー

ユーザがアップロードしたファイル


AppleScript を実行

on run tell application "Safari" do JavaScript "var $myXXX = (function() { if (location.hostname !== 'p.unext.jp') { return '' } var img = document.getElementsByTagName('img'); var ary = []; for (var i = 0; i < img.length; i++) { var loc = document.createElement('a'); loc.href = img[i].src; if (loc.hostname === 'imgc.nxtv.jp') { ary.push(loc.origin + loc.pathname); } } return ary; })(); $myXXX;" in document 1 end tell set ary to result if ary is "" then return set dir to choose folder repeat with i in ary set uri to i my download(uri, dir) end repeat end run on download(uri, dir) set sh1 to "cd " & quoted form of POSIX path of dir & " && " set sh2 to "curl -s -O " & quoted form of uri -- do shell script (sh1 & sh2) end download

2015/07/13 23:00 Hiro__S への返信

ご回答頂きありがとうございます!!!
教えていただいた方法を試してみたところ、エラーがでてしまいました。
やり方としては下記の通りです。


1.AppleJavaScriptを実行をドラッグして選択したところ、下記のような文言が入っていたので削除しました。
2.次に教えていただいたものをコピーして貼り付けて、実行をクリックしました
3.下記のようなエラー文言がでました。

tellを何か違う文言に変えればいいのか、それとも最初に入っていた文言を使わなければならないのか等が分かりかねる状態です。
もしご存知でしたたらお教え願います。よろしくお願い致します。



*一部編集させていただきました。Apple Inc.

2015/07/13 23:02 Hiro__S への返信

ご回答頂きありがとうございます!!!
教えていただいた方法を試してみたところ、エラーがでてしまいました。
やり方としては下記の通りです。


1.AppleJavaScriptを実行をドラッグして選択したところ、下記のような文言が入っていたので削除しました。


2.次に教えていただいたものをコピーして貼り付けて、実行をクリックしました


3.下記のようなエラー文言がでました。



tellを何か違う文言に変えればいいのか、それとも最初に入っていた文言を使わなければならないのか等が分かりかねる状態です。
もしご存知でしたたらお教え願います。よろしくお願


*添付画像が存在しないため、本文の一部を編集させていただきました。Apple Inc.

2015/07/11 10:36 Hiro__S への返信

ご回答頂きありがとうございます!!!

教えていただいた方法を試してみたところ、エラーがでてしまいました。

やり方としては下記の通りです。

1.AppleJavaScriptを実行をドラッグしたところ、下記のような文言が元から入っていたので削除しました。

on run {input, parameters}




return input

end run


2.次に教えていただいたものをコピーして貼り付けて、実行をクリックしました。

3.下記のようなエラー文言がでました。

【構文エラー

given in of expression with without その他のパラメーターがあるべきところですがtellが見つかりました。】

tellを何か違う文言に変えればいいのか、それとも最初に入っていた文言を使わなければならないのか等が分かりかねる状態です。

もしご存知でしたたらお教え願います。よろしくお願い致します。

2015/07/11 21:25 nananann への返信

1.AppleJavaScriptを実行をドラッグしたところ、下記のような文言が元から入っていたので削除しました。

2.次に教えていただいたものをコピーして貼り付けて、実行をクリックしました。


「AppleJavaScriptを実行」は「AppleScript を実行」の書き損じですよね。それはともかく、ワークフローの作り方はそれで良いはずです。


で、動かない原因ですが、OS のバージョンは OS X 10.9 か、それ以上ではありませんか?もしそうなら、下記リンク先の HAL さんのコメント参考にして、「スマート引用符」「二重引用符」「一重引用符」の設定を変更してみてはどうでしょうか?


https://discussionsjapan.apple.com/thread/10143404


設定変更については、下のリンク先にある図も参考になりそうです。


http://qiita.com/Balacker/items/67497f3ac181cf980ff1


とりあえずは、OS のバージョンを確認し、OS の「引用符」の設定を変更してみる...というところまでをやって、結果を教えてください。お手数をおかけしてすみません。


ーーーーー


それと、前述のワークフローが Lion 以上で期待どおりに動くかを、どなたか確認していただけませんか?


使い方は

1. Safari で当該ページを開く

2. その状態で Automator ワークフローを実行

3. ダイアログが表示される → 画像の保存フォルダを指定

4. 指定したフォルダに画像がダウンロードされる

2015/07/12 20:02 Hiro__S への返信

ご返信いただきありがとうございます!



成功しました!感動です!!!ありがとうございます!



原因は、コピーしたのをエバーノートに保存してペースとしていたため、何か異変が起きてしまっていたようです。初歩的なミスでお手数をおかけしてしまい申し訳ございません。。



本当に親切にして頂きありがとうございます!

2015/07/12 20:22 nananann への返信

Hiro.Sさんのスクリプトに手を入れて、サイトを開くところから開始するようにしてみました。

ただ、Safariの設定、ネットワーク的な問題などで最初にサイトを開いて画像を読み込む際のDelayの時間、

ページスクロールの回数などを環境に合わせて設定し直さないとうまく働かないかもしれません。

あくまでご参考ということで。



     on run

     tell application "Safari"

            activate

            open location "http://p.unext.jp/title/new_title"

            delay 3

            tell application "System Events"

               key code 121

               delay 2

               key code 121

               delay 0.5

               key code 121

               delay 0.5

               key code 121

               delay 0.5

           end tell

        end tell

        

        tell application "Safari"

            do JavaScript "var $myXXX = (function() {

               if (location.hostname !== 'p.unext.jp') {

                  return ''

               }

               var img = document.getElementsByTagName('img');

               var ary = [];

               for (var i = 0; i < img.length; i++) {

                  var loc = document.createElement('a');

                  loc.href = img[i].src;

                  if (loc.hostname === 'imgc.nxtv.jp') {

                     ary.push(loc.origin + loc.pathname);

                  }

              }

              return ary;

           })(); $myXXX;" in document 1

        end tell

        

        set ary to result

        if ary is "" then return

        

        tell application "Finder"

            activate

            set dir to choose folder

            

            repeat with i in ary

               set uri to i

               my download(uri, dir)

           end repeat

        end tell

    end run

    

    on download(uri, dir)

       set sh1 to "cd " & quoted form of POSIX path of dir & " && "

       set sh2 to "curl -s -O " & quoted form of uri

       --

       do shell script (sh1 & sh2)

    end download

2015/07/14 01:22 nananann への返信

直接本題とは関係ありませんが、

nananann さんによる書き込み:


私がコピペする際にエバーノートを使ったことでエラーが生じてしまっていたようです。

コピー& ペーストをこのサイトから行なう際に「""」や半角スペースが他の文字に変ることがあるようです。半角英数以外をすべて打ち直したら動いたことがあります。

このスレッドはシステム、またはAppleコミュニティチームによってロックされました。 問題解決の参考になる情報であれば、どの投稿にでも投票いただけます。またコミュニティで他の回答を検索することもできます。

automatorを使って、画像の一括保存がしたいです。

Apple サポートコミュニティへようこそ
Apple ユーザ同士でお使いの製品について助け合うフォーラムです。Apple Account を使ってご参加ください。