We are currently solving the following issue within our repository. Here is the issue text:
--- BEGIN ISSUE ---
Spider longhorn_steakhouse is broken
During the global build at 2021-10-20-14-42-48, spider **longhorn_steakhouse** failed with **0 features** and **0 errors**.

Here's [the log](https://data.alltheplaces.xyz/runs/2021-10-20-14-42-48/logs/longhorn_steakhouse.txt) and [the output](https://data.alltheplaces.xyz/runs/2021-10-20-14-42-48/output/longhorn_steakhouse.geojson) ([on a map](https://data.alltheplaces.xyz/map.html?show=https://data.alltheplaces.xyz/runs/2021-10-20-14-42-48/output/longhorn_steakhouse.geojson))

--- END ISSUE ---

Below are some code segments, each from a relevant file. One or more of these files may contain bugs.
--- BEGIN FILES ---
Path: `locations/spiders/longhorn_steakhouse.py`
Content:
```
1 # -*- coding: utf-8 -*-
2 import json
3 import re
4 
5 import scrapy
6 
7 from locations.items import GeojsonPointItem
8 from locations.hours import OpeningHours
9 
10 
11 class LongHornSteakhouseSpider(scrapy.Spider):
12     name = "longhorn_steakhouse"
13     item_attributes = {'brand': 'LongHorn Steakhouse', 'brand_wikidata': "Q3259007"}
14     allowed_domains = []
15     start_urls = [
16         'https://www.longhornsteakhouse.com/locations-sitemap.xml',
17     ]
18     custom_settings = {
19         'USER_AGENT': 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.86 Safari/537.36',
20     }
21     download_delay = 5
22 
23     def parse_hours(self, hours):
24         opening_hours = OpeningHours()
25 
26         for hour in hours:
27             day, open_close = hour.split(' ')
28             open_time, close_time = open_close.split('-')
29             opening_hours.add_range(day=day, open_time=open_time, close_time=close_time, time_format='%H:%M')
30         return opening_hours.as_opening_hours()
31 
32     def parse(self, response):
33         response.selector.remove_namespaces()
34         urls = response.xpath('//url/loc/text()').extract()
35         for url in urls:
36             yield scrapy.Request(url=url, callback=self.parse_store)
37 
38     def parse_store(self, response):
39         store_data = response.xpath('//script[@type="application/ld+json" and contains(text(), "streetAddress")]/text()').extract_first()
40         if store_data:
41             data = json.loads(store_data)
42             ref = re.search(r'.+/(.+?)/?(?:\.html|$)', response.url).group(1)
43 
44             # Handle store pages that are missing the application/ld+json data
45             addr, city_state_zip, phone = response.xpath('//p[@id="info-link-webhead"]/text()').extract()
46             city, state, postcode = re.search(r'(.*?),\s([A-Z]{2})\s([\d-]+)$', city_state_zip).groups()
47 
48             properties = {
49                 'name': data.get("name") or response.xpath('//h1[@class="style_h1"]/text()').extract_first().strip(),
50                 'ref': data["branchCode"] or ref,
51                 'addr_full': data["address"]["streetAddress"].strip() or addr.strip(),
52                 'city': data["address"]["addressLocality"] or city,
53                 'state': data["address"]["addressRegion"] or state,
54                 'postcode': data["address"]["postalCode"] or postcode,
55                 'country': data["address"]["addressCountry"],
56                 'phone': data.get("telephone") or phone.strip(),
57                 'website': data.get("url") or response.url,
58                 'lat': float(data["geo"]["latitude"]),
59                 'lon': float(data["geo"]["longitude"]),
60             }
61 
62             hours = data.get("openingHours")
63             if hours:
64                 store_hours = self.parse_hours(hours)
65                 properties["opening_hours"] = store_hours
66 
67             yield GeojsonPointItem(**properties)
68
```
--- END FILES ---

Please first localize the bug based on the issue statement, and then generate a patch according to the `git diff` format fenced by three backticks.

Here is an example:

