scraper2-hj3415 2.2.0__py3-none-any.whl → 2.4.0__py3-none-any.whl

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.
scraper2/.DS_Store CHANGED
Binary file
@@ -10,7 +10,6 @@ class PlaywrightBrowser:
10
10
  self.page = page
11
11
 
12
12
  async def goto(self, url: str, timeout_ms: int = 10_000) -> None:
13
- self.page.set_default_timeout(10_000)
14
13
  await self.page.goto(url, timeout=timeout_ms)
15
14
 
16
15
  async def title(self) -> str:
@@ -3,7 +3,7 @@ from __future__ import annotations
3
3
 
4
4
  import os
5
5
  from dataclasses import dataclass
6
- from typing import Literal
6
+ from typing import Literal, Optional
7
7
 
8
8
  from pymongo.asynchronous.database import AsyncDatabase
9
9
 
@@ -109,7 +109,14 @@ class Usecases:
109
109
  store: InMemoryStore | None = None # ✅ memory일 때만
110
110
  mongo: Mongo | None = None # ✅ mongo일 때만
111
111
  db: AsyncDatabase | None = None # ✅ mongo일 때만
112
+ browser_factory: Optional[BrowserFactoryPort] = None
112
113
 
114
+ async def aclose(self) -> None:
115
+ if self.browser_factory is not None:
116
+ await self.browser_factory.aclose()
117
+
118
+ if self.mongo is not None:
119
+ await self.mongo.close()
113
120
 
114
121
  # -------------------------
115
122
  # builders
