当前位置:首页 > 科技  > 软件

利用开放接口,如何一步步打造自己的独特图片网站

来源: 责编: 时间:2023-09-18 21:41:54 209观看
导读在进行文章撰写时,寻找适当的配图是一项重要的任务。然而,尽管我尝试在各大网站上寻找合适的图片资源,但往往面临两个主要问题:其一,这些网站大多需要付费使用,这无疑增加了我的经济负担;其二,即使有些网站提供免费图片,但其

在进行文章撰写时,寻找适当的配图是一项重要的任务。然而,尽管我尝试在各大网站上寻找合适的图片资源,但往往面临两个主要问题:其一,这些网站大多需要付费使用,这无疑增加了我的经济负担;其二,即使有些网站提供免费图片,但其质量却令人堪忧。t0e28资讯网——每日最新资讯28at.com

为了解决这个令人头疼的问题,我自己动手一个搜索图片的网站,解决了日常文章配图的问题。整体的界面如下:t0e28资讯网——每日最新资讯28at.com

t0e28资讯网——每日最新资讯28at.com

图片的加载采用瀑布流的模式。t0e28资讯网——每日最新资讯28at.com

这个网站是站在巨人的肩膀上完成的,为什么这么说呢?图片的来源是调用头条号的图片库,前端是使用github开源的瀑布流插件。t0e28资讯网——每日最新资讯28at.com

分析头条图片库的API

打开头条号发布文章,点击添加图片,会出现如下图t0e28资讯网——每日最新资讯28at.com

t0e28资讯网——每日最新资讯28at.com

通过分析这个接口,发现它并没有做认证,携带几个路径参数。t0e28资讯网——每日最新资讯28at.com

t0e28资讯网——每日最新资讯28at.com

在无痕浏览器重放这个接口,这能正常获取数据,如下图:t0e28资讯网——每日最新资讯28at.com

t0e28资讯网——每日最新资讯28at.com

现在图片的数据源找到了,可以把它做成接口,给前端用户调用了。这里我选择熟悉的FastAPI做接口。t0e28资讯网——每日最新资讯28at.com

接口代码实现

从上述分析接口发现,路径参数只有三个参数是动态变化的。所以,我们把它做成变量的形式:t0e28资讯网——每日最新资讯28at.com

from pydantic import BaseModelclass TuotiaoParams(BaseModel):    page: int=0#图片页数    size: int = 30#展示图片的数量    term: str=None#搜索的关键字

然后,把请求头条号API接口封装成一个函数,方便后续调用:t0e28资讯网——每日最新资讯28at.com

import requestsfrom fake_useragent import UserAgentfrom schemas import TuotiaoParamsfrom loguru import loggerdef search_pic(params:TuotiaoParams):    try:        url = "https://dficimage.toutiao.com/api/proxy/get"        params = {            "from": params.page,            "size": params.size,            "term": params.term,            "search_id": 7274062948258316581,            "user_id": 68783357974,            "media_id": 1609422238702596,            "search_from": "search",            "position": "article_icstock",            "platform": "toutiaohao",            "path": "/micro/search"        }        res = requests.get(            url,            params=params,            headers={"User-Agent":UserAgent().random},            timeout=10            )        if res.json().get("code") == 1:            logger.info("获取头条的图片的数据:{}".format(res.json()))            return res.json().get("data").get("data").get("hits")    except Exception as e:        logger.error('抓取头条的图片错误:{}'.format(e))

利用FastAPI把头条号API做成接口模式:t0e28资讯网——每日最新资讯28at.com

from  fastapi import FastAPIfrom fastapi.middleware.cors import CORSMiddlewarefrom toutiao import search_picfrom schemas import SearchKeyWork,TuotiaoParamsimport uvicornapp = FastAPI()# 添加跨域中间件app.add_middleware(    CORSMiddleware,    allow_origins=["*"],  # 允许所有来源访问    allow_methods=["*"],  # 允许所有HTTP方法    allow_headers=["*"],  # 允许所有HTTP头)@app.post("/image_toutaio")def iamge_toutiao(params:TuotiaoParams):    return {"code":1,"data":search_pic(params)}if __name__ == "__main__":    uvicorn.run(app)

执行如下代码启动程序,就可以正常访问接口:t0e28资讯网——每日最新资讯28at.com

python main.py

t0e28资讯网——每日最新资讯28at.com

这样后台的接口,就完成了。t0e28资讯网——每日最新资讯28at.com

前端搭建

前端采用的github上开源的瀑布流图片展示模板,然后,自己添加搜索功能的。t0e28资讯网——每日最新资讯28at.com

