Python北京垃圾分类文本识别 API接口。你是什么垃圾?

介绍

这个小method可以链接一个免费的API端口,当我们输入垃圾名称,比如【西瓜皮】时,返回这个垃圾的种类。我在北京所以用了北京的垃圾分类名称。最后这个method返回的是【厨余垃圾】+一张厨余垃圾的图片。

我们先来介绍一下今天会用到的端口

接口大全

感谢这个网站,这个网站里面有很多其他的免费API,大家可以依照规定使用。
接口大全

垃圾分类api


垃圾分类API的documentation

这个API可以通过文本(垃圾名称)查询垃圾的分类。

  1. 这个API垃圾一共有四个分类:“湿垃圾或厨余垃圾”,“干垃圾或其他垃圾”,“有害垃圾或干垃圾”,“可回收垃圾”。
  2. 我想做一个北京的版本,所以将不用同样的字样。但是本质都是一样的。北京的垃圾是:厨余垃圾,不可回收垃圾,有害垃圾,可回收垃圾。
  3. 如果没有这个文本,那么返回的code就不是200.如果有这个垃圾,response的code就是200

具体操作

各种安装包。
其中后两个是为了加载图片

import json
import requests as req
from PIL import Image
from io import BytesIO

导入网络图片

为了让这个method更加生动,我决定除了返回垃圾分类的文本以外,返回这个分类所对应的图片:
在这之前,我找了四个分类对照的图片,以及一张“道歉图”(找不到这个垃圾时用它)

下面这个function是根据垃圾类别名称,return相应的图片。

def get_image(name):
    nonrecy_src = "https://timgsa.baidu.com/timg?image&quality=80&size=b9999_10000&sec=1591286825623&di=4a95ea2985f4c231de0f01433f8a2a87&imgtype=0&src=http%3A%2F%2Fbpic.588ku.com%2Felement_origin_min_pic%2F17%2F12%2F28%2F4451ab8176248f57016323323fcdcec5.jpg%2521%2Ffwfh%2F804x857%2Fquality%2F90%2Funsharp%2Ftrue%2Fcompress%2Ftrue"
    recy_src  ="https://timgsa.baidu.com/timg?image&quality=80&size=b9999_10000&sec=1591287153364&di=c0f9464da710b11508f209d316b1d548&imgtype=0&src=http%3A%2F%2F5b0988e595225.cdn.sohucs.com%2Fimages%2F20190716%2Fa3518a7df283450396359cb5a423dd17.jpeg"
    toxic_src = "https://timgsa.baidu.com/timg?image&quality=80&size=b9999_10000&sec=1591287186958&di=0a2d2e90d1863ce9707a71258c11a6ec&imgtype=0&src=http%3A%2F%2F5b0988e595225.cdn.sohucs.com%2Fq_70%2Cc_zoom%2Cw_640%2Fimages%2F20190119%2F464f6034793b4fc9810976e9d2106a07.jpeg"
    kitchen_src = "https://timgsa.baidu.com/timg?image&quality=80&size=b9999_10000&sec=1591287248004&di=c71c0dba2ac8dde38b9802a354acef2b&imgtype=0&src=http%3A%2F%2Fimgsa.baidu.com%2Fexp%2Fw%3D500%2Fsign%3Db3d7338ad188d43ff0a991f24d1cd2aa%2Faa64034f78f0f736e017d8fe0d55b319eac41367.jpg"
    dic = {"不可回收垃圾":nonrecy_src,"有害垃圾":toxic_src,"可回收垃圾":recy_src,"厨余垃圾":kitchen_src}
    img_src = dic[name]
    response = req.get(img_src)
    image = Image.open(BytesIO(response.content))

    return image
get_image("厨余垃圾") #一个例子

Python北京垃圾分类文本识别 API接口。你是什么垃圾?_第1张图片

使用API接口

我这个method get_type(name) 输入垃圾的名称(string),返回垃圾的类别(string),外加一张该类别对应的图片。

def get_type(name):
    url = "https://api.66mz8.com/api/garbage.php?name="+name
    r = req.get(url)
    state = json.loads(r.text)
#如果code不是200,那就提示“这个垃圾不存在”
    if state["code"]!= 200:
        response = req.get("https://ss1.bdstatic.com/70cFvXSh_Q1YnxGkpoWK1HF6hhy/it/u=3493512365,3817582710&fm=26&gp=0.jpg")
        image = Image.open(BytesIO(response.content))
        display(image)
        return "无法找到这个垃圾,试试换一个词吧!"
    # 我在这里将所有的垃圾转换成北京的版本
    typ = state["data"]
    if typ == "干垃圾或其他垃圾":
        typ = "不可回收垃圾"
    elif typ == "湿垃圾或厨余垃圾":
        typ = "厨余垃圾"
    elif typ == "有害垃圾或干垃圾":
        typ = "有害垃圾"
    img = get_image(typ) #导入图片
    display(img) #展示图片
    return(typ) #最后返回垃圾类别的文本

放进main method

使用input功能,提示用户输入垃圾名称,调用get_type 这个method!

def main():
    name = input("垃圾名称:(比如:西瓜皮)")
    print(get_type(name))
    


if __name__ == '__main__':
    main()

你可能感兴趣的:(API)