Command line micropub client written in PHP.
Contents
shpub is released as self-contained .phar
file that includes
all dependencies.
See shpub downloads page for all released versions.
After downloading shpub-x.y.z.phar
, you can either use it directly:
$ php /path/to/shpub-x.y.z.phar --version
or make it more easily accessible:
$ mv /path/to/shpub-x.y.z.phar /usr/local/bin/shpub $ chmod +x /usr/local/bin/shpub $ shpub --version
You might need sudo
to be able to copy it into the /usr/local/bin/
directory.
If you're running from the git checkout, start it as follows:
$ ./bin/shpub.php --version
When using the git version, you need to have the following dependencies installed on your system:
- PHP 5.4+
- PEAR's Console_CommandLine
- PEAR's HTTP_Request2
- PEAR's MIME_Type
- PEAR's NET_URL2
$ shpub connect http://mywebsite
In case there are multiple users on the same server:
$ shpub connect http://sharedwebsite http://shareswebsite/user
If you pass a third parameter, then that will be the name of the connection.
You can select a specific server/connection with -s
on all commands.
$ shpub server rr test anoweco.bogo local2
Also try server -v
which lists server and user URLs.
shpub has support for the following post types:
By default shpub
sends data form-encoded.
To send JSON requests, use the --json
option.
$ shpub like http://example.org/ Like created at server http://anoweco.bogo/comment/23.htm
$ shpub reply http://example.org/ "Hey, cool!" Reply created at server http://anoweco.bogo/comment/42.htm
A normal note:
$ shpub note "oh this is cool!" Note created at server http://known.bogo/2016/oh-this-is-cool.htm
Note with an image:
$ shpub note -f image.jpg "this is so cute" Note created at server http://known.bogo/2016/this-is-so-cute
You can use -f
several times to upload multiple files.
URL image upload:
$ shpub note -f http://example.org/1.jpg "img url!" Note created at server http://known.bogo/2016/img-url
Load note content from a file:
$ shpub note - < /path/to/file.txt Note created at server http://known.bogo/2017/some-note
You may create custom post types with the x
command.
This is useful if your micropub endpoint supports additional types,
like known's
"annotation" type
(comments and likes for posts).
Create a comment to a known post:
$ shpub x annotation\ -x url=http://known.bogo/2016/example-domain-1\ -x type=reply\ -x username=barryf\ -x userurl=http://example.org/~barryf\ -x userphoto=http://example.org/~barryf/avatar.jpg\ -x content="There is a typo in paragraph 1. 'Fou' should be 'Foo'"
You may delete and restore posts on micropub servers:
$ shpub delete http://known.bogo/2016/like
Restore a deleted post:
$ shpub undelete http://known.bogo/2016/like
Existing posts can be modified if the server supports this:
$ ./bin/shpub update --add category=foo category=bar\ --replace slug=differentslug\ --delete category=oldcat\ http://known.bogo/2016/post
You may list the syndication targets defined on the server:
$ shpub targets IndieNews https://news.indieweb.org/en
Then specify it when creating a post:
$ shpub article -x mp-syndicate-to=https://news.indieweb.org/en title text
Most post types allow file uploads. Simply use -f
:
$ shpub note -f path/to/image.jpg "image test" Note created at server http://known.bogo/2016/image-test
The media endpoint is used automatically if the micropub endpoint has one.
To force shpub
to directly upload the file and skip the media endpoint,
use the --direct-upload
option:
$ shpub note --direct-upload -f path/to/image.jpg "direct upload"
Use the upload
command to upload files to the media endpoint without
creating a post:
$ shpub upload /path/to/file.jpg /path/to/file2.jpg Uploaded file /path/to/file.jpg http://test.bogo/micropub-media-endpoint/1474362040.2941/file.jpg Uploaded file /path/to/file2.jpg http://test.bogo/micropub-media-endpoint/1474362040.3383/file2.jpg
To debug shpub
or your micropub endpoint, use the --debug
option
to see curl
command equivalents to the shpub HTTP requests:
$ shpub -s known -d note "a simple note" curl -X POST -H 'User-Agent: shpub' -H 'Content-Type: application/x-www-form-urlencoded' -H 'Authorization: Bearer abc' -d 'h=entry' -d 'content=a simple note' 'http://known.bogo/micropub/endpoint' Post created at server http://known.bogo/2016/a-simple-note
You may use the --dry-run
option to make shpub not send any modifying
HTTP requests (e.g. POST and PUT).
Together with --debug
you can use this to get curl commands without sending
anything to the server:
$ shpub --debug --dry-run like example.org curl -X POST -H 'User-Agent: shpub' -H 'Content-Type: application/x-www-form-urlencoded' -H 'Authorization: Bearer cafe' -d 'h=entry' -d 'like-of=http://example.org' 'http://anoweco.bogo/micropub.php' Like created at server http://example.org/fake-response
To see which server, user and endpoint URLs shpub
uses, pass the
server name to the server
command:
$ shpub server commentpara.de commentpara.de URL: http://commentpara.de User: https://commentpara.de/user/3.htm Endpoints: micropub: https://commentpara.de/micropub.php media: token: https://commentpara.de/token.php authorization: https://commentpara.de/auth.php
- Add notes to
ChangeLog
- Update version number in
build.xml
andsrc/shpub/Cli.php
- Run
phing
- Commit and tag the version
- In the
cweiske.de
directory, run./scripts/update-shpub.sh
shpub's homepage is http://cweiske.de/shpub.htm
shpub's source code is available from http://git.cweiske.de/shpub.git or the mirror on github.
shpub is licensed under the AGPL v3 or later.
shpub was written by Christian Weiske.