优化报表API客户端库。

tune_reporting的Python项目详细描述


调整报表python

优化报表API客户端库。

徽章

docsDocumentation StatusLicense Status
infoHit CountContributors
testsTravis-CI Build StatusCode Coverage Status
packagePyPI Package latest releaseSupported versions
otherRequirements Status

安装

pip install tune_reporting

要求

Prerequisites:Python 3.0
API Key:To use SDK, it requires you to Generate API Key

运行示例

make run-examples tmc_api_key=[TMC API KEY]

运行测试

make testtmc_api_key=[TMC API KEY]

课程

有多个可用的优化API类:

  • TuneV2Advertisers
  • TuneV2AdvertiserSites
  • TuneV2AdvertiserStatsActuals
  • TuneV2SessionAuthenticate
  • TuneV3LogsAdvertisersClicks
  • TuneV3LogsAdvertisersImpressions

class TuneV2Advertisers

根据提供的`` tmc api_key``获取此帐户的``广告客户id`

代码

tune_v2_advertisers=TuneV2Advertisers(logger_level=logging.INFO,logger_format=LoggingFormat.JSON,logger_output=LoggingOutput.STDOUT_COLOR)try:tune_v2_advertisers.tmc_auth(tmc_api_key=tmc_api_key)iftune_v2_advertisers.get_advertiser_id(auth_value=tmc_api_key,auth_type=TuneV2AuthenticationTypes.API_KEY,request_retry=None):advertiser_id=tune_v2_advertisers.advertiser_idpprint(advertiser_id)exceptTuneRequestBaseErrorastmc_req_ex:print_traceback(tmc_req_ex)pprint(tmc_req_ex.to_dict())print(str(tmc_req_ex))exceptTuneReportingErrorastmc_rep_ex:pprint(tmc_rep_ex.to_dict())print(str(tmc_rep_ex))exceptExceptionasex:print_traceback(ex)print(get_exception_message(ex))

示例

$ cd examples
$ make example_tune_v2_advertisers tmc_api_key=[ ... TMC API-Key ...]{"asctime": "2017-11-29 08:58:30 -0800", "levelname": "INFO", "name": "tune_reporting", "version": "2.3.1",
"message": "TMC Authentication: Start"}{"asctime": "2017-11-29 08:58:31 -0800", "levelname": "INFO", "name": "requests_mv_integrations", "version": "00.06.01",
"message": "TMC Authentication: Finished", "request_time_msecs": 635}{"asctime": "2017-11-29 08:58:31 -0800", "levelname": "INFO", "name": "tune_reporting", "version": "2.3.1",
"message": "TMC v2 Advertisers: Advertiser ID"}{"asctime": "2017-11-29 08:58:31 -0800", "levelname": "INFO", "name": "requests_mv_integrations", "version": "00.06.01",
"message": "TMC v2 Advertisers: Finished", "request_time_msecs": 260}{"asctime": "2017-11-29 08:58:31 -0800", "levelname": "INFO", "name": "tune_reporting", "version": "2.3.1",
"message": "TMC v2 Advertisers: Advertiser ID: [ADVERTISER ID]"}[ADVERTISER ID]

class TuneV2SessionAuthenticate

在验证提供的``tmc-api-u-key`之后,获取有时间限制的``session token`

代码

tune_v2_session_authenticate= \
    TuneV2SessionAuthenticate(logger_level=logging.INFO)try:iftune_v2_session_authenticate.get_session_token(tmc_api_key=tmc_api_key,request_retry=None):session_token=tune_v2_session_authenticate.session_tokenprint(session_token)exceptTuneRequestBaseErrorastmc_req_ex:print_traceback(tmc_req_ex)pprint(tmc_req_ex.to_dict())print(str(tmc_req_ex))exceptTuneReportingErrorastmc_rep_ex:pprint(tmc_rep_ex.to_dict())print(str(tmc_rep_ex))exceptExceptionasex:print_traceback(ex)print(get_exception_message(ex))

示例

$ cd examples
$ make example_tune_v2_session_authenticate tmc_api_key=[ ... TMC API-Key ...]{"asctime": "2017-11-29 09:11:09 -0800", "levelname": "INFO", "name": "tune_reporting", "version": "2.3.1",
"message": "TMC v2 Session Authenticate: Get Token"}{"asctime": "2017-11-29 09:11:11 -0800", "levelname": "INFO", "name": "requests_mv_integrations", "version": "00.06.01",
"message": "TMC v2 Session Authenticate: Finished", "request_time_msecs": 1550}{"asctime": "2017-11-29 09:11:11 -0800", "levelname": "INFO", "name": "tune_reporting", "version": "2.3.1",
"message": "TMC v2 Session Authenticate", "session_token": "[SESSION TOKEN]"}{"asctime": "2017-11-29 09:11:11 -0800", "levelname": "INFO", "name": "tune_reporting", "version": "2.3.1",
"message": "TMC v2 Session Authenticate: Finished"}[SESSION TOKEN]

class TuneV2AdvertiserSites

根据提供的``tmc api_key`获取此帐户的广告客户移动应用程序(也称为网站)列表。

