From 1ab87eb4cd82596556dbb29ff45381d6e2527dd6 Mon Sep 17 00:00:00 2001 From: Martijn Naber Date: Mon, 20 Jan 2025 18:35:50 +0100 Subject: [PATCH] Make it possible to (de)serialize request --- scrapfly/scrapy/request.py | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/scrapfly/scrapy/request.py b/scrapfly/scrapy/request.py index 4725974..32821d0 100644 --- a/scrapfly/scrapy/request.py +++ b/scrapfly/scrapy/request.py @@ -32,6 +32,23 @@ def __init__(self, scrape_config:ScrapeConfig, meta:Dict={}, *args, **kwargs): **kwargs ) + def to_dict(self, spider=None): + """ + Override to_dict to handle serialization with scrape_config. + The spider argument is ignored to maintain compatibility with Scrapy. + """ + d = super().to_dict() # Call the parent class's to_dict + d['scrape_config'] = self.scrape_config + return d + + @classmethod + def from_dict(cls, d): + """ + Override from_dict to handle deserialization of scrape_config. + """ + scrape_config = d.pop('scrape_config', None) + return cls(scrape_config=scrape_config, **d) + def replace(self, *args, **kwargs): for x in [ 'meta',