品質と言語フィルタリングに基づく自動 Sonarr 欠落エピソード検出器
中級
これはPersonal Productivity分野の自動化ワークフローで、10個のノードを含みます。主にIf, Set, Code, SplitOut, HttpRequestなどのノードを使用。 品質および言語フィルター付きでSonarrで手がかりのあるエピソードを検索する自動化
前提条件
- •ターゲットAPIの認証情報が必要な場合あり
カテゴリー
ワークフロープレビュー
ノード接続関係を可視化、ズームとパンをサポート
ワークフローをエクスポート
以下のJSON設定をn8nにインポートして、このワークフローを使用できます
{
"meta": {
"instanceId": "524db9d6f45a6821f11407ee382e8ef798434d93ef64e0c8c3a108540b9322a6"
},
"nodes": [
{
"id": "b7575322-a8cd-48b1-8989-59e8c10f3fb3",
"name": "情報",
"type": "n8n-nodes-base.set",
"position": [
-220,
100
],
"parameters": {
"options": {},
"assignments": {
"assignments": [
{
"id": "e03dba6d-c6c4-407b-b65b-15aacb8a4a32",
"name": "urlSonar",
"type": "string",
"value": "http://192.168.31.204:8989"
},
{
"id": "976f2fe4-2d27-43f7-8fba-5f992ab0894e",
"name": "apikey",
"type": "string",
"value": "j7oi8oiji7yih85765tg646ghft6ffd6"
},
{
"id": "00cdb214-7b97-4037-aca9-36569403b340",
"name": "quality",
"type": "string",
"value": "WEBDL-1080p"
},
{
"id": "01c442c9-3ecb-43b1-a112-3cd41c62b232",
"name": "languages",
"type": "string",
"value": "Portuguese (Brazil)"
}
]
}
},
"typeVersion": 3.4
},
{
"id": "bdd74c08-4891-4c55-81a6-1da3c72e8ef5",
"name": "フィールド編集",
"type": "n8n-nodes-base.set",
"position": [
220,
100
],
"parameters": {
"options": {},
"assignments": {
"assignments": [
{
"id": "598bf523-e5f2-4976-9b66-35e2918d9bdd",
"name": "records",
"type": "array",
"value": "={{ $json.records }}"
}
]
}
},
"typeVersion": 3.4
},
{
"id": "8b898b4a-8a53-48cc-8917-2c406e64c95f",
"name": "分割出力",
"type": "n8n-nodes-base.splitOut",
"position": [
440,
100
],
"parameters": {
"options": {},
"fieldToSplitOut": "records"
},
"typeVersion": 1
},
{
"id": "117443a3-7a83-4c50-a4af-693c11dd6e3c",
"name": "スケジュールトリガー",
"type": "n8n-nodes-base.scheduleTrigger",
"position": [
-440,
100
],
"parameters": {
"rule": {
"interval": [
{
"field": "hours",
"hoursInterval": 12
}
]
}
},
"typeVersion": 1.2
},
{
"id": "55253fdd-9f78-428d-8fd4-d5f4b74c78ef",
"name": "オーバーライドしてダウンロードキューに追加",
"type": "n8n-nodes-base.httpRequest",
"onError": "continueErrorOutput",
"maxTries": 3,
"position": [
1100,
-100
],
"parameters": {
"url": "={{ $('info').item.json.urlSonar }}/api/v3/release",
"method": "POST",
"options": {},
"jsonBody": "={{ \n JSON.stringify({\n indexerId: $('Loop Over Items').item.json.indexerId,\n guid: $('Loop Over Items').item.json.guid,\n seriesId: $('Loop Over Items').item.json.mappedSeriesId,\n episodeIds: $('Loop Over Items').item.json.mappedEpisodeInfo.map(e => e.id),\n quality: {\n quality: {\n id: $('Loop Over Items').item.json.quality.quality.id,\n name: $('Loop Over Items').item.json.quality.quality.name,\n source: $('Loop Over Items').item.json.quality.quality.source,\n resolution: $('Loop Over Items').item.json.quality.quality.resolution\n },\n revision: {\n version: $('Loop Over Items').item.json.quality.revision.version,\n real: $('Loop Over Items').item.json.quality.revision.real,\n isRepack: $('Loop Over Items').item.json.quality.revision.isRepack\n }\n },\n languages: [\n {\n id: $('Loop Over Items').item.json.languages[0].id,\n name: $('Loop Over Items').item.json.languages[0].name\n }\n ],\n downloadClientId: null,\n shouldOverride: true\n })\n}}\n",
"sendBody": true,
"sendQuery": true,
"specifyBody": "json",
"queryParameters": {
"parameters": [
{
"name": "apikey",
"value": "={{ $('info').item.json.apikey }}"
},
{}
]
}
},
"retryOnFail": true,
"typeVersion": 4.2,
"alwaysOutputData": false
},
{
"id": "da00208f-c5f7-4276-8c66-af5566e387ad",
"name": "このシーズンの全エピソードのインタラクティブ検索",
"type": "n8n-nodes-base.httpRequest",
"position": [
1100,
100
],
"parameters": {
"url": "={{ $('info').item.json.urlSonar }}/api/v3/release",
"options": {},
"sendQuery": true,
"queryParameters": {
"parameters": [
{
"name": "seriesId",
"value": "={{ $('Split Out').item.json.seriesId }}"
},
{
"name": "seasonNumber",
"value": "={{ $('Split Out').item.json.seasonNumber }}"
},
{
"name": "apikey",
"value": "={{ $('info').item.json.apikey }}"
}
]
}
},
"executeOnce": true,
"notesInFlow": false,
"typeVersion": 4.2
},
{
"id": "df7c8bf5-ecc7-4af7-8668-6c47cc86bdf9",
"name": "欠落エピソードの確認",
"type": "n8n-nodes-base.httpRequest",
"position": [
0,
100
],
"parameters": {
"url": "={{ $('info').item.json.urlSonar }}/api/v3/wanted/missing",
"options": {},
"sendQuery": true,
"sendHeaders": true,
"queryParameters": {
"parameters": [
{
"name": "page",
"value": "1"
},
{
"name": "pageSize",
"value": "100"
},
{
"name": "sortDirection",
"value": "descending"
},
{
"name": "includeSeries",
"value": "false"
},
{
"name": "includeImages",
"value": "false"
},
{
"name": "monitored",
"value": "true"
},
{
"name": "apikey",
"value": "={{ $('info').item.json.apikey }}"
}
]
},
"headerParameters": {
"parameters": [
{
"name": "accept",
"value": "application/json"
}
]
}
},
"executeOnce": false,
"typeVersion": 4.2
},
{
"id": "971e172b-1961-41b3-ad0b-0936e7a2c591",
"name": "品質と言語の一致を検証",
"type": "n8n-nodes-base.if",
"position": [
1320,
175
],
"parameters": {
"options": {},
"conditions": {
"options": {
"version": 2,
"leftValue": "",
"caseSensitive": true,
"typeValidation": "strict"
},
"combinator": "and",
"conditions": [
{
"id": "faa46e5b-40ef-4200-9827-50e7d7666f24",
"operator": {
"name": "filter.operator.equals",
"type": "string",
"operation": "equals"
},
"leftValue": "={{ $json.quality.quality.name }}",
"rightValue": "={{ $('info').item.json.quality }}"
},
{
"id": "6caeb8cc-f152-497b-9f6b-4a6526c3df00",
"operator": {
"name": "filter.operator.equals",
"type": "string",
"operation": "equals"
},
"leftValue": "={{ $json.languages[0].name }}",
"rightValue": "={{ $('info').item.json.languages }}"
}
]
}
},
"executeOnce": false,
"typeVersion": 2.2
},
{
"id": "7ef44e0f-65a9-4579-9599-de626165d022",
"name": "シリーズをフィルター",
"type": "n8n-nodes-base.code",
"position": [
660,
100
],
"parameters": {
"jsCode": "const seenSeasons = new Set();\nconst uniqueItems = [];\n\nfor (const item of $input.all()) {\n const key = `${item.json.seriesId}-${item.json.seasonNumber}`;\n\n if (!seenSeasons.has(key)) {\n item.json.myNewField = 1;\n uniqueItems.push(item);\n seenSeasons.add(key);\n }\n}\n\nuniqueItems.sort((a, b) => {\n if (a.json.seriesId !== b.json.seriesId) {\n return a.json.seriesId - b.json.seriesId;\n }\n return a.json.seasonNumber - b.json.seasonNumber;\n});\n\nreturn uniqueItems;"
},
"typeVersion": 2
},
{
"id": "3bf70dc2-c110-44b8-a9b1-59c3f8ce7e01",
"name": "アイテムをループ処理",
"type": "n8n-nodes-base.splitInBatches",
"position": [
880,
100
],
"parameters": {
"options": {}
},
"typeVersion": 3
}
],
"pinData": {},
"connections": {
"b7575322-a8cd-48b1-8989-59e8c10f3fb3": {
"main": [
[
{
"node": "df7c8bf5-ecc7-4af7-8668-6c47cc86bdf9",
"type": "main",
"index": 0
}
]
]
},
"8b898b4a-8a53-48cc-8917-2c406e64c95f": {
"main": [
[
{
"node": "7ef44e0f-65a9-4579-9599-de626165d022",
"type": "main",
"index": 0
}
]
]
},
"bdd74c08-4891-4c55-81a6-1da3c72e8ef5": {
"main": [
[
{
"node": "8b898b4a-8a53-48cc-8917-2c406e64c95f",
"type": "main",
"index": 0
}
]
]
},
"7ef44e0f-65a9-4579-9599-de626165d022": {
"main": [
[
{
"node": "3bf70dc2-c110-44b8-a9b1-59c3f8ce7e01",
"type": "main",
"index": 0
}
]
]
},
"3bf70dc2-c110-44b8-a9b1-59c3f8ce7e01": {
"main": [
[
{
"node": "55253fdd-9f78-428d-8fd4-d5f4b74c78ef",
"type": "main",
"index": 0
}
],
[
{
"node": "da00208f-c5f7-4276-8c66-af5566e387ad",
"type": "main",
"index": 0
}
]
]
},
"117443a3-7a83-4c50-a4af-693c11dd6e3c": {
"main": [
[
{
"node": "b7575322-a8cd-48b1-8989-59e8c10f3fb3",
"type": "main",
"index": 0
}
]
]
},
"df7c8bf5-ecc7-4af7-8668-6c47cc86bdf9": {
"main": [
[
{
"node": "bdd74c08-4891-4c55-81a6-1da3c72e8ef5",
"type": "main",
"index": 0
}
]
]
},
"55253fdd-9f78-428d-8fd4-d5f4b74c78ef": {
"main": [
[],
[]
]
},
"971e172b-1961-41b3-ad0b-0936e7a2c591": {
"main": [
[
{
"node": "3bf70dc2-c110-44b8-a9b1-59c3f8ce7e01",
"type": "main",
"index": 0
}
],
[]
]
},
"da00208f-c5f7-4276-8c66-af5566e387ad": {
"main": [
[
{
"node": "971e172b-1961-41b3-ad0b-0936e7a2c591",
"type": "main",
"index": 0
}
]
]
}
}
}よくある質問
このワークフローの使い方は?
上記のJSON設定コードをコピーし、n8nインスタンスで新しいワークフローを作成して「JSONからインポート」を選択、設定を貼り付けて認証情報を必要に応じて変更してください。
このワークフローはどんな場面に適していますか?
中級 - 個人の生産性
有料ですか?
このワークフローは完全無料です。ただし、ワークフローで使用するサードパーティサービス(OpenAI APIなど)は別途料金が発生する場合があります。
関連ワークフロー
LinkedInジョブ検索
LinkedIn求人検索:履歴書自動照合(GPT/Gemini)+カバーレタージェネレーター+Telegram通知
If
Set
Code
+
If
Set
Code
33 ノードHojjat Jashnniloofar
個人の生産性
複数の採用サイトからの求人情報の自動化
5 つの求人プラットフォームと AI リジュームジェネレーターを使った就職・応募の自動化
If
Set
Code
+
If
Set
Code
34 ノードGerald Denor
個人の生産性
AIを使った求人情報の自動検索
Google Jobs、RemoteOK、GPT-3.5 を使ってAIの求人情報に基づく自動求人検索を行い、AI採用情報に基づく自動求人検索とAI対応の求人情報を提供
If
Set
Code
+
If
Set
Code
17 ノードShelly-Ann Davy
個人の生産性
Mistral AI、LinkedIn、Google Sheets を使って求人検索と履歴書のカスタマイズを自動化
Mistral AI、LinkedIn、Google Sheets を使って 自動採用情報の検索とCVカスタマイズを行う
Set
Code
Html
+
Set
Code
Html
46 ノードJordan Hoyle
個人の生産性
クラウドハリデー衝突の検出と会議の再スケジュール
Google CalendarとSlackを使って祝日の冲突を検出し、会議の再スケジュールを提案する
If
Set
Code
+
If
Set
Code
23 ノードTakuya Ojima
個人の生産性
コンテンツジェネレーター v3
AI驱动ブログ自動化:使用GPT-4生成并公開SEO記事至WordPressとTwitter
If
Set
Code
+
If
Set
Code
144 ノードJay Emp0
コンテンツ作成