@@ -185,11 +192,13 @@ def build_usecases(
185
192
  if sink_kind == "memory":
186
193
  bundle = build_memory_bundle()
187
194
  ingest = build_ingest_usecases(fetch=fetch, sinks=bundle.sinks)
188
- return Usecases(fetch=fetch, ingest=ingest, sinks=bundle.sinks, store=bundle.store)
195
+ return Usecases(fetch=fetch, ingest=ingest, sinks=bundle.sinks, store=bundle.store,
196
+ browser_factory=factory)
189
197
 
190
198
  if sink_kind == "mongo":
191
199
  bundle = build_mongo_bundle()
192
200
  ingest = build_ingest_usecases(fetch=fetch, sinks=bundle.sinks)
193
- return Usecases(fetch=fetch, ingest=ingest, sinks=bundle.sinks, mongo=bundle.mongo, db=bundle.db)
201
+ return Usecases(fetch=fetch, ingest=ingest, sinks=bundle.sinks, mongo=bundle.mongo, db=bundle.db,
202
+ browser_factory=factory)
194
203
 
195
204
  raise ValueError(f"Unknown sink_kind: {sink_kind}")
scraper2/main.py CHANGED
@@ -233,8 +233,7 @@ def nfs_one(
233
233
  else:
234
234
  typer.echo(_dto_to_pretty(dto))
235
235
  finally:
236
- if getattr(ucs, "mongo", None) is not None:
237
- await _maybe_await_close(ucs.mongo)
236
+ await ucs.aclose()
238
237
 
239
238
  asyncio.run(_run())
240
239
 
@@ -281,8 +280,7 @@ def nfs_all(
281
280
  progress_every=1, # chunk마다
282
281
  )
283
282
  finally:
284
- if getattr(ucs, "mongo", None) is not None:
285
- await _maybe_await_close(ucs.mongo)
283
+ await ucs.aclose()
286
284
 
287
285
  asyncio.run(_run())
288
286
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: scraper2-hj3415
3
- Version: 2.2.0
3
+ Version: 2.4.0
4
4
  Summary: Naver WiseReport scraper
5
5
  Keywords: example,demo
6
6
  Author-email: Hyungjin Kim <hj3415@gmail.com>
@@ -1,10 +1,10 @@
1
- scraper2/.DS_Store,sha256=miZHKI70yhXtniLCotYbxAAOTB3ML9T6Tb8xQYPeK8w,6148
1
+ scraper2/.DS_Store,sha256=sEtRhy6uiX4PgYuHnRIsUN_QtI0jR0lSLi4kYurHsso,6148
2
2
  scraper2/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
3
- scraper2/main.py,sha256=SG0h5swYbHiIcgwpk7yNq7lcCEkdOMz3XM8u41qNtLo,9224
3
+ scraper2/main.py,sha256=qQaLU1Ohq4QBCRilGsDgVYnm-TqVR4pqQ9-XexKbiWQ,9070
4
4
  scraper2/adapters/out/.DS_Store,sha256=nUqwRB5F2DM82P8BALYvDI0YoD1UbmngfSi8ukKkY7E,6148
5
5
  scraper2/adapters/out/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
6
6
  scraper2/adapters/out/playwright/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
7
- scraper2/adapters/out/playwright/browser.py,sha256=XomDThsVhsd5MdwhatgXyaCocs1XCjYEKC_YHmo1jsk,3988
7
+ scraper2/adapters/out/playwright/browser.py,sha256=cjz-1iz3U2fmY0tntO5h4NADfW4hYtusCfPTCqSo2NM,3942
8
8
  scraper2/adapters/out/playwright/browser_factory.py,sha256=y008Dbu6VmzrEe7zn7CbODndQEVJtv_EBu04GsMbPGM,3697
9
9
  scraper2/adapters/out/playwright/session.py,sha256=hQDmYpi7pIVDjkymaTKQzJVWUsRRlvJg1V777V8q44M,3727
10
10
  scraper2/adapters/out/sinks/.DS_Store,sha256=c6VOGBl6bMmFzab335dcT09WinGd4BCZXZiPjrZjd7o,6148
@@ -22,7 +22,7 @@ scraper2/adapters/out/sinks/mongo/c104_mongo_sink.py,sha256=IicVnc2fyeBXoBbgMasB
22
22
  scraper2/adapters/out/sinks/mongo/c106_mongo_sink.py,sha256=FMdCp8WVjPwidnh7tIPUoViQWr48O16xtB34O_iCtJI,1203
23
23
  scraper2/adapters/out/sinks/mongo/c108_mongo_sink.py,sha256=eSvIRtofWvNKVPchglwL1mOw5hsKDpUfNz5EOum-H3Y,1203
24
24
  scraper2/app/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
25
- scraper2/app/composition.py,sha256=HijMEE-2lMEMiYKlVN9ZWJD-E4vwgzIf9-plYzoSwGc,6229
25
+ scraper2/app/composition.py,sha256=sJuEAPg-mQ51-0ZsXmMOuAN_whKaq1BCMWHy0uAwxMA,6572
26
26
  scraper2/app/parsing/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
27
27
  scraper2/app/parsing/_converters.py,sha256=z0kSL4nQnqq5w7QfJZBSbjZOLo1JhoqqDLpqlEAN4bo,1815
28
28
  scraper2/app/parsing/_normalize.py,sha256=2qqbXxTbzbuYlu7ttzQjyKgatFnwopme2b_fd0zahio,3738
@@ -56,8 +56,8 @@ scraper2/app/usecases/ingest/ingest_c103.py,sha256=T_IKs5ikckin_05FnL-dxirAW1PPa
56
56
  scraper2/app/usecases/ingest/ingest_c104.py,sha256=2rGTcFbsATsn3d2KsSEkL5x4fmkGo7x9MHrysoxiICM,1150
57
57
  scraper2/app/usecases/ingest/ingest_c106.py,sha256=mQrbASbKVUQyVcIWiXzIczbX-1mNR5NGk760enVCfvo,1190
58
58
  scraper2/app/usecases/ingest/ingest_c108.py,sha256=49ULzdl0dN6z3istAKg29PcD5wHTxYholqAZiIEmUzU,1191
59
- scraper2_hj3415-2.2.0.dist-info/entry_points.txt,sha256=jUNx7ZJQedQ3QnsDN1ompQ0PjwdvVmnKdHHFMfQQPlI,46
60
- scraper2_hj3415-2.2.0.dist-info/licenses/LICENSE,sha256=QBiVGQuKAESeCfQE344Ik2ex6g2zfYdu9WqrRWydxIs,1068
61
- scraper2_hj3415-2.2.0.dist-info/WHEEL,sha256=G2gURzTEtmeR8nrdXUJfNiB3VYVxigPQ-bEQujpNiNs,82
62
- scraper2_hj3415-2.2.0.dist-info/METADATA,sha256=hdcFQQQvdoDwgw-PTUsaWwjUXFtkS5inLPDFhBlYZjg,3457
63
- scraper2_hj3415-2.2.0.dist-info/RECORD,,
59
+ scraper2_hj3415-2.4.0.dist-info/entry_points.txt,sha256=jUNx7ZJQedQ3QnsDN1ompQ0PjwdvVmnKdHHFMfQQPlI,46
60
+ scraper2_hj3415-2.4.0.dist-info/licenses/LICENSE,sha256=QBiVGQuKAESeCfQE344Ik2ex6g2zfYdu9WqrRWydxIs,1068
61
+ scraper2_hj3415-2.4.0.dist-info/WHEEL,sha256=G2gURzTEtmeR8nrdXUJfNiB3VYVxigPQ-bEQujpNiNs,82
62
+ scraper2_hj3415-2.4.0.dist-info/METADATA,sha256=uIyIiBBmEhDxoXmiLnvBctWO8Ky7mU0o5ycA3FFq6_o,3457
63
+ scraper2_hj3415-2.4.0.dist-info/RECORD,,