20210612のNode.jsに関する記事は8件です。

プログラミングは英語圏の人が圧倒的に有利、もはや卑怯なレベル

プログラマーへの道、備忘録 略歴 90年代のAppleとAdobeのDTP革命の熱に浮かされて、薬科大学を中退後、グラフィックとウェブデザインを独学し、フリーランスとしてウェブ系の仕事を5年ほどしつつ、その後はモノ作り中心のデザイナーに転身。 ITエンジニアとしてビリオネアとなったドイツ人投資家との縁で、彼の所有する外資系リゾートにて支配人として10年ほど働く。 が、コロナの厄災にて観光業が壊滅。失業状態。 非常事態宣言下のフィリピンにて巣ごもり中にITプロジェクトへのオファーと、数ヶ月の自習期間を与えられる。 20年ぶりに見るWEB開発のノウハウは、HTML、CSS、PERLでコツコツ書いていた20年前とは別世界であり、戦後からタイムスリップした様な気分で、ゼロから勉強し直さないと全くついて行けないと絶望する。 自習とは自分との戦いである。 モチベーションを保つ為と、学んだことを整理する目的で、自分の為に記事を書いていこうと思います。 プロジェクトに必要なスキルは Linux node.js express mongoDB bootstrap OAuth React この辺を復習がてら備忘録として書いていこうかな。 英語にてプログラミングを学び直した結果 90年代に主にフロントエンドのサイトデザインをしていて、動的なものを作る際に、PERLやJAVASCRIPT等をオライリー本(もちろん日本語訳)で勉強していた時は、挫折、再開を繰り返し、結局はほとんど身につかず、人のコードをコピーして少し書き直す程度で茶を濁していた訳だけど、海外の会社にて10年あまり働き、英語のソースをベースに勉強を始めた結果、わかり易すぎて目から鱗であった。 気づいたのは、プログラミングが分かりにくい大きな原因が、訳された日本語がムズすぎる問題である。 正規表現、連想配列、関数、引数、実行形式、コンパイル とかめちゃ分かりにくいし、本を開いてこういう単語がいっぱい出てきた時点で読む気失せるよね。 単語からそれがなんなのかが全くイメージできへんやん。 英語だと、その言葉のままやねん!当たり前だけど。なので、非英語圏の人は、まずその言葉がなんなのかを理解しないとしけないっていうので、大きなディスアドバンテージ。 その言葉を調べると、その言葉を説明するさらに知らない言葉が出てきて、さらにそれを調べるとさらに。。。という無限ループに陥り、挫折。 プログラミングが難しい というより、プログラミング用語を日本語訳した言葉が難しい。っていうのはあるんじゃないかと思う。プログラミングそのものじゃなくて、単に言葉の問題。 その次は、英語でのリファレンスやソース、チュートリアルの多さ。 とにかく情報量が日本語と比べて圧倒的に多い。 公式のドキュメントやチュートリアルは勿論ほぼ英語、インド人やロシア人プログラマーとかでも、情報発信は勿論英語。Youtubeでも怪しげなインド人が超わかりやすいデータベースのチュートリアルをしていたりする。 例えばnode.jsでよく使われる、エラーと返ってきたデータとを引数とするコールバックがあって、それについて調べたとき、日本語ではほとんど出てこないんだけど、英語では色々な人が解説していて、圧倒的に情報量が違う。stack overflowみたいなエンジニア系の掲示板とかも賑わってる。 つまり、英語圏のプログラマーと、非英語圏のプログラマーでは、もう圧倒的に後者不利であって、英語圏のプログラマーはチートレベル。プログラミングの能力以前に難解な日本語訳された用語との戦いがあり、ある意味それってあんまり本質的ではないよねと。 コーディングで挫折しそうな人は、自分はコーディングの才能がないのではなく、よくわからない用語がわからないだけではないかと考えて、少し英語を習ってみると良いのではないかと思います。言語はプログラミング以上に人生に役立つしね。
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

【Node.js】https と fs で、ファイルをダウンロードする

