给 YOURLS 短网址系统编写插件《批量生成短网址》

2018-07-31
次阅读
2 分钟阅读时长

前言

在上一篇文章 给 YOURLS 短网址系统编写插件《Hello World!》 中,用了一个简单的例子介绍了如何给 YOURLS 编写插件,让我们对 YOURLS 插件的实现步骤有了一些了解。

YOURLS 自带的功能一次只能生成一个短网址,如果想要一次让多个 url 生成多个短网址,那么就需要《批量生成短网址》这个插件了。

编写插件

在这个插件中需要一个参数:

  • urls 以英文的逗号分割的 url 字符串, 例如 https://baidu.com,https://youku.com,https://csdn.com

接收到 urls 后,先使用 explode 函数将 urls 字符串分割为 url 数组,然后遍历 url 数组,对数组中的值进行编码过滤,再调用系统方法生成短网址,最后将结果返回。

完整代码:

<?php
/*
Plugin Name: Batch generation shorturl
Plugin URI: https://github.com/her-cat/batch-generation-shorturl
Description: Batch generation of short URLs
Version: 1.0
Author: 她和她的猫
Author URI: https://github.com/her-cat
*/

// 注册插件
yourls_add_filter( 'api_action_batch_generation', 'batch_generation_shorturl' );

// 插件核心内容
function batch_generation_shorturl() {

    // 判断是否传入参数 urls
	if( !isset( $_REQUEST['urls'] ) ) {
		return array(
			'statusCode' => 400,
			'simple'     => "Need a 'urls' parameter",
			'message'    => 'error: missing param',
		);	
	}

    $urls = $_REQUEST['urls'];

    // 将 urls 以 , 分割为 url 数组
    $url_arr = explode( ',', $urls );
    // 存放结果集
	$result = array();
    // 遍历 url 数组
    foreach ( $url_arr as $url ) {
        // 对 url 进行编码过滤
        $url = yourls_encodeURI( $url );
        $url = yourls_escape( yourls_sanitize_url( $url ) );

        // 生成短网址
        $return = yourls_add_new_link( $url );
        
        // 判断是否生成功
        if (isset($return['statusCode']) && $return['statusCode'] == 200 ) {
            // 加入结果集中
            $result[] = [
                'raw_url' => $url,  // 原 url
                'keyword' => $return['url']['keyword'], // 短网址关键词
                'shorturl' => $return['shorturl'], // 生成的短网址
            ];
        }
	}
    
    // 输出 json 格式结果
	echo json_encode($result);exit;
}

使用插件

请求地址:

http://域名或ip地址/yourls-api.php?username=你的登录账户&password=你的登录密码&action=batch_generation&urls=https://baidu.com,https://youku.com,https://csdn.com

结果:

[{
	"raw_url": "https://baidu.com",
	"keyword": "1",
	"shorturl": "http://yourls.com/1"
}, {
	"raw_url": "https://youku.com",
	"keyword": "2",
	"shorturl": "http://yourls.com/2"
}, {
	"raw_url": "https://csdn.com",
	"keyword": "3",
	"shorturl": "http://yourls.com/3"
}]

总结

最重要的是要知道 YOURLS 自带的函数有哪些,以及它们的用法,最后将他们组合起来。

这篇文章没有将如何安装、启用插件,不了解的可以参考上一篇文章。

最后,不知不觉七月份就过去了,这一个月断断续续的写了5篇文章,最后一篇拖延了十多天,拖延症发作,一边感叹着时间过得真快,感觉自己就是一条咸鱼,一边看着这几篇文章,感觉又好像做了些什么,留下了一点东西。

这大概就是写博客的原因吧。

Github:https://github.com/her-cat/batch-generation-shorturl

本文作者:她和她的猫
本文地址https://her-cat.com/posts/2018/07/31/write-plugin-for-yourls-short-url-system-to-generate-short-urls-in-batches/
版权声明:本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明出处!