个人网站链接:
http://www.horosama.com

随机图片接口链接:

  • api.horosama.com # 主页面
  • https://api.horosama.com/random.php # 实际接口地址

使用Sakurairo主题的时候,主页背景等都可以选择用随机图片接口,但看了下说明文档里提供的接口,有的不维护了,有的不稳定速度慢,可以用的一些接口里的图自己也不太喜欢,于是萌发了自己搭建一个随机图片接口的想法。

经过万能的百度,参考了以下几个链接,最终成功搭建了出来~:

  • 【vps】教你写一个自己的随机图API
  • 超简单随机图片API制作教程

下面记录一下自己的搭建过程~首先当然是准备图包啦,这里我用了自己以前写的python自动抓取百度图片的脚本,代码如下:

#! 自己的python解析器地址
#-*-coding:utf-8-*-import random
import re
import os
import time
import requestsua_list = ['Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Maxthon 2.0','Mozilla/5.0 (Macintosh; Intel Mac OS X 10_7_0) AppleWebKit/535.11 (KHTML, like Gecko) Chrome/17.0.963.56 Safari/535.11','User-Agent:Opera/9.80 (Windows NT 6.1; U; en) Presto/2.8.131 Version/11.11','Mozilla/5.0 (Windows NT 6.1; rv:2.0.1) Gecko/20100101 Firefox/4.0.1','Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0)','Mozilla/5.0 (Windows; U; Windows NT 6.1; en-us) AppleWebKit/534.50 (KHTML, like Gecko) Version/5.1 Safari/534.50','Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Trident/5.0','Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1','Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1','Mozilla/5.0 (Macintosh; Intel Mac OS X 10.6; rv:2.0.1) Gecko/20100101 Firefox/4.0.1',
]class BaiduPicture:def __init__(self):self.url = 'https://image.baidu.com/search/acjson?{}'def get_image(self, word, page, pn_end,index_start,path):"""_summary_:获取图片链接并保存图片Args:word (str)          : 图片关键词page (int)          : 起始页数pn_end (int)        : 终止页数index_start (int)   : 起始索引path (str)          : 保存路径"""word = wordimage_url = []for i in range(page, pn_end + 1):params = {'tn': 'resultjson_com','logid': '###',# 换成自己的logid'ipn': 'rj','ct': '201326592','is': '','fp': 'result','fr': '','word': word,'queryWord': word,'cl': '2','lm': '-1','ie': 'utf-8','oe': 'utf-8','adpicid': '','st': '-1','z': '','ic': '0','hd': '','latest': '','copyright': '','s': '','se': '','tab': '','width': '','height': '','face': '0','istype': '2','qc': '','nc': '1','expermode': '','nojc': '','isAsync': '','pn': str(30 * i),'rn': '30','gsm': '5a',}response = requests.get(url=self.url, headers={'User-Agent': random.choice(ua_list)}, params=params)response.encoding = 'utf-8'response = response.textre_pat = '"thumbURL":"(.*?)"'pattern = re.compile(re_pat, re.S)result = pattern.findall(response)if (len(result) > 0):image_url.extend(result)time.sleep(random.random()+1)if len(image_url) > 0:print('共{}个图片需要下载'.format(len(image_url)))for index, image in enumerate(image_url):file_name = word + "_" + str(index_start+index + 1) + '.jpg'time.sleep(random.randint(1, 2))self.save_image(image, file_name, word,path)print('下载完成')def save_image(self, url, file_name, word,path):"""_summary_:保存图片Args:url (str)         : 图片链接file_name (str)   : 图片名称word (str)        : 图片关键词path (str)        : 保存路径"""html = requests.get(url, headers={'User-Agent': random.choice(ua_list)}).contentpath = os.path.join(path, word)if not os.path.exists(path):os.makedirs(path)file_path = os.path.join(path, file_name)with open(file_path, 'wb') as f:f.write(html)print('{}已保存'.format(file_name))def run(self):"""_summary_:主函数"""word          = input('输入需要下载的图片关键词:')pn            = int(input('输入起始页数:'))pn_end        = int(input('输入终止页数:'))index_start   = int(input('输入起始索引:'))path          = input('输入保存路径:')if not os.path.exists(path) or path == '':path = os.getcwd()self.get_image(word, pn, pn_end,index_start,path)if __name__ == '__main__':baidu = BaiduPicture()baidu.run()

以赫萝为关键词,抓取了图片之后,分别放入到pc和phone两个文件夹里,对应横屏壁纸和手机端竖屏壁纸,这样图包就准备好啦。在自己的服务器的根目录下新建了一个api文件夹,然后把图片文件夹放到了/api/img目录下。用python又写了个小程序,自动根据文件名和目录,生成了如下内容的两个txt文件,分别对应pc和phone,都放到/api目录下:

http://www.horosama.com/api/img/pc/pc_1.jpg
http://www.horosama.com/api/img/pc/pc_2.jpg
http://www.horosama.com/api/img/pc/pc_3.jpg
....

这个时候再在api目录下,新建两个php文件,文件内容如下,准备工作就做好啦:

<?php$str = explode("\n", file_get_contents('XXXX'));//读取文件,把XXX换成自己的txt文件名
$rand_index = rand(0,count($str)-1);
$url = $str[$rand_index];
$url = str_re($url);
header("Location:".$url);
function str_re($str){$str = str_replace(' ', "", $str);$str = str_replace("\n", "", $str);$str = str_replace("\t", "", $str);$str = str_replace("\r", "", $str);return $str;}
?>

最后,去云服务器上把域名api.horosama.com添加了到服务器IP的解析,再去云服务的宝塔界面里,进入网站选项,添加了一个新网站api.horosama.com,注意这里的根目录要填"/服务器根目录/api"。
这个时候api.horosama.com就可以访问啦,但宝塔默认的访问页面是自动生成的index.php文件,所以去宝塔的网站控制台里,把默认文档这个选项里,换成刚才自己写的php文件,这个时候api.horosama.com就可以正常生成随机图了~~。

把自己网站的pc端和手机端的主页背景图片接口都换成自己的,大功告成!

在个人网站里搭建了自己的随机图片接口~相关推荐

  1. JSP动态网站环境搭建应用中的详细步骤(Tomcat和Apache/IIS的整合)

    链接地址:http://www.cnblogs.com/dartagnan/archive/2011/03/25/2003426.html JSP动态网站环境搭建应用中的详细步骤(Tomcat和Apa ...

  2. 个人网站的搭建(基于GitHub和Jekyll主题 )

    最近心血来潮,想自己搭建一个网站玩玩.看了不少教程,最终决定用GitHub来建立自己的网站. 网站的效果如图 这是链接 → GYC的博客 下面进入正题: 综述 1.网站使用GitHub域名并使用Git ...

  3. .Net Web微信H5鱼虾蟹网站开发搭建技术栈

    本文整理了当前企业web微信H5鱼虾蟹网站开发搭建(h5.fanshubbs.com)的管理系统架设Q1687054422,商城等系统的常用开发技术栈. C#常见运算符 一元运算符(+.-.!.~.+ ...

  4. php360随机壁纸图片接口,PHP超简单的随机图片头像API接口网站搭建教程

    摘要 向上文所说,为了其他邮箱调用随机图片,我当时特意去网上找了些随机图片API接口网站,发现他们API接口有点慢,本着不外链的精神,自己搭建了个随机图片and头像的API接口.在这里把教程分享给大家 ...

  5. 关于直播网站的搭建--第一步:获取直播源

    这段时间独立完成了一个直播网站的搭建,虽然说是直播,其实只是引用了yy直播的链接,但是在这个过程中,个人感觉还是有蛮多东西需要记录下来的,故此写下此篇. 首先,各大直播网站有很多都有引用链接,一般都在 ...

  6. 华为云为网站安全搭建一道智能高效屏障

    "乃使蒙恬北筑长城而守藩篱,却匈奴七百余里."古有秦始皇派大将蒙恬利用地形优势,设置要塞,搭建起万里长城,有效遏制匈奴南进威胁. 设想一下,如今面向互联网提供访问的网站业务,没有任 ...

  7. 网站服务器怎么组件,网站服务器搭建与配置详解!

    原标题:网站服务器搭建与配置详解! 服务器大家经常会听说,但是可能大家对个中概念还有些不明白,这里跟大家说说网站服务器的搭建与配置. 网站服务器概念 网站服务器是网络应用的基础硬件设施,简言之即存放网 ...

  8. Linux系列-Red Hat5平台下的LAMP网站服务搭建(四)

    Linux系列-Red Hat5平台下的LAMP网站服务搭建(四)<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com: ...

  9. 图片优化_网站里的图片应该如何优化

    我们一直都在做网站关键词.内页关键词.标签等.但很多朋友都忽略了网站里的图片如何优化.近年来百度图片识别.360图片识别都在不断升级功能上已经很完善了,所以我们应该对网站图片进行优化,应该做seo的朋 ...

最新文章

  1. 超详细的Python matplotlib 绘制动态图
  2. Linux无盘工作站架设实例
  3. 对 Accordion 组件使用样式
  4. 基于labview的温湿度数据采集_【零偏原创】基于FPGA的多路SPI接口并行数据采集系统...
  5. mysql动态分区_MySQL动态创建分区
  6. SAP Spartacus breakpoint的决定逻辑
  7. 大数据每日哔哔、新征程
  8. Dubbo-2.7.3升级遇到的问题
  9. err_cleartext_not_permitted
  10. VS2010中的错误代码号及其含义
  11. layui多文件上传讲解_layui文件上传的实际应用实例
  12. 跳一跳python源码下载_微信跳一跳辅助_微信跳一跳作弊外挂下载【脚本】-华军软件园...
  13. 为什么使用多线程,多线程如何提高效率
  14. 笔记本开机速度怎么计算机,笔记本开机加速的步骤_如何给笔记本电脑开机提速-win7之家...
  15. Word公式居中,公式编号右对齐
  16. 孩子小学总喜欢用计算机做数学,数学到底该怎样学?真实用!
  17. 跨境电商亚马逊运营的五大小技巧你都知道哪些
  18. 苹果8官方主板价格_苹果官方确认iPhone8主板问题_TOM科技
  19. 深入理解模型视图、自定义模型
  20. 【SpringBoot】十二、@Scheduled定时任务(源码)

热门文章

  1. http——基础知识
  2. C语言-验证哥德巴赫猜想
  3. AJAX框架简笔画风景简单,好看简单的简笔画风景
  4. 5.1.8 NoSQL数据库-Redis(键值key-value)-Redis配置详解
  5. 经典文献阅读之--SuMa++
  6. 火狐浏览器屏蔽百度广告、热搜
  7. 大数据读心术丨这15条数据统计准爆了!
  8. Grbl代码分析 cpu-map.h
  9. 数学不好,进入机器学习领域还有戏吗?
  10. 4g物联网卡融合智能领域构建物联网生态大网