```diff
diff --git a/examples/server_async.py b/examples/server_async.py
--- a/examples/server_async.py
+++ b/examples/server_async.py
@@ -313,4 +313,4 @@
 
 
 if __name__ == "__main__":
-    asyncio.run(run_async_server("."), debug=True)
+    asyncio.run(run_async_server(), debug=True)
diff --git a/examples/server_sync.py b/examples/server_sync.py
--- a/examples/server_sync.py
+++ b/examples/server_sync.py
@@ -313,5 +313,5 @@
 
 
 if __name__ == "__main__":
-    server = run_sync_server(".")
+    server = run_sync_server()
     server.shutdown()

```

diff --git a/locations/spiders/longhorn_steakhouse.py b/locations/spiders/longhorn_steakhouse.py
--- a/locations/spiders/longhorn_steakhouse.py
+++ b/locations/spiders/longhorn_steakhouse.py
@@ -18,7 +18,7 @@
     custom_settings = {
         'USER_AGENT': 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.86 Safari/537.36',
     }
-    download_delay = 5
+    download_delay = 1
 
     def parse_hours(self, hours):
         opening_hours = OpeningHours()

{"golden_diff": "diff --git a/locations/spiders/longhorn_steakhouse.py b/locations/spiders/longhorn_steakhouse.py\n--- a/locations/spiders/longhorn_steakhouse.py\n+++ b/locations/spiders/longhorn_steakhouse.py\n@@ -18,7 +18,7 @@\n     custom_settings = {\n         'USER_AGENT': 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.86 Safari/537.36',\n     }\n-    download_delay = 5\n+    download_delay = 1\n \n     def parse_hours(self, hours):\n         opening_hours = OpeningHours()\n", "issue": "Spider longhorn_steakhouse is broken\nDuring the global build at 2021-10-20-14-42-48, spider **longhorn_steakhouse** failed with **0 features** and **0 errors**.\n\nHere's [the log](https://data.alltheplaces.xyz/runs/2021-10-20-14-42-48/logs/longhorn_steakhouse.txt) and [the output](https://data.alltheplaces.xyz/runs/2021-10-20-14-42-48/output/longhorn_steakhouse.geojson) ([on a map](https://data.alltheplaces.xyz/map.html?show=https://data.alltheplaces.xyz/runs/2021-10-20-14-42-48/output/longhorn_steakhouse.geojson))\n", "before_files": [{"content": "# -*- coding: utf-8 -*-\nimport json\nimport re\n\nimport scrapy\n\nfrom locations.items import GeojsonPointItem\nfrom locations.hours import OpeningHours\n\n\nclass LongHornSteakhouseSpider(scrapy.Spider):\n    name = \"longhorn_steakhouse\"\n    item_attributes = {'brand': 'LongHorn Steakhouse', 'brand_wikidata': \"Q3259007\"}\n    allowed_domains = []\n    start_urls = [\n        'https://www.longhornsteakhouse.com/locations-sitemap.xml',\n    ]\n    custom_settings = {\n        'USER_AGENT': 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.86 Safari/537.36',\n    }\n    download_delay = 5\n\n    def parse_hours(self, hours):\n        opening_hours = OpeningHours()\n\n        for hour in hours:\n            day, open_close = hour.split(' ')\n            open_time, close_time = open_close.split('-')\n            opening_hours.add_range(day=day, open_time=open_time, close_time=close_time, time_format='%H:%M')\n        return opening_hours.as_opening_hours()\n\n    def parse(self, response):\n        response.selector.remove_namespaces()\n        urls = response.xpath('//url/loc/text()').extract()\n        for url in urls:\n            yield scrapy.Request(url=url, callback=self.parse_store)\n\n    def parse_store(self, response):\n        store_data = response.xpath('//script[@type=\"application/ld+json\" and contains(text(), \"streetAddress\")]/text()').extract_first()\n        if store_data:\n            data = json.loads(store_data)\n            ref = re.search(r'.+/(.+?)/?(?:\\.html|$)', response.url).group(1)\n\n            # Handle store pages that are missing the application/ld+json data\n            addr, city_state_zip, phone = response.xpath('//p[@id=\"info-link-webhead\"]/text()').extract()\n            city, state, postcode = re.search(r'(.*?),\\s([A-Z]{2})\\s([\\d-]+)$', city_state_zip).groups()\n\n            properties = {\n                'name': data.get(\"name\") or response.xpath('//h1[@class=\"style_h1\"]/text()').extract_first().strip(),\n                'ref': data[\"branchCode\"] or ref,\n                'addr_full': data[\"address\"][\"streetAddress\"].strip() or addr.strip(),\n                'city': data[\"address\"][\"addressLocality\"] or city,\n                'state': data[\"address\"][\"addressRegion\"] or state,\n                'postcode': data[\"address\"][\"postalCode\"] or postcode,\n                'country': data[\"address\"][\"addressCountry\"],\n                'phone': data.get(\"telephone\") or phone.strip(),\n                'website': data.get(\"url\") or response.url,\n                'lat': float(data[\"geo\"][\"latitude\"]),\n                'lon': float(data[\"geo\"][\"longitude\"]),\n            }\n\n            hours = data.get(\"openingHours\")\n            if hours:\n                store_hours = self.parse_hours(hours)\n                properties[\"opening_hours\"] = store_hours\n\n            yield GeojsonPointItem(**properties)\n", "path": "locations/spiders/longhorn_steakhouse.py"}], "after_files": [{"content": "# -*- coding: utf-8 -*-\nimport json\nimport re\n\nimport scrapy\n\nfrom locations.items import GeojsonPointItem\nfrom locations.hours import OpeningHours\n\n\nclass LongHornSteakhouseSpider(scrapy.Spider):\n    name = \"longhorn_steakhouse\"\n    item_attributes = {'brand': 'LongHorn Steakhouse', 'brand_wikidata': \"Q3259007\"}\n    allowed_domains = []\n    start_urls = [\n        'https://www.longhornsteakhouse.com/locations-sitemap.xml',\n    ]\n    custom_settings = {\n        'USER_AGENT': 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.86 Safari/537.36',\n    }\n    download_delay = 1\n\n    def parse_hours(self, hours):\n        opening_hours = OpeningHours()\n\n        for hour in hours:\n            day, open_close = hour.split(' ')\n            open_time, close_time = open_close.split('-')\n            opening_hours.add_range(day=day, open_time=open_time, close_time=close_time, time_format='%H:%M')\n        return opening_hours.as_opening_hours()\n\n    def parse(self, response):\n        response.selector.remove_namespaces()\n        urls = response.xpath('//url/loc/text()').extract()\n        for url in urls:\n            yield scrapy.Request(url=url, callback=self.parse_store)\n\n    def parse_store(self, response):\n        store_data = response.xpath('//script[@type=\"application/ld+json\" and contains(text(), \"streetAddress\")]/text()').extract_first()\n        if store_data:\n            data = json.loads(store_data)\n            ref = re.search(r'.+/(.+?)/?(?:\\.html|$)', response.url).group(1)\n\n            # Handle store pages that are missing the application/ld+json data\n            addr, city_state_zip, phone = response.xpath('//p[@id=\"info-link-webhead\"]/text()').extract()\n            city, state, postcode = re.search(r'(.*?),\\s([A-Z]{2})\\s([\\d-]+)$', city_state_zip).groups()\n\n            properties = {\n                'name': data.get(\"name\") or response.xpath('//h1[@class=\"style_h1\"]/text()').extract_first().strip(),\n                'ref': data[\"branchCode\"] or ref,\n                'addr_full': data[\"address\"][\"streetAddress\"].strip() or addr.strip(),\n                'city': data[\"address\"][\"addressLocality\"] or city,\n                'state': data[\"address\"][\"addressRegion\"] or state,\n                'postcode': data[\"address\"][\"postalCode\"] or postcode,\n                'country': data[\"address\"][\"addressCountry\"],\n                'phone': data.get(\"telephone\") or phone.strip(),\n                'website': data.get(\"url\") or response.url,\n                'lat': float(data[\"geo\"][\"latitude\"]),\n                'lon': float(data[\"geo\"][\"longitude\"]),\n            }\n\n            hours = data.get(\"openingHours\")\n            if hours:\n                store_hours = self.parse_hours(hours)\n                properties[\"opening_hours\"] = store_hours\n\n            yield GeojsonPointItem(**properties)\n", "path": "locations/spiders/longhorn_steakhouse.py"}]}