Your Name il y a 3 ans
Parent
commit
4ced0405ee
1 fichiers modifiés avec 104 ajouts et 0 suppressions
  1. 104 0
      similar_web/kw_planner.py

+ 104 - 0
similar_web/kw_planner.py

@@ -0,0 +1,104 @@
+import argparse
+import sys
+from google.ads.googleads.client import GoogleAdsClient
+from google.ads.googleads.errors import GoogleAdsException
+ 
+# Location IDs are listed here:
+# https://developers.google.com/google-ads/api/reference/data/geotargets
+# and they can also be retrieved using the GeoTargetConstantService as shown
+# here: https://developers.google.com/google-ads/api/docs/targeting/location-targeting
+_DEFAULT_LOCATION_IDS = ["2158"]  # location ID for New York, NY
+# A language criterion ID. For example, specify 1000 for English. For more
+# information on determining this value, see the below link:
+# https://developers.google.com/google-ads/api/reference/data/codes-formats#expandable-7
+_DEFAULT_LANGUAGE_ID = "1018"  # language ID for English
+## 1018 chinese  
+ 
+# [START generate_keyword_ideas]
+def main(
+    client, customer_id, location_ids, language_id, keyword_texts, page_url
+):
+    keyword_plan_idea_service = client.get_service("KeywordPlanIdeaService")
+    keyword_competition_level_enum = client.get_type(
+        "KeywordPlanCompetitionLevelEnum"
+    ).KeywordPlanCompetitionLevel
+    keyword_plan_network = client.get_type(
+        "KeywordPlanNetworkEnum"
+    ).KeywordPlanNetwork.GOOGLE_SEARCH_AND_PARTNERS
+    location_rns = _map_locations_ids_to_resource_names(client, location_ids)
+    language_rn = client.get_service(
+        "LanguageConstantService"
+    ).language_constant_path(language_id)
+ 
+    # Either keywords or a page_url are required to generate keyword ideas
+    # so this raises an error if neither are provided.
+    if not (keyword_texts or page_url):
+        raise ValueError(
+            "At least one of keywords or page URL is required, "
+            "but neither was specified."
+        )
+ 
+    # Only one of the fields "url_seed", "keyword_seed", or
+    # "keyword_and_url_seed" can be set on the request, depending on whether
+    # keywords, a page_url or both were passed to this function.
+    request = client.get_type("GenerateKeywordIdeasRequest")
+    request.customer_id = customer_id
+    request.language = language_rn
+    request.geo_target_constants = location_rns
+    request.include_adult_keywords = False
+    request.keyword_plan_network = keyword_plan_network
+ 
+    # To generate keyword ideas with only a page_url and no keywords we need
+    # to initialize a UrlSeed object with the page_url as the "url" field.
+    if not keyword_texts and page_url:
+        request.url_seed.url = url_seed
+ 
+    # To generate keyword ideas with only a list of keywords and no page_url
+    # we need to initialize a KeywordSeed object and set the "keywords" field
+    # to be a list of StringValue objects.
+    if keyword_texts and not page_url:
+        request.keyword_seed.keywords.extend(keyword_texts)
+ 
+    # To generate keyword ideas using both a list of keywords and a page_url we
+    # need to initialize a KeywordAndUrlSeed object, setting both the "url" and
+    # "keywords" fields.
+    if keyword_texts and page_url:
+        request.keyword_and_url_seed.url = page_url
+        request.keyword_and_url_seed.keywords.extend(keyword_texts)
+ 
+    keyword_ideas = keyword_plan_idea_service.generate_keyword_ideas(
+        request=request
+    )
+    
+    list_keywords = []
+    for idea in keyword_ideas:
+        competition_value = idea.keyword_idea_metrics.competition.name
+        list_keywords.append(idea)
+    
+    return list_keywords
+ 
+def map_keywords_to_string_values(client, keyword_texts):
+    keyword_protos = []
+    for keyword in keyword_texts:
+        string_val = client.get_type("StringValue")
+        string_val.value = keyword
+        keyword_protos.append(string_val)
+    return keyword_protos
+ 
+ 
+def _map_locations_ids_to_resource_names(client, location_ids):
+    """Converts a list of location IDs to resource names.
+    Args:
+        client: an initialized GoogleAdsClient instance.
+        location_ids: a list of location ID strings.
+    Returns:
+        a list of resource name strings using the given location IDs.
+    """
+    build_resource_name = client.get_service(
+        "GeoTargetConstantService"
+    ).geo_target_constant_path
+    return [build_resource_name(location_id) for location_id in location_ids]
+ 
+ 
+
+