airbyte-source-google-search-console 1.5.16.dev202503120000__py3-none-any.whl → 1.5.16.dev202503252224__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.
- {airbyte_source_google_search_console-1.5.16.dev202503120000.dist-info → airbyte_source_google_search_console-1.5.16.dev202503252224.dist-info}/METADATA +1 -1
- {airbyte_source_google_search_console-1.5.16.dev202503120000.dist-info → airbyte_source_google_search_console-1.5.16.dev202503252224.dist-info}/RECORD +5 -5
- source_google_search_console/streams.py +22 -15
- {airbyte_source_google_search_console-1.5.16.dev202503120000.dist-info → airbyte_source_google_search_console-1.5.16.dev202503252224.dist-info}/WHEEL +0 -0
- {airbyte_source_google_search_console-1.5.16.dev202503120000.dist-info → airbyte_source_google_search_console-1.5.16.dev202503252224.dist-info}/entry_points.txt +0 -0
@@ -19,8 +19,8 @@ source_google_search_console/schemas/sites.json,sha256=WNiCRuStPL1YkJiFa8FEbNJmq
|
|
19
19
|
source_google_search_console/service_account_authenticator.py,sha256=gjUxt0xFxj82uviCQNTsA1Jlee__UDhYNjE7bRO1G0U,1227
|
20
20
|
source_google_search_console/source.py,sha256=8n10_agSa2rvPvEyBvOfOpmpEardbEhi3H0vlK2A4_g,10002
|
21
21
|
source_google_search_console/spec.json,sha256=WYtFvaSqWYGm1Dt2yV9G92U78Q94rh9oarbxJe3H7xo,8470
|
22
|
-
source_google_search_console/streams.py,sha256=
|
23
|
-
airbyte_source_google_search_console-1.5.16.
|
24
|
-
airbyte_source_google_search_console-1.5.16.
|
25
|
-
airbyte_source_google_search_console-1.5.16.
|
26
|
-
airbyte_source_google_search_console-1.5.16.
|
22
|
+
source_google_search_console/streams.py,sha256=7C9E8gYpzU4VdQGsrS2AqjQTdMjeQ3mS3iAfvywADek,20436
|
23
|
+
airbyte_source_google_search_console-1.5.16.dev202503252224.dist-info/METADATA,sha256=llHA_zmljhs2_GK5_vKBp_TJj7mgizzaB_kFodADb_A,5646
|
24
|
+
airbyte_source_google_search_console-1.5.16.dev202503252224.dist-info/WHEEL,sha256=XbeZDeTWKc1w7CSIyre5aMDU_-PohRwTQceYnisIYYY,88
|
25
|
+
airbyte_source_google_search_console-1.5.16.dev202503252224.dist-info/entry_points.txt,sha256=DMcgc9bCX-Vt6hm_68pa77qS3eGdeMhg-UdlFc-XKUM,85
|
26
|
+
airbyte_source_google_search_console-1.5.16.dev202503252224.dist-info/RECORD,,
|
@@ -371,19 +371,7 @@ class SearchAppearance(SearchAnalytics):
|
|
371
371
|
primary_key = None
|
372
372
|
dimensions = ["searchAppearance"]
|
373
373
|
|
374
|
-
|
375
|
-
self,
|
376
|
-
stream_state: Mapping[str, Any] = None,
|
377
|
-
stream_slice: Mapping[str, Any] = None,
|
378
|
-
next_page_token: Mapping[str, Any] = None,
|
379
|
-
) -> Optional[Union[Dict[str, Any], str]]:
|
380
|
-
data = super().request_body_json(stream_state, stream_slice, next_page_token)
|
381
|
-
|
382
|
-
fields_to_remove = ["aggregationType", "startRow", "rowLimit", "dataState"]
|
383
|
-
for field in fields_to_remove:
|
384
|
-
data.pop(field, None)
|
385
|
-
|
386
|
-
return data
|
374
|
+
|
387
375
|
class SearchByKeyword(SearchAnalytics):
|
388
376
|
"""
|
389
377
|
Adds searchAppearance value to dimensionFilterGroups in json body
|
@@ -392,13 +380,30 @@ class SearchByKeyword(SearchAnalytics):
|
|
392
380
|
groupType: "and" - Whether all filters in this group must return true ("and"), or one or more must return true (not yet supported).
|
393
381
|
filters: {"dimension": "searchAppearance", "operator": "equals", "expression": keyword}
|
394
382
|
"""
|
395
|
-
search_types = ["web", "news", "image", "video", "discover", "googleNews"]
|
396
383
|
|
397
384
|
def stream_slices(
|
398
385
|
self, sync_mode: SyncMode, cursor_field: List[str] = None, stream_state: Mapping[str, Any] = None
|
399
386
|
) -> Iterable[Optional[Mapping[str, Any]]]:
|
387
|
+
search_appearance_stream = SearchAppearance(self._session.auth, self._site_urls, self._start_date, self._end_date)
|
388
|
+
|
400
389
|
for stream_slice in super().stream_slices(sync_mode, cursor_field, stream_state):
|
401
|
-
|
390
|
+
keywords_records = search_appearance_stream.read_records(
|
391
|
+
sync_mode=SyncMode.full_refresh, stream_state=stream_state, stream_slice=stream_slice
|
392
|
+
)
|
393
|
+
# Safely extract keywords, handling cases where "searchAppearance" might be missing
|
394
|
+
keywords = {record["searchAppearance"] for record in keywords_records if "searchAppearance" in record}
|
395
|
+
|
396
|
+
if keywords:
|
397
|
+
# If keywords exist, yield a slice for each keyword with filters
|
398
|
+
for keyword in keywords:
|
399
|
+
filters = {"dimension": "searchAppearance", "operator": "equals", "expression": keyword}
|
400
|
+
# Create a copy to avoid modifying the original stream_slice
|
401
|
+
stream_slice_with_filter = stream_slice.copy()
|
402
|
+
stream_slice_with_filter["dimensionFilterGroups"] = [{"groupType": "and", "filters": [filters]}]
|
403
|
+
yield stream_slice_with_filter
|
404
|
+
else:
|
405
|
+
# If no keywords are found, yield the base slice without filters
|
406
|
+
yield stream_slice
|
402
407
|
|
403
408
|
def request_body_json(
|
404
409
|
self,
|
@@ -407,6 +412,8 @@ class SearchByKeyword(SearchAnalytics):
|
|
407
412
|
next_page_token: Mapping[str, Any] = None,
|
408
413
|
) -> Optional[Union[Dict[str, Any], str]]:
|
409
414
|
data = super().request_body_json(stream_state, stream_slice, next_page_token)
|
415
|
+
if "dimensionFilterGroups" in stream_slice:
|
416
|
+
data["dimensionFilterGroups"] = stream_slice["dimensionFilterGroups"]
|
410
417
|
return data
|
411
418
|
|
412
419
|
|
File without changes
|