用于与MediaMath的Terminalone API交互的包。

TerminalOne的Python项目详细描述


终端python

image

codacy badge

codacy badge coverage

用于mediamath的api的python库。这个库由类组成 用于处理T1 API和管理实体。它是为python编写的 2.7和>;=3.3。与python 3的兼容性是通过捆绑实现的 模块六个

API文档可在[<;https://apidocs.mediamath.com/>; <;https://apidocs.mediamath.com/>;]{.title ref}.

安装

在虚拟环境中使用pip安装很简单:

$ pip install TerminalOne

或者,将存储库的最新标记下载为tarball或 压缩文件并运行:

$ python setup.py install

执行和管理API

服务对象

terminalone.t1用户名=密码=api_key=noneclient_secret=noneauth_method=none会话id=环境="生产"API基础=令牌=令牌更新程序=

这个包的起点。身份验证和会话,实体 检索、创建等都在这里处理。参数:

  • 用户名:有效T1用户的用户名(即,在 [<;https://t1.mediamath.com>; <;https://t1.mediamath.com>;]{.title ref}}.
  • 密码:对应T1用户的密码
  • api_key:在mediamath的开发人员处生成的经批准的api key 门户
  • client_secret:用于OAuth2身份验证的client secret
  • 会话id:对于接收会话id而不是 用户凭据,例如T1的"应用"选项卡中的应用。API键 应该还是P提供。
  • auth_method:对应于 验证要使用的会话。当前的"cookie"和 支持"OAuth2"。通常会检测到身份验证方法, 所以这可以写下来。(v1.2.0中的新省略!)
  • 令牌:会话生成的dict oauth2令牌。如果你有 一个web应用程序,您可以在浏览器会话中存储令牌,然后 使用它生成一个新的T1会话。请参阅文档 示例。
  • token_updater:带有一个参数的函数,token,用于 在自动令牌刷新时更新令牌数据库。如果没有 如果令牌具有 被刷新了。此警告将在令牌中携带令牌 参数。
  • 可以提供环境API基础来指定 请求继续。

T1 Python包括对资源所有者代码授权的支持。包括一个 客户ID和密码以及您的凭据:

>>> t1 = T1(auth_method='oauth2-resourceowner', client_id="my_client_id", client_secret="my_secret", username="my@user", password="mypass")

如果您有一个特定的api库(例如,如果您正在测试 (注意:沙盒环境还没有 可用),您可以将api_base关键字与域一起使用。为了 生产端点,无论是环境还是api_base都不应该是 提供:

>>> t1 = terminalone.T1("myusername", "mypassword", "my_api_key", api_base="myqaserver.domain.com", auth_method="cookie")

如果接收到(克隆的)会话ID,例如 应用程序,您将没有用户凭据来登录。相反, 提供会话ID和API密钥:

>>> t1 = terminalone.T1(session_id="13ea5a26e77b64e7361c7ef84910c18a8d952cf0", api_key="my_api_key")

Cookie身份验证(用户名/密码)存在,但不建议用于 使用。

>>> import terminalone
>>> t1 = terminalone.T1("myusername", "mypassword")

获取实体和集合

实体和集合检索。参数:

t1.获取集合实体=子项=限制=包括==页面限制=100页面偏移量=0排序依据="id"全部获取=错误父项查询=计数=

  • 收藏:T1收藏,例如"广告商"
  • 实体:从T1检索的实体的整数ID
  • child:特定实体的子对象,例如"dma""acl"
  • limit:dict查询关系实体,例如 {"广告客户":123456}
  • 包括:str/关系列表:
    • 字符串,例如
      • t1.get('广告客户',include='代理')
    • 横向关系列表,例如
      • t1.get('广告客户',include=['代理','广告服务器')
    • 层次关系的列表/字符串列表,例如
      • t1.get('广告客户',include=[['代理','组织',]
      • t1.get('广告客户',include=[['代理','组织','广告服务器']
  • full:检索多个实体时,指定要 返回的完整记录。例如
    • "活动"(返回活动实体的完整记录)
    • true(返回的所有实体的完整记录),
    • ["活动","广告客户"](活动和 广告商返回)
  • 页限制和页偏移处理分页。页面限制 指定一次返回的实体数、默认值和最大值 100。page_offset指定从哪个实体开始 页,
  • 排序方式:排序顺序。默认"id"。例如,"-id""name"
  • get_all:是检索查询的所有结果,还是仅检索 一页纸。与页面限制互斥m>页面偏移量
  • parent:仅返回具有此父id的实体。用于 观众席
  • 查询:搜索参数。注意:使用查找要简单得多 而不是get,允许find构造查询。
  • count:bool将实体数作为第二个参数返回
  • 其他参数:附加的、特定于服务的参数 通过。

|引发:terminalone.errors.clienterror如果页限制>;100, terminalone.errors.apierroron>;399 http状态代码。 |返回:如果指定了单个实体,则返回单个实体 对象。如果有多个实体,则生成每个实体的生成器。

收藏

>>> advertisers = t1.get("advertisers")
>>> for advertiser in advertisers:
...     print(advertiser)
...
Advertiser(id=1, name="My Brand Advertiser", _type="advertiser")

返回生成器超过前100个广告商(如果用户 只能访问更少的),按ID升序排列。每个实体是 有限对象,仅包含idname仅包含 表示API返回的类型,在本例中为"广告客户")。

>>> ag_advertisers = t1.get("advertisers",
...                         limit={"agency": 123456},
...                         include="agency",
...                         full="advertiser")
>>> for advertiser in ag_advertisers:
...     print(advertiser)
...
Advertiser(id=1, name="My Brand Advertiser", agency=Agency(id=123456, name="Operating Agency", _type="agency"), agency_id=123456, status=True, ...)

在代理ID 123456内生成超过100个广告商。每个 广告客户将其母代理对象作为一个属性。这个 广告客户对象是完整的实体,因此返回所有字段。 代理对象是有限的,与广告商有相同的领域 上一个示例。

>>> campaigns, count = t1.get("campaigns",
...                           get_all=True,
...                           full=True,
...                           sort_by="-updated_on")
>>> print(count)
539
>>> for campaign in campaigns:
...     print(campaign)
Campaign(id=123, name="Summer Acquisition", updated_on=datetime.datetime(2015, 4, 4, 0, 15, 0, 0), ...)
Campaign(id=456, name="Spring Acquisition", updated_on=datetime.datetime(2015, 4, 4, 0, 10, 0, 0), ...)
...

生成器覆盖用户可访问的每个活动,按 上次更新的降序。第二个参数是整数 API返回的已检索的活动。get_all=true删除 需要担心分页---它是由sdk内部处理的。

$ pip install TerminalOne
0

唯一的目的是获得用户可访问的广告商数量。 使用page_limit=1最小化不必要的资源,并分配给 丢弃检索到的单个实体。

搜索实体

通过关系id限制实体是限制实体的一种方法,但是我们 也可以使用find

t1.查找集合变量运算符候选项, **kwargs

  • collection:T1 collection,与get使用相同
  • 变量:要查询的字段,例如名称
  • 运算符:算术运算符,例如"<;"
  • 候选值:查询值,例如"jonsmith*"
  • kwargs:要传递到get的其他关键字参数。所有 适用于get的关键字参数也适用于此处。

模块终端。过滤器

  • 输入
  • 非空
  • 等于
  • 不等于
  • 更大
  • 大于或等于
  • 更少
  • 小于或等于
  • 大小写字符串
$ pip install TerminalOne
1

以"绿色"命名的所有创意的生成器。包括 概念. < /P>

$ pip install TerminalOne
2

活动ID 123、234和345上的生成器。注意使用时 terminalone.filers.in变量自动识别,以便 论点实际上被忽略了。此外,候选人必须是 整数标识。

$ pip install TerminalOne
3

使用非空关键字字段生成前100个像素以上的图像。

$ pip install TerminalOne
4

活动ID 123456中的活动策略。

实体

可以使用get检索特定实体,实体id为 第二个参数,或使用实体关键字。然后您可以访问 该实体的属性使用实例属性:

$ pip install TerminalOne
5

terminalone.entity

  • 设置(属性)set将对象属性中的所有数据映射到 实体
  • 保存(数据=无)

:保存实体。如果提供了数据,请发送。通常与 没有参数。

注意:通常与子类交互,而不是与"实体"交互`` 本身

如果出于某种原因,您需要像字典一样访问对象(用于 例如,如果需要遍历字段或转储到csv,则 方法get_properties()可用。但是,您不应该修改 \u属性直接,因为它会导致不正确的行为。

一旦有了实例,就可以修改它的值,然后保存它 回来。返回值none表示成功。否则,错误是 上升,

$ pip install TerminalOne
6

通过调用实例上的t1.new创建新实体。

T1.新建集合报表=无属性=无

  • 收藏:T1收藏,同上
  • 报告:新的报告对象;在报告中讨论
  • 属性:要传递到新对象的属性。
$ pip install TerminalOne
7

properties是一个可选的映射对象,具有要传递的属性 在。可以使用对象的字符串表示形式(例如 "concept"以上);或者,可以从 终端。型号

$ pip install TerminalOne
8

子实体

要检索子实体(例如,/users/:id/permissions), 在对T1的调用中包含子参数

$ pip install TerminalOne
9

报告

要使用mediamath的reports api,请使用t1.new

$ python setup.py install
0

terminalone.report

  • 元数据可用报表或单个报表的元数据。 在第一次调用时计算(发出API请求);缓存以备将来使用 电话:
  • 参数请求参数字典
  • 设置(数据)使用映射对象设置请求参数数据
  • 报表uri(报表)获取报表的uri存根
  • get(as_dict=false)get report data(需要调用 报告名称)。返回标题和csv.reader。如果是 如果为true,则返回数据为csv.dictreader

这是一个元数据对象,可用于检索有关 哪些报告可用。

$ python setup.py install
1

您可以通过调用 报表.报表uri

$ python setup.py install
2

这只是通往 report.metadata[报告]['uri_data']。从 最好假设名称与 树桩。通过实例化 它:

$ python setup.py install
3

您可以从report.metadata中访问有关此报表的元数据 财产也是。若要获取数据,请首先使用 report.set并使用report.get方法,该方法返回一个元组 (标题,数据)

$ python setup.py install
4

headers是一个标题列表,而data是一个csv.reader对象。 当前版本中不存在类型转换,但暂时 计划未来的日期。

有关这些参数的更多信息可以找到 这里

附录

我们为什么不直接导入对象类呢?例如,为什么 这不管用吗?

$ python setup.py install
5

这里的答案是,我们需要保持一个共同的会议,以便我们可以 在请求之间共享会话信息。这允许你与 许多对象,只传递一次身份验证信息。

$ python setup.py install
6 < H1> CONTACT < /H1 >

有关API工作流或此库的问题,请发送电子邮件 [<;开发人员@mediamath.com>; <;mailto:developers@mediamath.com">developers@mediamath.com>;]{.title ref}

版权所有

Mediamath 2015-2017版权所有。保留所有权利。

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

推荐PyPI第三方库


热门话题
面向java语句的方法与面向表达式的方法   密码学如何在java中为json对象签名?   是否可以通过java程序知道给定卡夫卡消费群体的消费偏移量?   打印字符时出现java未知问号   java为JFrame设置背景色   在ubuntu中检查java版本时linux权限被拒绝   如何用java创建xml模式   java无法在远程服务器上运行Vaadin应用程序   java智能垃圾收集?   java如何在SpringMVC中设置缓存头?   在unix计算机上运行java应用程序a:>签名以输入内容   Java、Apache Commons配置XML属性   使用ArrayList调用Java未经检查的方法   在文本文件中查找并替换单词(Java GUI)   java Android Studio无法检测到JDK7或更新版本   java从socket的有效负载获取事件消息   安卓中java调用子类方法   java如何通过点击超链接来运行jar文件(Firefox)