https://github.com/heikaimu/vue3-waterfall-plugint0e28资讯网——每日最新资讯28at.com

下载vue3-waterfall-plugin项目到本地,执行如下代码安装依赖:t0e28资讯网——每日最新资讯28at.com

pnpm install

安装完依赖,执行如下代码,启动前端:t0e28资讯网——每日最新资讯28at.com

pnpm run dev

启动成功之后,输入想要的图片进行搜索,如图:t0e28资讯网——每日最新资讯28at.com

t0e28资讯网——每日最新资讯28at.com

  • 项目的地址: https://github.com/didiplus/vue3-waterfall-plugin
  • 演示地址: http://img.kwpmp.cn/
  • 演示备用地址: https://cerulean-florentine-527213lify.app/

本文链接:http://www.28at.com/showinfo-26-10473-0.html利用开放接口,如何一步步打造自己的独特图片网站

声明:本网页内容旨在传播知识,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。邮件:2376512515@qq.com

上一篇: Python应知小技巧:如何用更少的代码做更多的事情

下一篇: C语言操作寄存器和函数指针

标签:
  • 热门焦点
  • 鸿蒙OS 4.0公测机型公布:甚至连nova6都支持

    鸿蒙OS 4.0公测机型公布:甚至连nova6都支持

    华为全新的HarmonyOS 4.0操作系统将于今天下午正式登场,官方在发布会之前也已经正式给出了可升级的机型产品,这意味着这些机型会率先支持升级享用。这次的HarmonyOS 4.0支持
  • 石头智能洗地机A10 Plus体验:双向自清洁治好了我的懒癌

    石头智能洗地机A10 Plus体验:双向自清洁治好了我的懒癌

    一、前言和介绍专为家庭请假懒人而生的石头科技在近日又带来了自己的全新旗舰新品,石头智能洗地机A10 Plus。从这个产品名上就不难看出,这次石头推出的并不是常见的扫地机器
  • 从 Pulsar Client 的原理到它的监控面板

    从 Pulsar Client 的原理到它的监控面板

    背景前段时间业务团队偶尔会碰到一些 Pulsar 使用的问题,比如消息阻塞不消费了、生产者消息发送缓慢等各种问题。虽然我们有个监控页面可以根据 topic 维度查看他的发送状态,
  • 虚拟键盘 API 的妙用

    虚拟键盘 API 的妙用

    你是否在遇到过这样的问题:移动设备上有一个固定元素,当激活虚拟键盘时,该元素被隐藏在了键盘下方?多年来,这一直是 Web 上的默认行为,在本文中,我们将探讨这个问题、为什么会发生
  • 东方甄选单飞:有些鸟注定是关不住的

    东方甄选单飞:有些鸟注定是关不住的

    文/彭宽鸿编辑/罗卿东方甄选创始人俞敏洪带队的“7天甘肃行”直播活动已在近日顺利收官。成立后一年多时间里,东方甄选要脱离抖音自立门户的传闻不绝于耳,“7
  • 华为Mate 60保护壳曝光:硕大后置相机模组 凸起程度有惊喜

    华为Mate 60保护壳曝光:硕大后置相机模组 凸起程度有惊喜

    这段时间以来,关于华为新旗舰的爆料日渐密集。据此前多方爆料,今年华为将开始恢复一年双旗舰战略,除上半年推出的P60系列外,往年下半年的Mate系列也将
  • iQOO 11S评测:行业唯一的200W标准版旗舰

    iQOO 11S评测:行业唯一的200W标准版旗舰

    【Techweb评测】去年底,iQOO推出了“电竞旗舰”iQOO 11系列,作为一款性能强机,该机不仅全球首发2K 144Hz E6全感屏,搭载了第二代骁龙8平台及144Hz电竞
  • iQOO Neo8 Pro真机谍照曝光:天玑9200+和V1+旗舰双芯加持

    iQOO Neo8 Pro真机谍照曝光:天玑9200+和V1+旗舰双芯加持

    去年10月,iQOO推出了iQOO Neo7系列机型,不仅搭载了天玑9000+,而且是同价位唯一一款天玑9000+直屏旗舰,一经上市便受到了用户的广泛关注。在时隔半年后,
  • 微软发布Windows 11新版 引入全新任务栏状态

    微软发布Windows 11新版 引入全新任务栏状态

    近日,微软发布了Windows 11新版,而Build 22563更新主要引入了几周前曝光的平板模式任务栏等,系统更流畅了。更新中,Windows 11加入了专门针对平板优化的任务栏
Top