我是Python新手,我试图写一个脚本来控制Facebook的营销API中的一项活动的预算。您不需要真正了解Facebook营销平台就可以帮助我,因为这主要是一个与Python相关的问题,因为我对Python并不熟悉,也不知道如何编写这段代码。
#==========specify account ID in which the campaign you want to budget control resides=========================
AD_ACCOUNT_ID = 'act_4534633563'
#===============================================================================
campaign = Campaign(34635645764574)
fields = [
AdSet.Field.name,
AdSet.Field.lifetime_budget,
]
adsets = campaign.get_ad_sets(fields=fields)
with open('data.json', 'w') as f:
for adset in adsets:
print(adset[AdSet.Field.name])
json.dump(adset, f)结果:
Traceback (most recent call last):
File "C:\Python27\Scripts\JSonTest1.py", line 50, in <module>
json.dump(adset, f)
File "C:\Python27\Lib\json\__init__.py", line 189, in dump
for chunk in iterable:
File "C:\Python27\Lib\json\encoder.py", line 442, in _iterencode
o = _default(o)
File "C:\Python27\Lib\json\encoder.py", line 184, in default
raise TypeError(repr(o) + " is not JSON serializable")
TypeError: <AdSet> {
"id": "534534533454353",
"lifetime_budget": "50000",
"name": "US, CA, BR, PL, CN, IN, PK, SA, DE, AR, VE, JP, EG - 14+ - Copy"
} is not JSON serializable这个脚本应该允许通过在一天开始时将给定的竞选广告集的id和生命周期预算存储到JSON中来控制活动级别的预算。然后,这个脚本应该每六小时轮询一次生存期预算,以便在一天开始时(每天早上都存储在JSON文件中),将当前生存期(实时数据值)预算减去生命周期预算。如果所有广告集生命周期的累积预算达到用户指定的当天的活动预算,则活动将暂停一天,然后在第二天重新启动。
我有几个问题.
发布于 2017-02-12 20:16:54
sdk使用自己的dict值作为对象。使用python的内置函数,隐蔽到str。另外,你真的不需要使用Json转储,你可以把str转换成csv,然后转换成熊猫df。
me = objects.AdUser(fbid='me')
my_accounts = (me.get_ad_accounts())
` my_account = my_accounts[0]
a = str(my_account)发布于 2015-10-29 17:06:38
不能序列化自定义的对象。相反,您可以使用所需的值创建python字典,然后将其序列化:
for adset in adsets:
print(adset[AdSet.Field.name])
adset_json = {'name': adset[AdSet.Field.name],
'budget': adset[AdSet.Field.lifetime_budget]}
json.dump(adset_json, f)用JSON存储和读取非常简单: json.dump()和json.load()
对于每天运行脚本,我建议使用linux机器(或虚拟机)并设置Cron作业(Cron用于调度linux中的任务)。我确信在windows中有一种类似的方法,但我不知道如何做到这一点。
https://stackoverflow.com/questions/33420351
复制相似问题