ad_json_6.1.4.py 4.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146
  1. # coding=utf-8
  2. import os
  3. import json
  4. import sys
  5. def MaxEcpmFacebookAdId(dic_ad_json):
  6. facebook_pool = dic_ad_json["ad"]["interstitials"]["pools"]["facebook"]
  7. max = 0
  8. max_ad_id = None
  9. for ad_id in facebook_pool:
  10. priority = facebook_pool[ad_id]
  11. if priority > max:
  12. max = priority
  13. max_ad_id = ad_id
  14. return max_ad_id
  15. def AddFacebookPlatformId(ad_json):
  16. # 取一个facebook的id,截取前半部分
  17. facebook_ad_id = ad_json["ad"]["interstitials"]["pools_load_strategy"]["facebook"]["root"]
  18. arr_items = facebook_ad_id.split("_")
  19. facebook_bid_platform_id = arr_items[0]
  20. ad_json["ad"]["platform_ids"].insert(0, {
  21. "p": 9,
  22. "aid": facebook_bid_platform_id
  23. })
  24. def GetMaxEcpmFacebookAdId(ad_json, type):
  25. pool = ad_json["ad"][type]["pools"]["facebook"]
  26. max = 0
  27. max_ad_id = None
  28. for ad_id in pool:
  29. priority = pool[ad_id]
  30. if priority > max:
  31. max = priority
  32. max_ad_id = ad_id
  33. return max_ad_id
  34. def TransType(ad_json, type):
  35. max_ecpm_facebook_ad_id = GetMaxEcpmFacebookAdId(ad_json, type)
  36. # 删除pools
  37. ad_json["ad"][type]["pools"].__delitem__("facebook")
  38. # 删除load strategy
  39. ad_json["ad"][type]["pools_load_strategy"].__delitem__("facebook")
  40. # 增加bidder
  41. ad_json["ad"][type]["bidders"] = {
  42. "facebook": max_ecpm_facebook_ad_id
  43. }
  44. def GetPoolFromLoadStrategy(strategy):
  45. root = strategy["root"]
  46. strategys = strategy["strategy"]
  47. id_2 = strategys[root]["fail_next"]
  48. id_5 = strategys[root]["suc_next"]
  49. id_1 = strategys[id_2]["fail_next"]
  50. id_4 = strategys[id_5]["fail_next"]
  51. return {
  52. id_1: 1,
  53. id_2: 2,
  54. root: 3,
  55. id_4: 4,
  56. id_5: 5
  57. }
  58. def TransBanner(ad_json):
  59. ad_json["ad"]["banners"] = {
  60. "pools": {
  61. "admob": GetPoolFromLoadStrategy(ad_json["ad"]["banners"]["load_strategy"])
  62. },
  63. "pools_load_strategy": {
  64. "admob": ad_json["ad"]["banners"]["load_strategy"]
  65. },
  66. "pages": {
  67. "banner": {
  68. "pools": ["admob"],
  69. "ctrl": ad_json["ad"]["banners"]["ctrl"]
  70. }
  71. }
  72. }
  73. def TransAdJson(ad_json):
  74. AddFacebookPlatformId(ad_json)
  75. # TransBanner(ad_json)
  76. TransType(ad_json, "interstitials")
  77. TransType(ad_json, "videos")
  78. def PrintConfirmInfo(ad_json):
  79. print "ad.json版本升级为:{}".format(ad_json["version"])
  80. print "ad.json中使用到的广告ID如下 -----------------------"
  81. print "banner"
  82. # banner_id_name_config = {
  83. # 1: "AM_B1_lv1",
  84. # 2: "AM_B1_lv2",
  85. # 3: "AM_B2_lv1",
  86. # 4: "AM_B2_lv2",
  87. # 5: "AM_B2_lv3",
  88. # }
  89. banner_pool = GetPoolFromLoadStrategy(ad_json["ad"]["banners"]["load_strategy"])
  90. for ad_id in banner_pool:
  91. print "\t{}: {}".format(ad_id, banner_pool[ad_id])
  92. types = ["interstitials", "videos"]
  93. for ad_type in types:
  94. print ad_type
  95. for pool_name in ad_json["ad"][ad_type]["pools"]:
  96. print "\t{}".format(pool_name)
  97. for ad_id in ad_json["ad"][ad_type]["pools"][pool_name]:
  98. print "\t\t{}: {}".format(ad_id, ad_json["ad"][ad_type]["pools"][pool_name][ad_id])
  99. if ad_json["ad"][ad_type].has_key("bidders"):
  100. print "\tbidders"
  101. for platform in ad_json["ad"][ad_type]["bidders"]:
  102. print "\t\t{}: {}".format(platform, ad_json["ad"][ad_type]["bidders"][platform])
  103. def main():
  104. print "开始转换ad.json..."
  105. ad_json_path = sys.argv[1]
  106. print "开始处理 {}".format(ad_json_path)
  107. with open(ad_json_path) as f:
  108. ad_json = json.load(f)
  109. TransAdJson(ad_json)
  110. ad_json["version"] = "6.1.4"
  111. PrintConfirmInfo(ad_json)
  112. write_to_path = os.path.join(os.path.dirname(ad_json_path), "ad_bidding.json")
  113. with open(write_to_path, "w") as f:
  114. json.dump(ad_json, f)
  115. print "转换完成,使用前请修改文件名: {} -> {}".format(ad_json_path, write_to_path)
  116. if len(sys.argv) < 2:
  117. sys.stderr.write("错误\n使用方法:python ad_json_6.1.4.py /root/ad.json")
  118. else:
  119. main()