代码

tune_advertiser_sites=TuneV2AdvertiserSites(logger_level=logging.INFO)try:tune_advertiser_sites.tmc_auth(tmc_api_key=tmc_api_key)forcollect_data_item,collect_errorintune_advertiser_sites.collect(auth_value=tmc_api_key,auth_type=TuneV2AuthenticationTypes.API_KEY,auth_type_use=TuneV2AuthenticationTypes.API_KEY,request_params={'limit':5}):pprint(collect_data_item)exceptTuneRequestBaseErrorastmc_req_ex:print_traceback(tmc_req_ex)pprint(tmc_req_ex.to_dict())print(str(tmc_req_ex))exceptTuneReportingErrorastmc_rep_ex:print_traceback(tmc_rep_ex)pprint(tmc_rep_ex.to_dict())print(str(tmc_rep_ex))exceptExceptionasex:print_traceback(ex)print(get_exception_message(ex))

示例

$ cd examples
$ make example_tune_v2_advertiser_sites tmc_api_key=[ ... TMC API-Key ...]{"asctime": "2017-11-29 09:04:25 -0800", "levelname": "INFO", "name": "tune_reporting", "version": "2.3.1",
"message": "TMC Authentication: Start"}{"asctime": "2017-11-29 09:04:25 -0800", "levelname": "INFO", "name": "requests_mv_integrations", "version": "00.06.01",
"message": "TMC Authentication: Finished", "request_time_msecs": 593}{"asctime": "2017-11-29 09:04:25 -0800", "levelname": "INFO", "name": "tune_reporting", "version": "2.3.1",
"message": "Start Advertiser Sites find"}{"asctime": "2017-11-29 09:04:26 -0800", "levelname": "INFO", "name": "requests_mv_integrations", "version": "00.06.01",
"message": "TuneV2AdvertiserSites.collect: Finished", "request_time_msecs": 263}[JSON RESPONSE]{'id': 533,
    'name': 'TEST UP TIME - DONT DELETE',
    'package_name': 'unknown',
    'status': 'active',
    'url': 'http://website.com',
}
...

class TuneV2AdvertiserStatsActuals

