mremi/url-shortener

使用API缩短/扩展URL的PHP5/PHP7/PHP8库

v2.4.0 2021-09-06 07:20 UTC

This package is auto-updated.

Last update: 2024-09-06 13:58:06 UTC


README

此库允许您缩短URL,反向操作也是可能的。

SensioLabsInsight

Build Status Total Downloads Latest Stable Version Scrutinizer Quality Score Code Coverage

基本文档

安装

推荐的安装方法是使用 Composer。运行以下命令安装包并将其添加到项目的 composer.json 文件中:

composer require mremi/url-shortener

百度API

缩短

<?php

use Mremi\UrlShortener\Model\Link;
use Mremi\UrlShortener\Provider\Baidu\BaiduProvider;

$link = new Link;
$link->setLongUrl('http://www.google.com');

$baiduProvider = new BaiduProvider(
    ['connect_timeout' => 1, 'timeout' => 1]
);

$baiduProvider->shorten($link);

您还可以使用此库提供的命令,查看帮助信息。

$ bin/shortener baidu:shorten --help
$ bin/shortener baidu:shorten http://www.google.com

一些选项可用

$ bin/shortener baidu:shorten http://www.google.com --options='{"connect_timeout":1,"timeout":1}'

扩展

<?php

use Mremi\UrlShortener\Model\Link;
use Mremi\UrlShortener\Provider\Baidu\BaiduProvider;

$link = new Link;
$link->setShortUrl('http://dwz.cn/dDlVEAt5');

$googleProvider = new BaiduProvider(
    ['connect_timeout' => 1, 'timeout' => 1]
);

$googleProvider->expand($link);
$ bin/shortener baidu:expand --help
$ bin/shortener baidu:expand http://dwz.cn/dDlVEAt5

一些选项可用

$ bin/shortener baidu:expand http://dwz.cn/dDlVEAt5 --options='{"connect_timeout":1,"timeout":1}'

Bit.ly API V4

缩短

<?php

use Mremi\UrlShortener\Model\Link;
use Mremi\UrlShortener\Provider\Bitly\BitlyProvider;
use Mremi\UrlShortener\Provider\Bitly\OAuthClient;

$link = new Link;
$link->setLongUrl('http://www.google.com');

$bitlyProvider = new BitlyProvider(
    new GenericAccessTokenAuthenticator('generic_access_token'), // or old OAuthClient('username', 'password')
    ['connect_timeout' => 1, 'timeout' => 1]
);

$bitlyProvider->shorten($link);

您还可以使用此库提供的命令,查看帮助信息。

$ bin/shortener bitly:shorten --help

一些参数是必需的

$ bin/shortener bitly:shorten username password http://www.google.com

一些选项可用

$ bin/shortener bitly:shorten username password http://www.google.com --options='{"connect_timeout":1,"timeout":1}'

扩展

<?php

use Mremi\UrlShortener\Model\Link;
use Mremi\UrlShortener\Provider\Bitly\BitlyProvider;
use Mremi\UrlShortener\Provider\Bitly\OAuthClient;

$link = new Link;
$link->setShortUrl('http://goo.gl/fbsS');

$bitlyProvider = new BitlyProvider(
    new GenericAccessTokenAuthenticator('generic_access_token'), // or old OAuthClient('username', 'password')
    ['connect_timeout' => 1, 'timeout' => 1]
);

$bitlyProvider->expand($link);
$ bin/shortener bitly:expand --help

一些参数是必需的

$ bin/shortener bitly:expand username password http://bit.ly/ze6poY

一些选项可用

$ bin/shortener bitly:expand username password http://bit.ly/ze6poY --options='{"connect_timeout":1,"timeout":1}'

Google API

缩短

<?php

use Mremi\UrlShortener\Model\Link;
use Mremi\UrlShortener\Provider\Google\GoogleProvider;

$link = new Link;
$link->setLongUrl('http://www.google.com');

$googleProvider = new GoogleProvider(
    'api_key',
    ['connect_timeout' => 1, 'timeout' => 1]
);

$googleProvider->shorten($link);

您还可以使用此库提供的命令,查看帮助信息。

$ bin/shortener google:shorten --help

只有一个参数是必需的(长URL),但您也可以提供一个Google API密钥