環境 $ node -v v16.2.0 $ yarn info https version 1.0.0 $ yarn info fs version 0.0.1-security $ yarn info typescript version 4.3.2 コード 使いやすいようにPromiseを併用しています。 コードは TypeScriptなので、JavaScriptの場合は型定義を消してください。 const download = (uri: string, filename: string) => { return new Promise<void>((resolve, reject) => https .request(uri, (res) => { res .pipe(createWriteStream(filename)) .on("close", resolve) .on("error", reject); }) .end() ); }; download( "https://cdn2.bulbagarden.net/upload/thumb/8/88/006Charizard-Gigantamax.png/600px-006Charizard-Gigantamax.png", "Charizard-gmax.png" ).then(() => console.log("done")); ローカルに Charizard-gmax.png というファイルがダウンロードできているのが確認できます。 かんたんな解説 res.pipe は引数に stream.Writable オブジェクト (今回の場合は fs.createWriteStream ) を指定することで、そのオブジェクトにすべてのデータを自動で流し込んでくれます。 参考 Stream | Node.js v16.3.0 Documentation File system | Node.js v16.3.0 Documentation How to use fs.createWriteStream? | Node.js
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

[AWS]LambdaからLambdaを呼ぶIAMロール設定とnode.js実装メモ

やりたいこと AWSにてLambda関数を2つ作成する。 1つ目のLambda関数が呼ばれたら、その関数内から2つ目のLambda関数を呼び出す。 1つ目のLambda関数は、2つ目のLambda関数から戻り値が返ってくるまでは終了しない。 Lambda関数用IAMロールとポリシー 下記のIAMロールを作成する。 AWSマネジメントコンソール、IAM設定画面にて、「ロールの作成」を押す。 「AWSサービス」ユースケース「Lambda」を選択し「次のステップ:アクセス権限」を押す。 「ポリシーの作成」を押す。 「JSON」タブを選択し、下記を実装する。 { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "cloudwatch:*", "logs:*", "lambda:*" ], "Resource": "*" }, { "Effect": "Allow", "Action": "iam:PassRole", "Resource": "*", "Condition": { "StringEquals": { "iam:PassedToService": "lambda.amazonaws.com" } } }, { "Effect": "Allow", "Action": [ "logs:DescribeLogStreams", "logs:GetLogEvents", "logs:FilterLogEvents" ], "Resource": "arn:aws:logs:*:*:log-group:/aws/lambda/*" } ] } 「次のステップ:タグ」を押す。 タグの設定は任意なので、不要ならそのまま「次のステップ:確認」を押す。 任意のポリシー名を記入する。 ここでは下記を入力する。 ポリシー名 LambdaPolicyYamatoSample210612a 説明は空欄のままで問題ない。 「ポリシーの作成」ボタンを押す。 下記の表示にて、ポリシーが作成されたことを確認する。 このポリシー「LambdaPolicyYamatoSample210612a」を、 ロールの作成画面にて割り当てる。 ポリシーのフィルタで「LambdaPolicyYamatoSample210612a」を検索して選択する。 チェックを入れて「次のステップ:タグ」を押す。 タグの追加は任意なので、不要なら「次のステップ:確認」を押す。 任意のロール名で作成する。今回は下記で作成する。ロール名を入力し「ロールの作成」ボタンを押す。 LambdaRoleYamatoSample210612a 下記の表示にて、ロールが作成されたことを確認する。 以上で、ポリシー「LambdaPolicyYamatoSample210612a」が割り当てられたロール「LambdaRoleYamatoSample210612a」が作成された。 このロールをLambda関数に適用する。 Lambda関数の作成 1つ目の関数を作成 AWSマネジメントコンソールのLambda画面にて「関数の作成」を押す。 下記の通り作成する。 「一から作成」を選ぶ。 関数名は任意。今回は yamatoSampleLambdaFunction210612a とする。 ランタイムは Node.js 14.x とする。 アクセス権限は「既存のロールを使用する」を選び、先ほど作成したロール「LambdaRoleYamatoSample210612a」を適用する。 「関数の作成」ボタンを押す。 下記の表示で、Lambda関数が作成されたことを確認する。 2つ目の関数を作成 同様の手順で、2つ目の関数を作成する。 関数名は任意だが、今回は yamatoSampleLambdaFunction210612b とする。 以上で、2つのLambda関数 yamatoSampleLambdaFunction210612a yamatoSampleLambdaFunction210612b が作成された。 各関数にログ出力処理を仕込む それぞれの関数が起動した際、動いたことが分かるように、ログ出力をコードに埋め込む。 各関数の index.js に下記を実装する。 コードを修正したら「Deploy」ボタンを押す。 関数A yamatoSampleLambdaFunction210612a console.log("関数A「yamatoSampleLambdaFunction210612a」が呼ばれました。"); 関数B yamatoSampleLambdaFunction210612b console.log("関数B「yamatoSampleLambdaFunction210612b」が呼ばれました。"); 各関数をテスト実行してログが出力されることを確認する 関数を試しに動かしてみる。「テスト」を押す。 「新しいテストイベントの作成」で、イベントテンプレートは「hello-world」を選択する。 任意のイベント名を入力する。 ここでは yamatoTestEventA とする。 「作成」ボタンを押す。 この状態で「テスト」ボタンを押すと、Lambda関数が実行される。 ログが出力されているかどうか確認する。 「モニタリング」タブを選び、「CloudWatchのログを表示」を押す。 ログストリームのリンクをクリックする。 詳細を確認する。ログが出力されている。 つまり、関数Aが起動すると、ログが出力される、ということが確認できた。 同様の手順で関数Bも動かして、関数Bのログも出力されることを確認する。 以上で、関数AとB、それぞれを動かして、ログが出力されることが確認できた。 関数AからBを呼び出す 関数AからBを呼び出すには、 関数Aの index.js に下記を実装する。 const AWS = require('aws-sdk'); const lambda = new AWS.Lambda(); exports.handler = async (event) => { console.log("関数A「yamatoSampleLambdaFunction210612a」が呼ばれました。"); let payload = { "message":"関数Bへ渡したい文字列があればここに記入する。", } // ペイロードをStringにする。 payload = JSON.stringify(payload); let params = { FunctionName:"yamatoSampleLambdaFunction210612b", InvocationType:"RequestResponse", Payload:payload } let callLambda = ''; try { // Lambda関数Bを呼び出す。 callLambda = await lambda.invoke(params).promise(); } catch (e) { console.log("[ERROR]関数呼び出し失敗!",e) } const response = { statusCode: 200, body: JSON.stringify('Hello from Lambda!'), }; return response; }; 解説 let params の FunctionName に、呼び出し先のLambda関数名を指定する。 payload で呼び出し先の関数へパラメータを渡すこともできる。 動作確認 「テスト」を押して関数Aを動かし、ログが出力されることを確認する。 関数Aが起動すれば、関数Aが関数Bを呼び出すので、結果として関数Bのログも出力される。 関数Bのログを確認する。たしかに出力されている。つまり関数Aが関数Bを呼び出すことに成功している。 関数Aから関数Bへパラメータを渡して戻り値を返してもらう 関数Aから関数Bを呼び出す際、 引数を渡して、関数Bで受け取り、 何らかの処理をした結果を関数Aに戻す。 その場合、下記の実装にする。 関数A index.js const AWS = require('aws-sdk'); const lambda = new AWS.Lambda(); exports.handler = async (event) => { console.log("関数A「yamatoSampleLambdaFunction210612a」が呼ばれました。"); let payload = { "id": 1234, "name": "Kenichiro-Yamato", "message": "こんにちは。私の名前は大和賢一郎です。関数Aから渡されました。", } // ペイロードをStringにする。 payload = JSON.stringify(payload); let params = { FunctionName:"yamatoSampleLambdaFunction210612b", InvocationType:"RequestResponse", Payload:payload } let callLambda = ''; try { // Lambda関数Bを呼び出す。 callLambda = await lambda.invoke(params).promise(); console.log("関数Bからの戻り値: " + JSON.stringify(callLambda)); } catch (e) { console.log("[ERROR]関数呼び出し失敗!",e) } const response = { statusCode: 200, body: JSON.stringify('Hello from Lambda!'), }; return response; }; 関数B index.js exports.handler = async (event, body, context) => { console.log("関数B「yamatoSampleLambdaFunction210612b」が呼ばれました。関数Aから次のパラメータを渡されました。"); console.log(JSON.stringify({event: event, body: body, context: context}, null, 2)); const response = { statusCode: 200, message: '関数Aさんへ。私は関数Bです。パラメータ受け取りました。ありがとう。', event: event, }; return response; }; ログは下記の通り。パラメータの受け渡しと戻り値の返しが正常に実行されている。 関数Aのログ 関数Bのログ
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

DockerでNode.jsのインストールに失敗する

Dockerでdocker compose up --buildした際に node-jsをインストールするとこでエラーが出たので、再発用に残しておきます。 エラー箇所 Dockerfile内 RUN apt-get install -y gnupg \ && curl -sL https://deb.nodesource.com/setup_10.x | bash - \ && apt-get install -y nodejs エラー内容 Error executing command, exiting 対処法 STEP1 エラー箇所をコメントアウト # RUN apt-get install -y gnupg \ # && curl -sL https://deb.nodesource.com/setup_10.x | bash - \ # && apt-get install -y nodejs STEP2 docker compose up --buildを再度実行 STEP3 dockerコンテナに入る docker exec -ti コンテナ名 bash STEP4 ソースの削除 rm -rf /var/lib/apt/lists/* rm -rf /etc/apt/sources.list.d/* apt-get update 参考:https://askubuntu.com/questions/1141035/error-executing-command-exiting (sudoがあると怒られたので、sudoなしで実行) STEP5 コメントアウトしたコマンドを実行 RUN apt-get install -y gnupg curl -sL https://deb.nodesource.com/setup_10.x | bash - apt-get install -y nodejs 完了 理由については、まだよくわかってませんが、とりあえず動くようにはなりました!
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

Node.js(Express)を使用してCloudinaryに画像をアップロード・更新する

Cloudinaryに画像をアップするには、まずはcloudinaryとmulterをインストールします。 npm i cloudinary multer 続いてCloudinaryのWebサイトにログインし、ダッシュボードのアカウント詳細欄にある「クラウド名・APIキー・APIシークレット」の値をコピーする。そして.envファイルを作成し、それぞれの変数にコピーした値を代入します。 .env CLOUD_NAME=クラウド名 API_KEY=APIキー API_SECRET=APIシークレット 今度はutilsフォルダーを作成し、このフォルダー内にcloudinary.jsとmulter.jsファイルを作成します。 それぞれのファイルの中身は次のようになります。 cloudinary.js const cloudinary = require("cloudinary").v2; cloudinary.config({ cloud_name: process.env.CLOUD_NAME, api_key: process.env.API_KEY, api_secret: process.env.API_SECRET, }); module.exports = cloudinary; multer.js const multer = require("multer"); const path = require("path"); // Multer config module.exports = multer({ storage: multer.diskStorage({}), fileFilter: (req, file, cb) => { let ext = path.extname(file.originalname); if (ext !== ".jpg" && ext !== ".jpeg" && ext !== ".png") { cb(new Error("File type is not supported"), false); return; } cb(null, true); }, }); 2つのファイルの記述が終わったらindex.jsに移動し、ファイルのパスを作成します。 index.js app.use('/user', require('./routes/user')) 上で通したパスのファイルを作成します。routesフォルダーを作成し、その中にuser.jsファイルを作成します。ファイルの中は、以下の通りです。 user.js const router = require("express").Router(); const cloudinary = require("../utils/cloudinary"); const upload = require("../utils/multer"); const User = require("../model/user"); router.post("/", upload.single("image"), async (req, res) => { try { // Upload image to cloudinary const result = await cloudinary.uploader.upload(req.file.path); // Create new user let user = new User({ name: req.body.name, avatar: result.secure_url, cloudinary_id: result.public_id, }); // Save user await user.save(); res.json(user); } catch (err) { console.log(err); }}); module.exports = router; cloudinary.uploader.uploadを画像をアプロードする記述になります。cloudinaryから帰ってきたレスポンスにはsecure_urlとpublic_idが含まれているので、avatarとcloudinary_idに保存します。 cloudinaryにアップしている画像を更新するにはputではなく、cloudinary_idを指定して削除し、再度アップする処理が必要となります。 具体的には次のようになります。 // まずcloudinary上の画像を指定して削除 cloudinary.uploader.destroy(user.cloudinary_id) // 再度画像をアップロード cloudinary.uploader.upload() これでNode.jsからCloudinaryへの画像のアップロード・更新は完璧です! 参照 https://dev.to/itsmefarhan/cloudinary-files-images-crud-operations-with-nodejs-express-multer-2147 **
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

Node.jsの概要<基本のき>

Node.jsとは Node.jsについて ・JavaScriptの実行環境 →つまり、Mac、Linux,WindowsなどのOSに依存せずにJavaScriptを実行することができる →ソースコードを理解して実行するものが、実行エンジンという →そのソースコードを理解するための言語が、ECMAScript(JS)で書かれている npmについて ・JavaScriptに向けたパッケージマネージャー →数多くのモジュールを管理してくれるもの Node.jsの特徴 ・シングルスレッド →一つのリクエストに対して、一つのリスポンスを返す。 →つまり、一度に複数のリクエストが来ても、一つのスレッドが完了しなければ新たなスレッドは立たない ・ノンブロッキングI/O →メインプロセスを止めずに、他の処理を行うことができる →つまり、非同期処理のこと ・イベント駆動 →一つのイベントに対して、処理を実行する Node.jsを使用するには ・任意のプロジェクト(ファイル)とその中にpackage.jsonがあればOK →任意のファイルに移動して、npm initをコマンドプロンプトで入力すれば終了
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

YoutubeをAPI Key不要で検索するnode-ytsrの説明文を読み解く

プロトアウトスタジオの卒業制作では「Youtube動画内テキスト検索」(別名:気づいたらYoutube観て1日が終わってた撲滅システム)」を作ろうとしています。 同じ課題感を持っている方には使っていただけるようにしますので、応援いただけますと幸いです。 なにはなくともYoutubeに検索単語を入れて、URLを返してもらうのは必要なのでGitHubでそれを調べました。 今回はログインやGoogle-API-Keyを必要としないnode-ytsrを読み解いていきます。 node-ytsr ダウンロード数は27万回。 更新状況も良さそう。(4月26日更新 v3.5.0) discordのサポートチャンネルもあり、信用できそうです。 では、読んでいきます。 DL翻訳を使ったあとに英文も読んではいますが、英語は勉強中なので信用しきらないようにお願いします。m(__)m Simple js only package to search for Youtube for Videos, Playlists and many more. Does not require any login or Google-API-Key. Youtubeの動画やプレイリストなどを検索するシンプルなjsのみのパッケージです。ログインやGoogle-API-Keyを必要としません。 const ytsr = require('ytsr'); const searchResults = await ytsr('github'); dosth(searchResults); ytsr(searchString, [options]) Searches for the given string 与えられた文字列を検索する searchString 検索文字列 search string or url (from getFilters) to search from 検索文字列、または検索対象となるURL(getFiltersから)。 options オプション object with options オプションを持つオブジェクト possible settings: 可能な設定 gl[String] -> 2-Digit Code of a Country, defaults to US - Allows for localisation of the request gl[String] -> 国の2桁のコード、デフォルトはUS - リクエストのローカライズを可能にします。 hl[String] -> 2-Digit Code for a Language, defaults to en - Allows for localisation of the request hl[String] -> 言語を表す2桁のコード、デフォルトはen - リクエストのローカライズを可能にします。 safeSearch[Boolean] -> pull items in youtube restriction mode. safeSearch[Boolean] -> youtube制限モードでアイテムを引き出します。 limit[integer] -> limits the pulled items, defaults to 100, set to Infinity to get the whole list of search results - numbers <1 result in the default being used limit[integer] -> 引っ張るアイテムを制限します。デフォルトは100で、Infinityに設定すると検索結果の全リストを取得します - 数値が1未満の場合はデフォルトが使用されます。 pages[Number] -> limits the pulled pages, pages contain 20-30 items, set to Infinity to get the whole list of search results - numbers <1 result in the default limit being used - overwrites limit pages[Number] -> 抽出されるページを制限します。ページには20~30のアイテムが含まれ、Infinityに設定すると検索結果の全リストが表示されます。 requestOptions[Object] -> Additional parameters to passed to miniget, which is used to do the https requests requestOptions[Object] -> httpsリクエストを行うために使用されるminigetに渡される追加のパラメータです。 returns a Promise  Promiseを返します。 Example response 応答の例 ytsr.getFilters(searchString, options) Pulls avaible filters for the given string or link 指定された文字列またはリンクに対する利用可能なフィルタを取得します。 const ytsr = require('ytsr'); const filters1 = await ytsr.getFilters('github'); const filter1 = filters1.get('Type').get('Video'); const filters2 = await ytsr.getFilters(filter1.url); const filter2 = filters2.get('Features').get('Live'); const options = { pages: 2, } const searchResults = await ytsr(filter2.url, options); dosth(searchResults); searchString 検索文字列 string to search for 検索対象の文字列 or previously optained filter ref または以前に取得したフィルタの参照 options オプション gl[String] -> 2-Digit Code of a Country, defaults to US - Allows for localisation of the request gl[String] -> 国の2桁のコード、デフォルトはUS - リクエストのローカライズを可能にします。 hl[String] -> 2-Digit Code for a Language, defaults to en - Allows for localisation of the request hl[String] -> 言語を表す2桁のコード、デフォルトはen - リクエストのローカライズを可能にします。 requestOptions[Object] -> Additional parameters to passed to miniget, which is used to do the https requests requestOptions[Object] -> httpsリクエストに使用されるminigetに渡される追加パラメータ returns a Promise resulting in a Map> Map>になったPromiseを返します。 Example response ytsr.continueReq(continuationData) Continues a previous request by pulling yet another page. 前回のリクエストの続きで、さらに別のページを引きます。 The previous request had to be done using pages limitation. 前のリクエストは、ページ数制限を使って行う必要がありました。 var ytsr = require('ytsr'); const search = await ytsr('github', { pages: 1 }); display(search.items); const r2 = ytsr.continueReq(search.continuation); display(r2.items); const r3 = ytsr.continueReq(r2.continuation); display(r3.items); returns a Promise resolving into { continuation, items } は、{ continuation, items }に解決するPromiseを返します。 Install インストール npm install --save ytsr
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

YoutubeをAPI Key不要で検索するnode-ytsrの説明文を翻訳した

プロトアウトスタジオの卒業制作では「Youtube動画内テキスト検索」(別名:気づいたらYoutube観て1日が終わってた撲滅システム)」を作ろうとしています。 同じ課題感を持っている方には使っていただけるようにしますので、応援いただけますと幸いです。 なにはなくともYoutubeに検索単語を入れて、URLを返してもらうのは必要なのでGitHubでそれを調べました。 今回はログインやGoogle-API-Keyを必要としないnode-ytsrを読み解いていきます。 node-ytsr ダウンロード数は27万回。 更新状況も良さそう。(4月26日更新 v3.5.0) discordのサポートチャンネルもあり、信用できそうです。 では、読んでいきます。 DL翻訳を使ったあとに英文も読んではいますが、英語は勉強中なので信用しきらないようにお願いします。m(__)m Simple js only package to search for Youtube for Videos, Playlists and many more. Does not require any login or Google-API-Key. Youtubeの動画やプレイリストなどを検索するシンプルなjsのみのパッケージです。ログインやGoogle-API-Keyを必要としません。 const ytsr = require('ytsr'); const searchResults = await ytsr('github'); dosth(searchResults); ytsr(searchString, [options]) Searches for the given string 与えられた文字列を検索する searchString 検索文字列 search string or url (from getFilters) to search from 検索文字列、または検索対象となるURL(getFiltersから)。 options オプション object with options オプションを持つオブジェクト possible settings: 可能な設定 gl[String] -> 2-Digit Code of a Country, defaults to US - Allows for localisation of the request gl[String] -> 国の2桁のコード、デフォルトはUS - リクエストのローカライズを可能にします。 hl[String] -> 2-Digit Code for a Language, defaults to en - Allows for localisation of the request hl[String] -> 言語を表す2桁のコード、デフォルトはen - リクエストのローカライズを可能にします。 safeSearch[Boolean] -> pull items in youtube restriction mode. safeSearch[Boolean] -> youtube制限モードでアイテムを引き出します。 limit[integer] -> limits the pulled items, defaults to 100, set to Infinity to get the whole list of search results - numbers <1 result in the default being used limit[integer] -> 引っ張るアイテムを制限します。デフォルトは100で、Infinityに設定すると検索結果の全リストを取得します - 数値が1未満の場合はデフォルトが使用されます。 pages[Number] -> limits the pulled pages, pages contain 20-30 items, set to Infinity to get the whole list of search results - numbers <1 result in the default limit being used - overwrites limit pages[Number] -> 抽出されるページを制限します。ページには20~30のアイテムが含まれ、Infinityに設定すると検索結果の全リストが表示されます。 requestOptions[Object] -> Additional parameters to passed to miniget, which is used to do the https requests requestOptions[Object] -> httpsリクエストを行うために使用されるminigetに渡される追加のパラメータです。 returns a Promise  Promiseを返します。 Example response 応答の例 ytsr.getFilters(searchString, options) Pulls avaible filters for the given string or link 指定された文字列またはリンクに対する利用可能なフィルタを取得します。 const ytsr = require('ytsr'); const filters1 = await ytsr.getFilters('github'); const filter1 = filters1.get('Type').get('Video'); const filters2 = await ytsr.getFilters(filter1.url); const filter2 = filters2.get('Features').get('Live'); const options = { pages: 2, } const searchResults = await ytsr(filter2.url, options); dosth(searchResults); searchString 検索文字列 string to search for 検索対象の文字列 or previously optained filter ref または以前に取得したフィルタの参照 options オプション gl[String] -> 2-Digit Code of a Country, defaults to US - Allows for localisation of the request gl[String] -> 国の2桁のコード、デフォルトはUS - リクエストのローカライズを可能にします。 hl[String] -> 2-Digit Code for a Language, defaults to en - Allows for localisation of the request hl[String] -> 言語を表す2桁のコード、デフォルトはen - リクエストのローカライズを可能にします。 requestOptions[Object] -> Additional parameters to passed to miniget, which is used to do the https requests requestOptions[Object] -> httpsリクエストに使用されるminigetに渡される追加パラメータ returns a Promise resulting in a Map> Map>になったPromiseを返します。 Example response ytsr.continueReq(continuationData) Continues a previous request by pulling yet another page. 前回のリクエストの続きで、さらに別のページを引きます。 The previous request had to be done using pages limitation. 前のリクエストは、ページ数制限を使って行う必要がありました。 var ytsr = require('ytsr'); const search = await ytsr('github', { pages: 1 }); display(search.items); const r2 = ytsr.continueReq(search.continuation); display(r2.items); const r3 = ytsr.continueReq(r2.continuation); display(r3.items); returns a Promise resolving into { continuation, items } は、{ continuation, items }に解決するPromiseを返します。 Install インストール npm install --save ytsr
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む