Neglected Puppy Market

    @mecab/hotcook
    TypeScript icon, indicating that this package has built-in type declarations

    1.0.6 • Public • Published

    ホットクック レシピ検索 パッケージ

    npm version Node CI Coverage Status

    ホットクックの公式レシピ検索サイトを楽にスクレイピングするAPIを提供します。

    インストール

    $ npm install @mecab/hotcook

    以下の環境を想定しています

    • Node.js >= v.10.0.0
    • TypeScript での利用を推奨します。(型定義ファイルを用意してあり、特に検索時のオプションの指定が便利です。)

    使い方

    1. レシピを検索する

    1.1 簡単な例

    import { Hotcook } from '@mecab/hotcook';
    // const { Hotcook } = require('@mecab/hotcook');
    
    (async () => {
        const hotcook = new Hotcook('HW24C'); // 省略した場合、デフォルトはHW24Cです。
        const result = hotcook.search('じゃがいも');
        for await (const recipe of result) {
            console.log(recipe);
        }
    })();
    
    // {
    // url: 'https://cook-healsio.jp/hotcook/HW24C/recipes/R4086',
    // imageUrl: 'https://cook-healsio.jp/hotcook/asset/images/search/img_recipe_pc.png',
    // name: 'いも・かぼちゃ(ゆで)',
    // id: 'R4086'
    // }
    // {
    // url: 'https://cook-healsio.jp/hotcook/HW24C/recipes/R4012',
    // imageUrl: 'https://cook-healsio.jp/hotcook/asset/images/search/img_recipe_pc.png',
    // name: 'おでん',
    // id: 'R4012'
    // }
    // ...
    // {
    // url: 'https://cook-healsio.jp/hotcook/HW24C/recipes/R4080',
    // imageUrl: 'https://cook-healsio.jp/hotcook/asset/images/search/img_recipe_pc.png',
    // name: '野菜スープ',
    // id: 'R4080'
    // }

    レシピの検索結果を返すイテレーターを返します。このイテレーターは、必要に応じて後ろのページを自動的に取得します。すなわち、for await 文で最後まで反復させると、ページをまたいで最後のレシピまで全て取得します。

    結果のレシピ名が長い場合(1.3., 1.4. 参照)省略されてしまいますが、検索結果ページのHTML上で結果が省略されているので、元のレシピ名を取得することはできません。完全なレシピ名が必要な場合、2. のレシピ詳細を取得してください。

    1.2. 完全なオプション

    import { Hotcook } from '@mecab/hotcook';
    
    (async () => {
        const hotcook = new Hotcook();
        const result = hotcook.search('じゃがいも', {
            kind: ['ゆで物', '煮物'],
            time: ['30分未満', '30分以上1時間未満', '1時間以上'],
            materials: ['大根・にんじん'],
            reservationCapable: true
        });
        for await (const recipe of result) {
            console.log(recipe.name);
        }
    })();
    
    // おでん
    // 豚バラ肉と野菜の煮物

    クエリをオプションに含めて、

    hotcook.search({
        query: 'じゃがいも',
        kind: ['ゆで物', '煮物'],
        ...
    })

    としても良いです。全てのオプションは省略できます。オプションとして利用できる値は、公式の検索ページで利用できる値そのままです。詳しくは型定義ファイルをご覧ください。

    1.3. 最大ページ数を指定

    import { Hotcook } from '@mecab/hotcook';
    
    (async () => {
        const hotcook = new Hotcook();
        const result = hotcook.search('じゃがいも').maxPage(1);
        for await (const recipe of result) {
            console.log(recipe.name);
        }
    })();
    
    // いも・かぼちゃ(ゆで)
    // おでん
    // かぼちゃのポテトサラ...
    // 殻付きあさりのクラム...
    // キャベツとじゃがいも...
    // クラムチャウダー
    // クリームシチュー
    // コクうまカムジャタン...
    // ごろっと具材のクリー...
    // じゃがいもと牛肉の中...
    // じゃがいもとれんこん...
    // じゃがいもの甘辛炒め

    1.4. 特定のページのみを取得

    import { Hotcook } from '@mecab/hotcook';
    
    (async () => {
        const hotcook = new Hotcook();
        const result = hotcook.search('じゃがいも');
        for (const recipe of await result.getPage(2)) { // awaitの位置に注意
            console.log(recipe.name);
        }
    })();
    
    // じゃがいものポタージ...
    // じゃがいものみそシチ...
    // じゃがいもの冷製スー...
    // 卵入りポテトサラダ
    // 大豆のミネストローネ...
    // トマトたっぷりビーフ...
    // 鶏とじゃがいもの炒め...
    // 肉じゃが
    // バターチキンカレー(...
    // ビーフカレー
    // ビーフシチュー
    // 豚バラ肉と野菜の煮物

    hotcook.search() が返すイテレータには、getPage(page: Number) メソッドがあります。このメソッドは、指定されたページ上のレシピ一覧を取得し、その配列に解決されるPromiseを返します。

    2. レシピの詳細を取得する

    import { Hotcook } from '@mecab/hotcook';
    
    (async () => {
        const hotcook = new Hotcook();
        const recipe = await hotcook.recipe('R4006'); // 検索結果の`recipe.id`
        console.log(recipe);
        console.log();
        console.log('materials')
        recipe.recipe.materials.forEach(e => {
            console.log(`=== ${e.title ?? ''} ===`);
            console.log(e.materials);
        })
    })();
    
    // {
    // url: 'https://cook-healsio.jp/hotcook/HW24C/recipes/R4006',
    // recipe: {
    //     title: '八宝菜',
    //     materialTitle: '材料:4人分',
    //     materials: [ [Object], [Object] ],
    //     time: '20分',
    //     calorie: '約119kcal',
    //     note: '*4~6人分まで自動でできます。',
    //     process: [
    //     'まぜ技ユニットを本体にセットする。',
    //     'えびは殻、尾、背ワタを取る。肉・魚介類に片栗粉をまぶす。にんじんは短冊切りにする。その他の食材はひと口大に切る。',
    //     '内鍋に野菜、肉・魚介類の順に入れ、よく混ぜ合わせた[A]を加えて本体にセットする。\n' +
    //         'メニューを選ぶ → メニュー番号で探す → No.006(八宝菜) → 調理を開始する → ' +
    //         'スタート',
    //     ' 加熱後、全体を混ぜる。\n※写真は、加熱後にゆでたうずら卵を加えています。'
    //     ],
    //     recipeNumber: '自動6',
    //     imageUrl: 'https://cook-healsio.jp/hotcook/images/800x600/R4006.jpg'
    // }
    // }
    //
    // materials
    // ===  ===
    // [
    // { name: '肉・魚介類 (豚、えび、いかなど)', amount: '250g' },
    // { name: '片栗粉', amount: '大さじ2' },
    // { name: '緑黄色野菜 (ピーマン、パプリカ、にんじんなど)', amount: '300g' },
    // { name: '白菜', amount: '300g' }
    // ]
    // === A ===
    // [
    // { name: '酒', amount: '大さじ4' },
    // { name: '薄口しょうゆ', amount: '小さじ2' },
    // { name: '鶏がらスープの素(顆粒)', amount: '小さじ2' },
    // { name: '塩、こしょう', amount: '各少々' }
    // ]

    Keywords

    none

    Install

    npm i @mecab/hotcook

    DownloadsWeekly Downloads

    2

    Version

    1.0.6

    License

    MIT

    Unpacked Size

    22.9 kB

    Total Files

    14

    Last publish

    Collaborators

    • mecab