Python在JSON中存储Facebook广告集并创建Tim

2024-04-24 05:28:07 发布

您现在位置:Python中文网/ 问答频道 /正文

我是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)

结果:

^{pr2}$

这个脚本应该允许活动级别的预算控制,方法是在一天开始时将给定活动的广告集id和生存期预算存储到JSON中。然后,这个脚本每6小时轮询一次生存期预算,用每天早上存储在JSON文件中的生存期预算减去当前的生存期预算(实时数据值)。如果所有广告集生存期的累计预算达到用户指定的当天活动预算,则活动将暂停一天,然后在第二天重新启动。在

我有几个问题。。。。。在

  1. 我如何克服这个JSON问题,即我试图存储的数据不可序列化?

  2. 如何存储/读取JSON对象以便减去生存期预算?

  3. 在Python中我能做些什么让脚本每天运行并运行一整天,然后在一天结束时关闭呢。


Tags: namein脚本idjsonfieldfieldsfacebook
2条回答

不能序列化自定义对象。相反,您可以使用所需的值创建一个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中有一个等效的方法来实现这一点,但我不知道怎么做。在

sdk正在使用它自己的dict值作为对象。使用python的内置函数covert to str。而且,您实际上不需要使用Json转储,您只需将str转换为csv,然后再转换为pandas df。在

 me = objects.AdUser(fbid='me')
    my_accounts = (me.get_ad_accounts())
`   my_account = my_accounts[0]
    a = str(my_account)

相关问题 更多 >