@endoer/n8n-nodes-brightdata-modified 1.0.8 → 1.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { IExecuteFunctions, INodeExecutionData, INodeType, INodeTypeDescription } from 'n8n-workflow';
|
|
2
|
+
import { getActiveZones, getCountries, getDataSets } from './SearchFunctions';
|
|
3
|
+
export declare class BrightData implements INodeType {
|
|
4
|
+
description: INodeTypeDescription;
|
|
5
|
+
methods: {
|
|
6
|
+
listSearch: {
|
|
7
|
+
getActiveZones: typeof getActiveZones;
|
|
8
|
+
getCountries: typeof getCountries;
|
|
9
|
+
getDataSets: typeof getDataSets;
|
|
10
|
+
};
|
|
11
|
+
};
|
|
12
|
+
execute(this: IExecuteFunctions): Promise<INodeExecutionData[][]>;
|
|
13
|
+
}
|
|
@@ -0,0 +1,182 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.BrightData = void 0;
|
|
4
|
+
const n8n_workflow_1 = require("n8n-workflow");
|
|
5
|
+
const WebUnlockerDescription_1 = require("./WebUnlockerDescription");
|
|
6
|
+
const MarketplaceDatasetDescription_1 = require("./MarketplaceDatasetDescription");
|
|
7
|
+
const WebScrapperDescription_1 = require("./WebScrapperDescription");
|
|
8
|
+
const SearchFunctions_1 = require("./SearchFunctions");
|
|
9
|
+
const GenericFunctions_1 = require("./GenericFunctions");
|
|
10
|
+
class BrightData {
|
|
11
|
+
constructor() {
|
|
12
|
+
this.description = {
|
|
13
|
+
displayName: 'BrightData',
|
|
14
|
+
name: 'brightData',
|
|
15
|
+
icon: 'file:brightdatasquared.svg',
|
|
16
|
+
group: ['transform'],
|
|
17
|
+
version: 1,
|
|
18
|
+
subtitle: '={{$parameter["operation"] + ": " + $parameter["resource"]}}',
|
|
19
|
+
description: 'Interact with Bright Data to scrape websites or use existing datasets from the marketplace to generate adapted snapshots',
|
|
20
|
+
defaults: {
|
|
21
|
+
name: 'BrightData',
|
|
22
|
+
},
|
|
23
|
+
usableAsTool: true,
|
|
24
|
+
inputs: [n8n_workflow_1.NodeConnectionTypes.Main],
|
|
25
|
+
outputs: [n8n_workflow_1.NodeConnectionTypes.Main],
|
|
26
|
+
credentials: [
|
|
27
|
+
{
|
|
28
|
+
name: 'brightdataApi',
|
|
29
|
+
required: true,
|
|
30
|
+
},
|
|
31
|
+
],
|
|
32
|
+
requestDefaults: {
|
|
33
|
+
ignoreHttpStatusErrors: true,
|
|
34
|
+
baseURL: 'https://api.brightdata.com',
|
|
35
|
+
headers: {
|
|
36
|
+
Accept: 'application/json',
|
|
37
|
+
'Content-Type': 'application/json',
|
|
38
|
+
},
|
|
39
|
+
},
|
|
40
|
+
properties: [
|
|
41
|
+
{
|
|
42
|
+
displayName: 'Resource',
|
|
43
|
+
name: 'resource',
|
|
44
|
+
type: 'options',
|
|
45
|
+
noDataExpression: true,
|
|
46
|
+
options: [
|
|
47
|
+
{
|
|
48
|
+
name: 'Marketplace Dataset',
|
|
49
|
+
value: 'marketplaceDataset',
|
|
50
|
+
},
|
|
51
|
+
{
|
|
52
|
+
name: 'Web Scraper',
|
|
53
|
+
value: 'webScrapper',
|
|
54
|
+
},
|
|
55
|
+
{
|
|
56
|
+
name: 'Web Unlocker',
|
|
57
|
+
value: 'webUnlocker',
|
|
58
|
+
},
|
|
59
|
+
],
|
|
60
|
+
default: 'webUnlocker',
|
|
61
|
+
},
|
|
62
|
+
...WebUnlockerDescription_1.webUnlockerOperations,
|
|
63
|
+
...WebUnlockerDescription_1.webUnlockerFields,
|
|
64
|
+
...MarketplaceDatasetDescription_1.marketplaceDatasetOperations,
|
|
65
|
+
...MarketplaceDatasetDescription_1.marketplaceDatasetFields,
|
|
66
|
+
...WebScrapperDescription_1.webScrapperOperations,
|
|
67
|
+
...WebScrapperDescription_1.webScrapperFields,
|
|
68
|
+
],
|
|
69
|
+
};
|
|
70
|
+
this.methods = {
|
|
71
|
+
listSearch: {
|
|
72
|
+
getActiveZones: SearchFunctions_1.getActiveZones,
|
|
73
|
+
getCountries: SearchFunctions_1.getCountries,
|
|
74
|
+
getDataSets: SearchFunctions_1.getDataSets,
|
|
75
|
+
},
|
|
76
|
+
};
|
|
77
|
+
}
|
|
78
|
+
async execute() {
|
|
79
|
+
const items = this.getInputData();
|
|
80
|
+
const returnData = [];
|
|
81
|
+
const resource = this.getNodeParameter('resource', 0);
|
|
82
|
+
const operation = this.getNodeParameter('operation', 0);
|
|
83
|
+
if (resource === 'webUnlocker') {
|
|
84
|
+
const usePersistence = this.getNodeParameter('usePersistence', 0, false);
|
|
85
|
+
const workflowStaticData = this.getWorkflowStaticData('node');
|
|
86
|
+
let workingCountry = (usePersistence && workflowStaticData.lastWorkingCountry);
|
|
87
|
+
for (let i = 0; i < items.length; i++) {
|
|
88
|
+
try {
|
|
89
|
+
const rotateCountries = this.getNodeParameter('rotateCountries', i, false);
|
|
90
|
+
const primaryCountryData = this.getNodeParameter('country', i);
|
|
91
|
+
const primaryCountry = primaryCountryData.value;
|
|
92
|
+
const zoneData = this.getNodeParameter('zone', i);
|
|
93
|
+
const zone = zoneData.value;
|
|
94
|
+
let countriesToTry = [primaryCountry];
|
|
95
|
+
if (workingCountry) {
|
|
96
|
+
countriesToTry = [workingCountry, ...countriesToTry.filter((c) => c !== workingCountry)];
|
|
97
|
+
}
|
|
98
|
+
if (rotateCountries) {
|
|
99
|
+
const additionalCountriesStr = this.getNodeParameter('additionalCountries', i, '');
|
|
100
|
+
if (additionalCountriesStr) {
|
|
101
|
+
const extras = additionalCountriesStr
|
|
102
|
+
.split(/[ ,;]+/)
|
|
103
|
+
.map((c) => c.trim())
|
|
104
|
+
.filter((c) => c);
|
|
105
|
+
countriesToTry = [...new Set([...countriesToTry, ...extras])];
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
let lastError;
|
|
109
|
+
let success = false;
|
|
110
|
+
for (const country of countriesToTry) {
|
|
111
|
+
try {
|
|
112
|
+
let body = {};
|
|
113
|
+
if (operation === 'request') {
|
|
114
|
+
const method = this.getNodeParameter('method', i);
|
|
115
|
+
const url = this.getNodeParameter('url', i);
|
|
116
|
+
const format = this.getNodeParameter('format', i);
|
|
117
|
+
const dataFormat = this.getNodeParameter('data_format', i, '');
|
|
118
|
+
body = {
|
|
119
|
+
zone,
|
|
120
|
+
country,
|
|
121
|
+
method,
|
|
122
|
+
url,
|
|
123
|
+
format: dataFormat === 'markdown' ? 'raw' : format,
|
|
124
|
+
};
|
|
125
|
+
if (dataFormat) {
|
|
126
|
+
body.data_format = dataFormat;
|
|
127
|
+
}
|
|
128
|
+
}
|
|
129
|
+
else if (operation === 'WebSearch') {
|
|
130
|
+
const query = this.getNodeParameter('query', i);
|
|
131
|
+
const page = this.getNodeParameter('page', i, 1);
|
|
132
|
+
const url = `https://www.google.com/search?q=${encodeURIComponent(query)}&start=${(page - 1) * 10}&brd_json=1`;
|
|
133
|
+
body = {
|
|
134
|
+
zone,
|
|
135
|
+
country,
|
|
136
|
+
url,
|
|
137
|
+
format: 'raw',
|
|
138
|
+
};
|
|
139
|
+
}
|
|
140
|
+
const responseData = await GenericFunctions_1.brightdataApiRequest.call(this, 'POST', '/request', body);
|
|
141
|
+
if (workingCountry !== country) {
|
|
142
|
+
workingCountry = country;
|
|
143
|
+
if (usePersistence) {
|
|
144
|
+
workflowStaticData.lastWorkingCountry = country;
|
|
145
|
+
}
|
|
146
|
+
}
|
|
147
|
+
const executionData = this.helpers.returnJsonArray(responseData);
|
|
148
|
+
for (const entry of executionData) {
|
|
149
|
+
if (typeof entry.json !== 'object' || entry.json === null) {
|
|
150
|
+
entry.json = { data: entry.json };
|
|
151
|
+
}
|
|
152
|
+
entry.json.country_code = country;
|
|
153
|
+
returnData.push(entry);
|
|
154
|
+
}
|
|
155
|
+
success = true;
|
|
156
|
+
break;
|
|
157
|
+
}
|
|
158
|
+
catch (error) {
|
|
159
|
+
lastError = error;
|
|
160
|
+
}
|
|
161
|
+
}
|
|
162
|
+
if (!success) {
|
|
163
|
+
throw lastError;
|
|
164
|
+
}
|
|
165
|
+
}
|
|
166
|
+
catch (error) {
|
|
167
|
+
if (this.continueOnFail()) {
|
|
168
|
+
returnData.push({ json: { error: error.message } });
|
|
169
|
+
continue;
|
|
170
|
+
}
|
|
171
|
+
throw error;
|
|
172
|
+
}
|
|
173
|
+
}
|
|
174
|
+
return [returnData];
|
|
175
|
+
}
|
|
176
|
+
else {
|
|
177
|
+
return await this.helpers.executeRouting.call(this);
|
|
178
|
+
}
|
|
179
|
+
}
|
|
180
|
+
}
|
|
181
|
+
exports.BrightData = BrightData;
|
|
182
|
+
//# sourceMappingURL=BrightData.node.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"BrightData.node.js","sourceRoot":"","sources":["../../../nodes/BrightData/BrightData.node.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
{
|
|
2
|
+
"node": "n8n-nodes-brightdata.brightData",
|
|
3
|
+
"nodeVersion": "1.0",
|
|
4
|
+
"codexVersion": "1.0",
|
|
5
|
+
"categories": ["Development", "Developer Tools", "HTML", "Scrapping"],
|
|
6
|
+
"resources": {
|
|
7
|
+
"credentialDocumentation": [
|
|
8
|
+
{
|
|
9
|
+
"url": "https://docs.brightdata.com/api-reference/rest-api/proxy-rest-api-playground"
|
|
10
|
+
}
|
|
11
|
+
],
|
|
12
|
+
"primaryDocumentation": [
|
|
13
|
+
{
|
|
14
|
+
"url": "https://docs.brightdata.com/api-reference/rest-api/proxy-rest-api-playground"
|
|
15
|
+
}
|
|
16
|
+
]
|
|
17
|
+
}
|
|
18
|
+
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@endoer/n8n-nodes-brightdata-modified",
|
|
3
|
-
"version": "1.0
|
|
3
|
+
"version": "1.1.0",
|
|
4
4
|
"description": "Bright Data service for scraping purposes in n8n",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"n8n",
|
|
@@ -41,7 +41,7 @@
|
|
|
41
41
|
"dist/credentials/BrightDataApi.credentials.js"
|
|
42
42
|
],
|
|
43
43
|
"nodes": [
|
|
44
|
-
"dist/nodes/BrightData/
|
|
44
|
+
"dist/nodes/BrightData/BrightData.node.js"
|
|
45
45
|
]
|
|
46
46
|
},
|
|
47
47
|
"devDependencies": {
|