优化报表API客户端库。
tune_reporting的Python项目详细描述
调整报表python
优化报表API客户端库。
安装
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, } ...
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