根据提供的``tmc_api_key`记录此帐户的广告客户实际统计信息。

代码

tune_v2_advertiser_stats_actuals= \
    TuneV2AdvertiserStatsActuals(logger_level=logging.INFO,logger_format=LoggingFormat.JSON,logger_output=LoggingOutput.STDOUT_COLOR)tz=pytz.timezone("America/New_York")yesterday=datetime.now(tz).date()-timedelta(days=1)str_yesterday=str(yesterday)try:auth_response=tune_v2_advertiser_stats_actuals.tmc_auth(tmc_api_key=tmc_api_key)assertauth_responsetune_v2_advertiser_stats_actuals.collect(auth_value=tmc_api_key,auth_type=TuneV2AuthenticationTypes.API_KEY,auth_type_use=TuneV2AuthenticationTypes.API_KEY,start_date=str_yesterday,end_date=str_yesterday,request_params={'timezone':'America/Los_Angeles','format':TuneV2AdvertiserStatsFormats.CSV,'fields':("ad_clicks,""ad_clicks_unique,""ad_impressions,""ad_impressions_unique,""ad_network_id,""advertiser_id,""country.code,""date_hour,""events,""installs,""is_reengagement,""payouts,""publisher_id,""publisher_sub_ad.ref,""publisher_sub_adgroup.ref,""publisher_sub_campaign.ref,""publisher_sub_publisher.ref,""publisher_sub_site.ref,""site_id"),'group':("country_id,""is_reengagement,""publisher_id,""publisher_sub_ad_id,""publisher_sub_adgroup_id,""publisher_sub_campaign_id,""publisher_sub_publisher_id,""publisher_sub_site_id,""site_id"),'timezone':"America/Los_Angeles",'limit':5},request_action=TuneV2AdvertiserStatsActions.EXPORT,request_retry={'delay':15,'timeout':30,'tries':10})exceptTuneRequestBaseErrorastmc_req_ex:print_traceback(tmc_req_ex)pprint(tmc_req_ex.to_dict())print(str(tmc_req_ex))exceptTuneReportingErrorastmc_rep_ex:pprint(tmc_rep_ex.to_dict())print(str(tmc_rep_ex))exceptExceptionasex:print_traceback(ex)print(get_exception_message(ex))forrowinlist(tune_v2_advertiser_stats_actuals.generator):pprint(row)

示例

$ cd examples
$ make example_tune_v2_advertiser_stats_actuals_export_download tmc_api_key=[ ... TMC API-Key ...]{"asctime": "2017-11-29 09:17:21 -0800", "levelname": "INFO", "name": "tune_reporting", "version": "2.3.1",
"message": "TMC Authentication: Start"}{"asctime": "2017-11-29 09:17:22 -0800", "levelname": "INFO", "name": "requests_mv_integrations", "version": "00.06.01",
"message": "TMC Authentication: Finished", "request_time_msecs": 516}{"asctime": "2017-11-29 09:17:22 -0800", "levelname": "INFO", "name": "tune_reporting", "version": "2.3.1",
"message": "TMC v2 Advertiser Stats: Collect: export"}{"asctime": "2017-11-29 09:17:23 -0800", "levelname": "INFO", "name": "requests_mv_integrations", "version": "00.06.01",
"message": "TMC v2 Advertiser Stats Find: Finished", "request_time_msecs": 1490}[ADVERTISER ACTUALS STATS]{'ad_clicks': '48',
    'ad_clicks_unique': '0',
    'ad_impressions': '0',
    'ad_impressions_unique': '0',
    'ad_network_id': 0,
    'advertiser_id': 877,
    'conversions': '0',
    'country': {'code': 'NL', 'name': 'Netherlands'},
    'country_id': 528,
    'currency_code': 'USD',
    'date_hour': '2017-11-28 19:00:00',
    'events': '0',
    'installs': '0',
    'is_reengagement': '0',
    'payouts': '0.00000',
    'publisher': {'name': 'PINGDOM DO_NOT_DELETE'},
    'publisher_id': 142476,
    'publisher_sub_ad': {'ref': ''},
    'publisher_sub_ad_id': '0',
    'publisher_sub_adgroup': {'ref': ''},
    'publisher_sub_adgroup_id': '0',
    'publisher_sub_campaign': {'ref': ''},
    'publisher_sub_campaign_id': '0',
    'publisher_sub_publisher': {'ref': ''},
    'publisher_sub_publisher_id': '0',
    'publisher_sub_site': {'ref': ''},
    'publisher_sub_site_id': '0',
    'purchase_validation_status': '0',
    'site': {'mobile_app_type': 'iOS',
        'package_name': 'unknown',
        'store_app_id': None,
    },
    'site_id': 533,
}
...

许可证

MIT License

发布历史

2.7.3(2018-02-16)

  • 迁移到github/tunelab

2.7.2(2018-02-07)

  • 更新的requirements.txt

2.7.0(2018-01-28)

  • 升级为使用PyHttpStatus实用程序0.2.2。
  • 升级为使用请求MV集成0.7.5。

2.6.1(2018-01-25)

  • 迁移到github/tuneinc

2.6.0(2017-12-10)

  • 阅读docs.org

2.4.0(2017-11-29)

  • 自述
  • 特拉维斯ci
  • 测试
  • 示例

2.2.3(2017-11-19)

  • 测试

2.2.1(2017-10-27)

  • 支持记录mv集成重构

2.2.0(2017-03-26)

  • 将“json”替换为“ujson”

2.1.8(2017-03-12)

  • 切换到使用安全的cast包

2.1.7(2017-02-27)

  • 要求

2.1.6(2017-02-07)

  • 要求

2.1.5(2017-02-03)

  • python 3.6升级

2.1.2(2017-01-27)

  • 清理
  • 要求

2.1.0(2017-01-14)

  • readme.rst
  • history.rst
  • setup.py

2.0.0(2016-11-20)

  • 调整报告API v3

1.1.1(2016-01-25)

  • 调整报告API v2
  • 处理导出和日志的更改

1.0.0(2015-04-01)

  • 调整报告API v2
  • 初始PYPI版本

0.0.1(2014-10-15)

  • First Commit

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java JAXB封送字符串,具有xml值,且不转义该值   java ModelMapper转换器不工作   java像HH000412或HCANN000001这样的前缀是什么意思?   验证日期输入修复java。lang.numberformatexception错误   当表具有外键时,java Telosys代码生成失败   如何使所有派生类一起只能实例化一个实例的单例抽象基类?(爪哇)   java如何在非静态服务类中使用广播接收器   java nutch爬虫相对URL问题   使用Jboss DMR下载/保存java附件   Rest模板:无法提取响应:当我们得到xml响应时,没有找到适合响应类型的HttpMessageConverter,没有绑定到JAVA对象   java如何编写可扩展窗格/面板/卡的代码   java是在ITreeViewerListener的treeExpanded()之前调用ContentProvider的getChildren()吗?   java将JComponent添加到小程序窗格   java混淆:使用简单逻辑的Flames程序