10_4 Node.jsのJavaScriptコードの記述と実行

Node.jsで実行するJavaScriptコードを記述します。

// Node.js用flickrapiモジュール
const Flickr = require("flickrapi");

// Node.js用イメージ処理モジュール
const Jimp = require("jimp");

// イメージを保存するときの名前に日時を利用
require('date-utils');

// 検索する文字列
const target = 'cat'

// flickrサイトで取得したapi_keyとsecretのオブジェクト
const flickrOptions = {
    api_key: "取得したAPI Key",
    secret: "取得したSecret"
};

// 写真を検索してダウンロードし、128 x 128のjpg画像として保存する
Flickr.authenticate(flickrOptions, (error, flickr) => {
    if (error) {
        console.log(error);
    }
    else {
        const response = flickr.photos.search({
            page: 1,
            per_page: 1000,
            text: target
        }, (error, result) => {
            if (error) {
                console.log(error);
            }
            else {
                //console.log(result)
                const photosArray = result.photos.photo;
                //console.log(photos)
                let count = 0;
                for (let i = 0, len = photosArray.length; i < len; i++) {

                    const farmId = photosArray[i].farm;
                    const serverId = photosArray[i].server;
                    const id = photosArray[i].id;
                    const secret = photosArray[i].secret;
                    const url = 'https://farm' + farmId + '.staticflickr.com/' + serverId + '/' + id + '_' + secret + '_s.jpg';

                    Jimp.read(url)
                        .then((image) => {
                            //console.log(url);
                            const dt = new Date();
                            const formatted = dt.toFormat("YYYYMMDDHH24MISSLL");
                            const path = target + '/' + target + '_' + formatted;
                            image.scaleToFit(128, Jimp.AUTO, Jimp.RESIZE_BEZIER)
                                .write(path + '.jpg');
                            return Promise.resolve();
                        }).catch(function(err) {
                            console.error(err);
                        });
                    count++;
                }
                console.log('終了');
            }
        });
    }
});

flickrapiの使い方は、「Pomax/node-flickrapi」ページで、jimpの使い方は「oliver-moran/jimp」ページで、date-utilsの使い方は、「JerrySievert/date-utils」ページで、それぞれ読むことができます。

上記JavaScriptコードはJavaScriptファイルとして、プロジェクトフォルダに保存します。

Node.jsのJavaScriptコードを実行するには、[コマンドプロンプト]でプロジェクトフォルダに移動し、nodeコマンドにつづけてJavaScriptのファイル名を入手し、Enterキーを押します。JavaScriptのファイル名がcat_dog.jsの場合には、次のようになります。

node cat_dog.js

コードの実行が問題なく進むと、Flickrにログインしている場合、ブラウザが開いて、次のようなページを表示します。これは、Flickrで作成したアプリがFlickrアカウントにアクセスしようとしているが、許可するか? 聞いてきているのです。[OK, I’LL AUTHORIZE IT]ボタンをクリックします。

するとXXX-XXX-XXXという形式の数字が表示されるので、これをコピーし、[コマンドプロンプト]の

prompt: oauth_verifier:

の後にペーストして、Enterキーを押します。

Node.jsのJavaScriptコードが実行され、プロジェクトフォルダにcatフォルダが作成されて、その中にFlickrからのネコの画像ファイルが128 x 128のサイズで保存されます。

[コマンドプロンプト]に”終了”と表示されると、実行終了なので、Ctrlキー+CキーでJavaScriptコードの実行を終了します。

ネコの写真が終わったら、target変数の値を’dog’に変えて、犬の写真をダウンロードします。下のスクリーンショットはダウンロードして加工した例です。犬の写真も多く含まれていますが、そうでないものもあります。

下は「10_1 Kerasモデルを訓練し、TensorFlow.jsモデルに変換して、サーバーに配置する」で変換したモデルでの実行例です。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

CAPTCHA