使用tacyt的一组类和抽象

taza的Python项目详细描述


taza是一个python库,在tacyt上有一组抽象 在查询语言上提供OO层。

安装

通过PIP安装

pip install taza

tacyt的库是在taza内部出售的,这是因为 tacyt python客户端不是使用pip分发的。

用法

这个库目前有两个主要组件,api的包装器 以及查询抽象。

要使用api包装器,必须实例化一个TazaClient类。

fromtaza.tacyt.TacytAppimportTacytAppfromtazaimportTazaClientapp=TacytApp(APP_ID,SECREY_KEY)client=TazaClient(app)

客户机也可以用包装 TacytApp类。不需要将tacyt导入当前 脚本

fromtazaimportTazaClientclient=TazaClient.from_credentials(APP_ID,SECRET_KEY)

查询tacyt

您可以通过 search_apps_with_query方法。此方法将处理分页。 自动。它返回一个生成器,因此实际上不进行任何查询 直到数据收集完毕。

例如,让我们得到whatsapp的apk的sha256散列。

fromtazaimportTazaClientclient=TazaClient.from_credentials(APP_ID,SECRET_KEY)query="packageName:com.whatsapp AND origin:GooglePlay"fields=["sha256"]apps=client.search_apps_with_query(query,fields)# No actual connection to Tacyt done here.forappinapps:# Now the generator starts yielding and therefore connecting to Tacyt.print(app)

查询语言抽象

查询作为字符串发送到tacyt,这意味着查询 必须作为字符串进行管理,这有时会变得混乱。塔扎有一个 允许用python编写查询的oo抽象。

首先,可以用cond类指定每个谓词。在那里 是常用谓词的缩写(至少对我来说是常见的)。

fromtaza.queryimportcond,packageName,fromGooglePlayq1=cond('packageName','com.company.awesome_app')q2=packageName('com.company.awesome_app')str(q1)# => "packageName:com.company.awesome_app"str(q2)# => "packageName:com.company.awesome_app"str(fromGooglePlay)=>"origin:GooglePlay"assertstr(q1)==str(q2)

谓词可以与and、or和not运算符组合。

fromtaza.queryimportcond,packageName,fromGooglePlayq1=cond('packageName','com.company.awesome_app')q2=packageName('com.company.awesome_app')str(q1&fromGooglePlay)# => "packageName:com.company.awesome_app AND origin:GooglePlay"str(q2|-fromGooglePlay)# => "packageName:com.company.awesome_app OR -origin:GooglePlay"

请记住,tacyt每个查询最多只允许40个谓词。

如果需要在同一个运算符下对多个谓词进行agregate,则 可以使用or_manyand_many函数。如果 您需要在一组元素下以编程方式定义查询。

fromtaza.queryimportcond,packageName,fromGooglePlayq1=packageName("app1")q2=packageName("app2")q3=packageName("app3")assertor_many(q1,q2,q3)==(q1|q2|q3)qs=[fromGooglePlay,cond('versionCode','42'),packageName('my.another.app')]assertand_many(*qs)==(fromGooglePlay&cond('versionCode','42')&packageName('my.another.app'))

这些查询被发送到 与基于字符串的查询的发送方式相同。whatsapp的例子可以 像这样重写。

fromtazaimportTazaClientfromtaza.queryimportpackageName,fromGooglePlayclient=TazaClient.from_credentials(APP_ID,SECRET_KEY)query=packageName('com.whatsapp')&fromGooglePlayfields=["sha256"]apps=client.search_apps_with_query(query,fields)# No actual connection to Tacyt done here.forappinapps:# Now the generator starts yielding and therefore connecting to Tacyt.print(app)

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

推荐PyPI第三方库


热门话题
java使用(BluetoothGattCharacteristic)特性中的数据创建、写入和保存csv文件。getValue()   java如何使用groupBy创建一个值为BigDecimal字段平均值的映射?   日期时间Java将iso_即时格式的字符串转换为日期   java如何检索和显示Android firebase的配置文件?   scala AWSJAVASDK:解压缩大小必须小于262144000字节   要应用于列表的java JSTL if条件   java在3个点之间画一个正方形   Kotlin java抽象类IllegaAccessError   java原语双值相等取决于大小?   java有没有一种方法可以对数据集使用compareTo()方法,而不必遍历数据集的每个元素?   java为什么我发送的每个UDP消息都会改变端口源?   重新选择文件时swing Java JTree冻结   java不知道我的游戏是怎么回事   Motif L&F中自定义组合框渲染器中的Java Swing消失文本   java Trade Me API访问前的OAuth