123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146 |
- # coding=utf-8
- import os
- import json
- import sys
- def MaxEcpmFacebookAdId(dic_ad_json):
- facebook_pool = dic_ad_json["ad"]["interstitials"]["pools"]["facebook"]
- max = 0
- max_ad_id = None
- for ad_id in facebook_pool:
- priority = facebook_pool[ad_id]
- if priority > max:
- max = priority
- max_ad_id = ad_id
- return max_ad_id
- def AddFacebookPlatformId(ad_json):
- # 取一个facebook的id,截取前半部分
- facebook_ad_id = ad_json["ad"]["interstitials"]["pools_load_strategy"]["facebook"]["root"]
- arr_items = facebook_ad_id.split("_")
- facebook_bid_platform_id = arr_items[0]
- ad_json["ad"]["platform_ids"].insert(0, {
- "p": 9,
- "aid": facebook_bid_platform_id
- })
- def GetMaxEcpmFacebookAdId(ad_json, type):
- pool = ad_json["ad"][type]["pools"]["facebook"]
- max = 0
- max_ad_id = None
- for ad_id in pool:
- priority = pool[ad_id]
- if priority > max:
- max = priority
- max_ad_id = ad_id
- return max_ad_id
- def TransType(ad_json, type):
- max_ecpm_facebook_ad_id = GetMaxEcpmFacebookAdId(ad_json, type)
- # 删除pools
- ad_json["ad"][type]["pools"].__delitem__("facebook")
- # 删除load strategy
- ad_json["ad"][type]["pools_load_strategy"].__delitem__("facebook")
- # 增加bidder
- ad_json["ad"][type]["bidders"] = {
- "facebook": max_ecpm_facebook_ad_id
- }
- def GetPoolFromLoadStrategy(strategy):
- root = strategy["root"]
- strategys = strategy["strategy"]
- id_2 = strategys[root]["fail_next"]
- id_5 = strategys[root]["suc_next"]
- id_1 = strategys[id_2]["fail_next"]
- id_4 = strategys[id_5]["fail_next"]
- return {
- id_1: 1,
- id_2: 2,
- root: 3,
- id_4: 4,
- id_5: 5
- }
- def TransBanner(ad_json):
- ad_json["ad"]["banners"] = {
- "pools": {
- "admob": GetPoolFromLoadStrategy(ad_json["ad"]["banners"]["load_strategy"])
- },
- "pools_load_strategy": {
- "admob": ad_json["ad"]["banners"]["load_strategy"]
- },
- "pages": {
- "banner": {
- "pools": ["admob"],
- "ctrl": ad_json["ad"]["banners"]["ctrl"]
- }
- }
- }
- def TransAdJson(ad_json):
- AddFacebookPlatformId(ad_json)
- # TransBanner(ad_json)
- TransType(ad_json, "interstitials")
- TransType(ad_json, "videos")
- def PrintConfirmInfo(ad_json):
- print "ad.json版本升级为:{}".format(ad_json["version"])
- print "ad.json中使用到的广告ID如下 -----------------------"
- print "banner"
- # banner_id_name_config = {
- # 1: "AM_B1_lv1",
- # 2: "AM_B1_lv2",
- # 3: "AM_B2_lv1",
- # 4: "AM_B2_lv2",
- # 5: "AM_B2_lv3",
- # }
- banner_pool = GetPoolFromLoadStrategy(ad_json["ad"]["banners"]["load_strategy"])
- for ad_id in banner_pool:
- print "\t{}: {}".format(ad_id, banner_pool[ad_id])
- types = ["interstitials", "videos"]
- for ad_type in types:
- print ad_type
- for pool_name in ad_json["ad"][ad_type]["pools"]:
- print "\t{}".format(pool_name)
- for ad_id in ad_json["ad"][ad_type]["pools"][pool_name]:
- print "\t\t{}: {}".format(ad_id, ad_json["ad"][ad_type]["pools"][pool_name][ad_id])
- if ad_json["ad"][ad_type].has_key("bidders"):
- print "\tbidders"
- for platform in ad_json["ad"][ad_type]["bidders"]:
- print "\t\t{}: {}".format(platform, ad_json["ad"][ad_type]["bidders"][platform])
- def main():
- print "开始转换ad.json..."
- ad_json_path = sys.argv[1]
- print "开始处理 {}".format(ad_json_path)
- with open(ad_json_path) as f:
- ad_json = json.load(f)
- TransAdJson(ad_json)
- ad_json["version"] = "6.1.4"
- PrintConfirmInfo(ad_json)
- write_to_path = os.path.join(os.path.dirname(ad_json_path), "ad_bidding.json")
- with open(write_to_path, "w") as f:
- json.dump(ad_json, f)
- print "转换完成,使用前请修改文件名: {} -> {}".format(ad_json_path, write_to_path)
- if len(sys.argv) < 2:
- sys.stderr.write("错误\n使用方法:python ad_json_6.1.4.py /root/ad.json")
- else:
- main()
|