Skip to content

Commit d5a6017

Browse files
committed
fix: mrscraper_batch_scrape and mrscraper_get_result suggestion changes by coderabbit
1 parent 7345dcf commit d5a6017

3 files changed

Lines changed: 10 additions & 7 deletions

File tree

src/lfx/src/lfx/_assets/component_index.json

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -93918,7 +93918,7 @@
9391893918
"icon": "MrScraper",
9391993919
"legacy": false,
9392093920
"metadata": {
93921-
"code_hash": "47c23bf77e42",
93921+
"code_hash": "0e45bf184540",
9392293922
"dependencies": {
9392393923
"dependencies": [
9392493924
{
@@ -93990,7 +93990,7 @@
9399093990
"show": true,
9399193991
"title_case": false,
9399293992
"type": "code",
93993-
"value": "\"\"\"MrScraper component: batch rerun AI or manual scrapers on multiple URLs.\"\"\"\n\nfrom lfx.custom.custom_component.component import Component\nfrom lfx.io import DropdownInput, MultilineInput, Output, SecretStrInput, StrInput\nfrom lfx.schema.data import Data\n\n\nclass MrscraperBatchScrape(Component):\n \"\"\"Langflow component for MrScraper bulk AI or manual scraper reruns.\"\"\"\n\n display_name: str = \"MrScraper Batch Scrape URLs\"\n description: str = (\n \"Rerun an existing MrScraper scraper on multiple URLs in a single batch. \"\n \"Supports both AI and Manual scraper modes.\"\n )\n name = \"MrscraperBatchScrape\"\n icon: str = \"MrScraper\"\n documentation: str = \"https://docs.mrscraper.com\"\n\n inputs = [\n SecretStrInput(\n name=\"api_token\",\n display_name=\"MrScraper API Token\",\n required=True,\n password=True,\n info=\"Your MrScraper API token. Get yours at https://app.mrscraper.com.\",\n ),\n StrInput(\n name=\"scraper_id\",\n display_name=\"Scraper ID\",\n required=True,\n info=\"ID of the scraper to rerun (from create_scraper or the MrScraper dashboard).\",\n tool_mode=True,\n ),\n MultilineInput(\n name=\"urls\",\n display_name=\"URLs\",\n required=True,\n info=\"List of target URLs to scrape (separated by commas or new lines).\",\n tool_mode=True,\n ),\n DropdownInput(\n name=\"mode\",\n display_name=\"Scraper Mode\",\n options=[\"AI\", \"Manual\"],\n value=\"AI\",\n info='\"AI\" uses bulk_rerun_ai_scraper. \"Manual\" uses bulk_rerun_manual_scraper.',\n ),\n ]\n\n outputs = [\n Output(display_name=\"Result\", name=\"data\", method=\"batch_scrape\"),\n ]\n\n async def batch_scrape(self) -> Data:\n \"\"\"Validate URLs, dispatch bulk rerun by mode, and return `Data`.\"\"\"\n try:\n from mrscraper import MrScraper\n except ImportError as e:\n msg = \"Could not import mrscraper SDK. Please install it with `pip install mrscraper-sdk`.\"\n raise ImportError(msg) from e\n\n if not self.urls:\n msg = \"URLs are required\"\n raise ValueError(msg)\n\n url_list = [u.strip() for u in self.urls.replace(\"\\n\", \",\").split(\",\") if u.strip()]\n if not url_list:\n msg = \"No valid URLs provided\"\n raise ValueError(msg)\n\n client = MrScraper(token=self.api_token)\n\n if self.mode == \"AI\":\n result = await client.bulk_rerun_ai_scraper(\n scraper_id=self.scraper_id,\n urls=url_list,\n )\n else:\n result = await client.bulk_rerun_manual_scraper(\n scraper_id=self.scraper_id,\n urls=url_list,\n )\n\n return Data(data=result)\n"
93993+
"value": "\"\"\"MrScraper component: batch rerun AI or manual scrapers on multiple URLs.\"\"\"\n\nfrom lfx.custom.custom_component.component import Component\nfrom lfx.io import DropdownInput, MultilineInput, Output, SecretStrInput, StrInput\nfrom lfx.schema.data import Data\n\n\nclass MrscraperBatchScrape(Component):\n \"\"\"Langflow component for MrScraper bulk AI or manual scraper reruns.\"\"\"\n\n display_name: str = \"MrScraper Batch Scrape URLs\"\n description: str = (\n \"Rerun an existing MrScraper scraper on multiple URLs in a single batch. \"\n \"Supports both AI and Manual scraper modes.\"\n )\n name = \"MrscraperBatchScrape\"\n icon: str = \"MrScraper\"\n documentation: str = \"https://docs.mrscraper.com\"\n\n inputs = [\n SecretStrInput(\n name=\"api_token\",\n display_name=\"MrScraper API Token\",\n required=True,\n password=True,\n info=\"Your MrScraper API token. Get yours at https://app.mrscraper.com.\",\n ),\n StrInput(\n name=\"scraper_id\",\n display_name=\"Scraper ID\",\n required=True,\n info=\"ID of the scraper to rerun (from create_scraper or the MrScraper dashboard).\",\n tool_mode=True,\n ),\n MultilineInput(\n name=\"urls\",\n display_name=\"URLs\",\n required=True,\n info=\"List of target URLs to scrape (separated by commas or new lines).\",\n tool_mode=True,\n ),\n DropdownInput(\n name=\"mode\",\n display_name=\"Scraper Mode\",\n options=[\"AI\", \"Manual\"],\n value=\"AI\",\n info='\"AI\" uses bulk_rerun_ai_scraper. \"Manual\" uses bulk_rerun_manual_scraper.',\n ),\n ]\n\n outputs = [\n Output(display_name=\"Result\", name=\"data\", method=\"batch_scrape\"),\n ]\n\n async def batch_scrape(self) -> Data:\n \"\"\"Validate URLs, dispatch bulk rerun by mode, and return `Data`.\"\"\"\n try:\n from mrscraper import MrScraper\n except ImportError as e:\n msg = \"Could not import mrscraper SDK. Please install it with `pip install mrscraper-sdk`.\"\n raise ImportError(msg) from e\n\n if not self.urls:\n msg = \"URLs are required\"\n raise ValueError(msg)\n\n url_list = [u.strip() for u in self.urls.replace(\"\\n\", \",\").split(\",\") if u.strip()]\n if not url_list:\n msg = \"No valid URLs provided\"\n raise ValueError(msg)\n\n client = MrScraper(token=self.api_token)\n\n if self.mode == \"AI\":\n result = await client.bulk_rerun_ai_scraper(\n scraper_id=self.scraper_id,\n urls=url_list,\n )\n elif self.mode == \"Manual\":\n result = await client.bulk_rerun_manual_scraper(\n scraper_id=self.scraper_id,\n urls=url_list,\n )\n else:\n msg = f\"Unsupported mode: {self.mode!r}. Expected 'AI' or 'Manual'.\"\n raise ValueError(msg)\n\n return Data(data=result)\n"
9399493994
},
9399593995
"mode": {
9399693996
"_input_type": "DropdownInput",
@@ -94512,7 +94512,7 @@
9451294512
"icon": "MrScraper",
9451394513
"legacy": false,
9451494514
"metadata": {
94515-
"code_hash": "3da55d924d54",
94515+
"code_hash": "ed66be9e8776",
9451694516
"dependencies": {
9451794517
"dependencies": [
9451894518
{
@@ -94584,7 +94584,7 @@
9458494584
"show": true,
9458594585
"title_case": false,
9458694586
"type": "code",
94587-
"value": "\"\"\"MrScraper component: load a single scraping result by ID.\"\"\"\n\nfrom lfx.custom.custom_component.component import Component\nfrom lfx.io import Output, SecretStrInput, StrInput\nfrom lfx.schema.data import Data\n\n\nclass MrscraperGetResult(Component):\n \"\"\"Langflow component wrapping MrScraper `get_result_by_id`.\"\"\"\n\n display_name: str = \"MrScraper Get Result Detail\"\n description: str = \"Retrieve the full details of a specific MrScraper scraping result by its ID.\"\n name = \"MrscraperGetResult\"\n icon: str = \"MrScraper\"\n documentation: str = \"https://docs.mrscraper.com\"\n\n inputs = [\n SecretStrInput(\n name=\"api_token\",\n display_name=\"MrScraper API Token\",\n required=True,\n password=True,\n info=\"Your MrScraper API token. Get yours at https://app.mrscraper.com.\",\n ),\n StrInput(\n name=\"result_id\",\n display_name=\"Result ID\",\n required=True,\n info=\"Unique identifier of the scraping result to retrieve.\",\n tool_mode=True,\n ),\n ]\n\n outputs = [\n Output(display_name=\"Result\", name=\"data\", method=\"get_result\"),\n ]\n\n async def get_result(self) -> Data:\n \"\"\"Return full detail for one result ID as `Data`.\"\"\"\n try:\n from mrscraper import MrScraper\n except ImportError as e:\n msg = \"Could not import mrscraper SDK. Please install it with `pip install mrscraper-sdk`.\"\n raise ImportError(msg) from e\n\n client = MrScraper(token=self.api_token)\n result = await client.get_result_by_id(result_id=self.result_id)\n return Data(data=result)\n"
94587+
"value": "\"\"\"MrScraper component: load a single scraping result by ID.\"\"\"\n\nfrom lfx.custom.custom_component.component import Component\nfrom lfx.io import Output, SecretStrInput, StrInput\nfrom lfx.schema.data import Data\n\n\nclass MrscraperGetResult(Component):\n \"\"\"Langflow component wrapping MrScraper `get_result_by_id`.\"\"\"\n\n display_name: str = \"MrScraper Get Result Detail\"\n description: str = \"Retrieve the full details of a specific MrScraper scraping result by its ID.\"\n name = \"MrscraperGetResult\"\n icon: str = \"MrScraper\"\n documentation: str = \"https://docs.mrscraper.com\"\n\n inputs = [\n SecretStrInput(\n name=\"api_token\",\n display_name=\"MrScraper API Token\",\n required=True,\n password=True,\n info=\"Your MrScraper API token. Get yours at https://app.mrscraper.com.\",\n ),\n StrInput(\n name=\"result_id\",\n display_name=\"Result ID\",\n required=True,\n info=\"Unique identifier of the scraping result to retrieve.\",\n tool_mode=True,\n ),\n ]\n\n outputs = [\n Output(display_name=\"Result\", name=\"data\", method=\"get_result\"),\n ]\n\n async def get_result(self) -> Data:\n \"\"\"Return full detail for one result ID as `Data`.\"\"\"\n try:\n from mrscraper import MrScraper\n except ImportError as e:\n msg = \"Could not import mrscraper SDK. Please install it with `pip install mrscraper-sdk`.\"\n raise ImportError(msg) from e\n\n client = MrScraper(token=self.api_token)\n result = await client.get_result_by_id(result_id=self.result_id)\n return Data(data=result[\"data\"])\n"
9458894588
},
9458994589
"result_id": {
9459094590
"_input_type": "StrInput",
@@ -120100,6 +120100,6 @@
120100120100
"num_components": 367,
120101120101
"num_modules": 98
120102120102
},
120103-
"sha256": "14f1630bd1cfb74fa455ce88b02fd01eec4fbcc6539e7ad5880b76bf94caaef1",
120103+
"sha256": "088643da1d7b1018f4ab70aa60e88aa262501dad19fe497144e574cbc483b3d5",
120104120104
"version": "0.3.4"
120105120105
}

src/lfx/src/lfx/components/mrscraper/mrscraper_batch_scrape.py

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -76,10 +76,13 @@ async def batch_scrape(self) -> Data:
7676
scraper_id=self.scraper_id,
7777
urls=url_list,
7878
)
79-
else:
79+
elif self.mode == "Manual":
8080
result = await client.bulk_rerun_manual_scraper(
8181
scraper_id=self.scraper_id,
8282
urls=url_list,
8383
)
84+
else:
85+
msg = f"Unsupported mode: {self.mode!r}. Expected 'AI' or 'Manual'."
86+
raise ValueError(msg)
8487

8588
return Data(data=result)

src/lfx/src/lfx/components/mrscraper/mrscraper_get_result.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -45,4 +45,4 @@ async def get_result(self) -> Data:
4545

4646
client = MrScraper(token=self.api_token)
4747
result = await client.get_result_by_id(result_id=self.result_id)
48-
return Data(data=result)
48+
return Data(data=result["data"])

0 commit comments

Comments
 (0)