webcrawlerapi 2.1.3__tar.gz → 2.1.5__tar.gz

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.
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: webcrawlerapi
3
- Version: 2.1.3
3
+ Version: 2.1.5
4
4
  Summary: Python SDK for WebCrawler API
5
5
  Home-page: https://github.com/webcrawlerapi/webcrawlerapi-python-sdk
6
6
  Author: Andrew
@@ -2,7 +2,7 @@ from setuptools import find_packages, setup
2
2
 
3
3
  setup(
4
4
  name="webcrawlerapi",
5
- version="2.1.3",
5
+ version="2.1.5",
6
6
  packages=find_packages(),
7
7
  install_requires=[
8
8
  "requests>=2.25.0",
@@ -30,6 +30,7 @@ from .models import (
30
30
  Job,
31
31
  JobItem,
32
32
  JobMarkdownResponse,
33
+ MarkdownResponse,
33
34
  ScrapeId,
34
35
  ScrapeResponse,
35
36
  ScrapeResponseError,
@@ -44,6 +45,7 @@ __all__ = [
44
45
  "Job",
45
46
  "JobItem",
46
47
  "JobMarkdownResponse",
48
+ "MarkdownResponse",
47
49
  "CrawlResponse",
48
50
  "ScrapeId",
49
51
  "ScrapeResponse",
@@ -10,6 +10,7 @@ from .models import (
10
10
  CrawlResponse,
11
11
  Job,
12
12
  JobMarkdownResponse,
13
+ MarkdownResponse,
13
14
  ScrapeId,
14
15
  ScrapeResponse,
15
16
  ScrapeResponseError,
@@ -201,6 +202,31 @@ class WebCrawlerAPI:
201
202
  self._raise_for_error(response)
202
203
  return response.text
203
204
 
205
+ def markdown(self, url: str) -> MarkdownResponse:
206
+ """
207
+ Extract cleaned article markdown (main content only) from a webpage.
208
+
209
+ Args:
210
+ url (str): The URL of the webpage to extract the article markdown from
211
+
212
+ Returns:
213
+ MarkdownResponse: Response containing the extracted markdown
214
+
215
+ Raises:
216
+ WebCrawlerApiError: If the API returns an error response
217
+ requests.exceptions.RequestException: If the HTTP request fails
218
+ """
219
+ response = self.session.post(
220
+ urljoin(self.base_url, "/markdown"),
221
+ json={"url": url},
222
+ )
223
+ if not response.ok:
224
+ self._raise_for_error(response)
225
+ data = response.json()
226
+ return MarkdownResponse(
227
+ success=data.get("success", True), markdown=data.get("markdown")
228
+ )
229
+
204
230
  def cancel_job(self, job_id: str) -> Dict[str, str]:
205
231
  """
206
232
  Cancel a running job. All items that are not in progress and not done
@@ -62,6 +62,14 @@ class JobMarkdownResponse:
62
62
  content_url: str
63
63
 
64
64
 
65
+ @dataclass
66
+ class MarkdownResponse:
67
+ """Response from the markdown endpoint."""
68
+
69
+ success: bool
70
+ markdown: Optional[str] = None
71
+
72
+
65
73
  @dataclass
66
74
  class ScrapeId:
67
75
  """Response from an asynchronous scrape request."""
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: webcrawlerapi
3
- Version: 2.1.3
3
+ Version: 2.1.5
4
4
  Summary: Python SDK for WebCrawler API
5
5
  Home-page: https://github.com/webcrawlerapi/webcrawlerapi-python-sdk
6
6
  Author: Andrew
File without changes
File without changes