$ bin/shortener google:shorten http://www.google.com
$ bin/shortener google:shorten http://www.google.com api_key

一些选项可用

$ bin/shortener google:shorten http://www.google.com --options='{"connect_timeout":1,"timeout":1}'

扩展

<?php

use Mremi\UrlShortener\Model\Link;
use Mremi\UrlShortener\Provider\Google\GoogleProvider;

$link = new Link;
$link->setShortUrl('http://goo.gl/fbsS');

$googleProvider = new GoogleProvider(
    'api_key',
    ['connect_timeout' => 1, 'timeout' => 1]
);

$googleProvider->expand($link);
$ bin/shortener google:expand --help

只有一个参数是必需的(短URL),但您也可以提供一个Google API密钥

$ bin/shortener google:expand http://goo.gl/fbsS
$ bin/shortener google:expand http://goo.gl/fbsS api_key

一些选项可用

$ bin/shortener google:expand http://goo.gl/fbsS --options='{"connect_timeout":1,"timeout":1}'

Sina API

缩短

<?php

use Mremi\UrlShortener\Model\Link;
use Mremi\UrlShortener\Provider\Sina\SinaProvider;

$link = new Link;
$link->setLongUrl('http://www.google.com');

$sinaProvider = new SinaProvider(
    'api_key',
    ['connect_timeout' => 1, 'timeout' => 1]
);

$sinaProvider->shorten($link);

您还可以使用此库提供的命令,查看帮助信息。

$ bin/shortener sina:shorten --help
$ bin/shortener sina:shorten http://www.google.com api_key

一些选项可用

$ bin/shortener sina:shorten http://www.google.com api_key --options='{"connect_timeout":1,"timeout":1}'

扩展

<?php

use Mremi\UrlShortener\Model\Link;
use Mremi\UrlShortener\Provider\Sina\SinaProvider;

$link = new Link;
$link->setShortUrl('http://t.cn/h51yw');

$sinaProvider = new SinaProvider(
    'api_key',
    ['connect_timeout' => 1, 'timeout' => 1]
);

$googleProvider->expand($link);
$ bin/shortener sina:expand --help
$ bin/shortener sina:expand http://t.cn/h51yw api_key

一些选项可用

$ bin/shortener sina:expand http://t.cn/h51yw api_key --options='{"connect_timeout":1,"timeout":1}'

微信API

缩短

<?php

use Mremi\UrlShortener\Model\Link;
use Mremi\UrlShortener\Provider\Wechat\WechatProvider;
use Mremi\UrlShortener\Provider\Wechat\OAuthClient;

$link = new Link;
$link->setLongUrl('http://www.google.com');

$wechatProvider = new WechatProvider(
    new OAuthClient('username', 'password'),
    ['connect_timeout' => 1, 'timeout' => 1]
);

$wechatProvider->shorten($link);

您还可以使用此库提供的命令,查看帮助信息。

$ bin/shortener wechat:shorten --help

一些参数是必需的

$ bin/shortener wechat:shorten appid secret http://www.google.com

一些选项可用

$ bin/shortener wechat:shorten appid secret http://www.google.com --options='{"connect_timeout":1,"timeout":1}'

扩展

微信目前不支持扩展URL。

链式提供商

<?php

use Mremi\UrlShortener\Model\Link;
use Mremi\UrlShortener\Provider\ChainProvider;

$chainProvider = new ChainProvider;
$chainProvider->addProvider($bitlyProvider);
$chainProvider->addProvider($googleProvider);
// add yours...

$link = new Link;
$link->setLongUrl('http://www.google.com');

$chainProvider->getProvider('bitly')->shorten($link);

$chainProvider->getProvider('google')->expand($link);

检索链接

您可以使用这些查找器检索一些链接

<?php

use Mremi\UrlShortener\Model\LinkManager;

$linkManager = new LinkManager($chainProvider);

$shortened = $linkManager->findOneByProviderAndShortUrl('bitly', 'http://bit.ly/ze6poY');

$expanded = $linkManager->findOneByProviderAndLongUrl('google', 'http://www.google.com');

贡献

有任何问题或反馈?请打开一个问题,我会尽快回复。

这里缺少一个功能?请随意创建一个pull request来解决它!

希望这对你有所帮助,并且已经帮到了你。如果是这样,请分享并推荐它! :)

@mremitsme