惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

爱范儿
爱范儿
WordPress大学
WordPress大学
博客园 - 【当耐特】
The Cloudflare Blog
B
Blog
Last Week in AI
Last Week in AI
小众软件
小众软件
量子位
S
SegmentFault 最新的问题
V
Visual Studio Blog
博客园 - 叶小钗
美团技术团队
阮一峰的网络日志
阮一峰的网络日志
Hugging Face - Blog
Hugging Face - Blog
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
宝玉的分享
宝玉的分享
A
About on SuperTechFans
雷峰网
雷峰网
J
Java Code Geeks
Microsoft Azure Blog
Microsoft Azure Blog
腾讯CDC
MongoDB | Blog
MongoDB | Blog
酷 壳 – CoolShell
酷 壳 – CoolShell
Martin Fowler
Martin Fowler

Kenvix's Blog

实现带有Nvidia GPU+Rootless Podman+Docker+Systemd+自动驱动注入支持的systemd nspawn容器 | Kenvix's Blog 手动保留常用端口,解决 Windows 端口被 Hyper-V / WinNAT 占用的问题 免Telent/TTL屏蔽运营商新版光猫的远控、TR069和RMS,获取动态随机超级管理员密码并固化权限 | Kenvix's Blog 利用Windows卷影副本(Volume Shadow)找回被覆盖和删除的数据 | Kenvix's Blog 在Windows下实现WireGuard动态DNS解析(DDNS)的正确方法:避免无意义的开销 | Kenvix's Blog OpenWRT/DNSMasq 配置DHCP静态路由主动推送 实现流量直达和旁路由流量零代价分载 | Kenvix's Blog 解决 Windows 打开视频/图片文件夹很慢的问题 | Kenvix's Blog AltA2DP - 向支持Sony LDAC协议的耳机提供Windows下蓝牙LDAC音频编码器支持 | Kenvix's Blog (2024更新)修复黑群晖 DSM7.0 + Btrfs 存储空间/磁盘损毁/堪用 的问题 校园网白嫖思路分享:局域网中转-不花钱、不认证、高速上网 | Kenvix's Blog 在 Windows 上配置网卡多个 VLAN、多个虚拟网卡、实现单线多拨网速叠加(无需驱动支持) | Kenvix's Blog 解决视频彩铃、语音通话自动转视频通话导致打电话自动挂断的问题 | Kenvix's Blog 超低成本廉价考研教程:如何用小于¥500甚至¥300的开销考个研 | Kenvix's Blog 在 Ubuntu 21.10 上启用蓝牙 LDAC/AAC/AptX 高质量音频编码支持 在 VMware Workstation 桥接模式的网卡上让虚拟机使用 VLAN 的正确方法 在 Windows 上设置 NAT 或网络共享的正确方法——避免Wi-Fi热点无法使用 自编译 红米 AC2100 OpenWRT R21.7.26 Linux 内核结构和子系统简介 | Kenvix's Blog Java 快速读取文本 (算法竞赛适用) | Kenvix's Blog 利用 ThreadLocal + Lambda,实现有状态变量的单例模式 | Kenvix's Blog 状态压缩的动态规划问题:骨牌完全覆盖棋盘问题 | Kenvix's Blog 我的 Windows 10 2004 新增 Bug 解决办法记录 解决 Android Studio 及 IDEA 中 Gradle 错误信息乱码的问题 Kotlin 的那些骚操作 | Kenvix's Blog 在普通的 Gradle Java/Kotlin 项目中使用 BuildConfig 修复国行 MIUI 打开 Google Play 始终提示 DF-DFERH-01 的问题 解决 VSCode 持续调用 WMIC 导致一个 CPU 核心完全被占满的问题 扔鸡蛋问题 | Kenvix's Blog 计算机幻觉从入门到入土 | Kenvix's Blog Java 注解预处理 Annotation Processing & 代码生成
自动获取Pixiv每日排行榜第一张图片(600x600 | 可用于博客背...
2016-04-28 · via Kenvix's Blog

代码来自@mokeyjay的 Pixiv每日排行榜Top50小部件,本人做了一些修改来专用于输出第一张图片的完整图片(也可以输出其他的图片)

可用于获取Pixiv每日排行榜第一张图片并直接输出,比如作为博客背景图像(配合高斯模糊食用效果最佳)


食用方法:(两种任选)

第一种:直接把图片路径指向这个php文件

第二种:图片路径指向保存文件路径(默认为pixiv.jpg),然后挂个计划任务每天自动调用pixiv.php来刷新图片


以下是代码:【建议保存为pixiv.php】

<?php
/**
 * 自动获取Pixiv每日排行榜第一张图片
 * @author Kenvix <i@kenvix.com>
 * @url https://kenvix.com
 * ------------------------------------------------------
 * 可随意修改、二次发布。但请保留上方版权声明及注明出处
 */
error_reporting(0);
set_time_limit(20); //超时时间 0为永久不超时
define('DAT','pixiv.jpg'); //保存文件路径
define('IMG', 0); //表示获取0号图片,若要获取其他图片,修改数字,比如获取第三张图片表示为2

$time = file_exists(DAT) ? filemtime(DAT) : '';

if(!isset($_GET['text'])) header('Content-type: image/jpg');
if(empty($time) || (!empty($_GET['force']) && $_GET['force'] == 'forcepassword') || (time() - $time) > 86400) { //修改forcepassword可以设置强行刷新图片的密码,访问 pixiv.php?force=forcepassword 即可强制刷新图片
    $html = curl_get('http://www.pixiv.net/ranking.php?mode=daily&content=illust');

    // 匹配缩略图url
    preg_match_all('|http://i\d\.pixiv\.net/c/240x480/img-master/img/\d{4}/\d{2}/\d{2}/\d{2}/\d{2}/\d{2}/(.*?\.\w{3})|', $html, $image);
    // 匹配链接
    preg_match_all('|member_illust.php\?mode=medium&illust_id=\d+&ref=rn-b-\d+-title-\d&uarea=daily|', $html, $url);
    $url = str_ireplace('240x480','600x600',$image[0][IMG]);
    $f = curl_get($url, array(
        'User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.101 Safari/537.36',
        'Referer: http://www.pixiv.net/member_illust.php?mode=medium&illust_id=' . str_ireplace('_p0_master1200.jpg','',$image[1][IMG])
    ));
    //拒绝写入无效图片
    $info = getimagesizefromstring($f);
    if(empty($info)) {
        //无效图片处理方法
        echo 'Err#0';
    } else {
        file_put_contents(DAT, $f);
        echo $f;
    }
    die;
}
readfile(DAT); //直接输出

/**
 * CURL读取数据
 * @param $url
 * @return mixed
 */
function curl_get($url, array $header = array()){
    $ch = curl_init($url);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
    curl_setopt($ch, CURLOPT_HTTPHEADER, $header);
    curl_setopt($ch, CURLOPT_TIMEOUT, 10);
    $data = curl_exec($ch);
    curl_close($ch);
    return $data;
}