2946
|
1 .. highlight:: sh |
|
2 |
|
3 ================================ |
|
4 blog: (micro)blogging management |
|
5 ================================ |
|
6 |
|
7 Blog commands are high level tools to handle an XMPP blog. |
|
8 They are using the generic pubsub arguments |
|
9 |
|
10 set |
|
11 === |
|
12 |
|
13 publish a blog item. |
|
14 |
|
15 :ref:`pubsub_common` commands are used to specify the destination item. |
|
16 |
|
17 ``stdin`` is used to get the body of the blog post. |
|
18 |
|
19 examples |
|
20 -------- |
|
21 |
|
22 Create a blog post with a body, a subject, 2 tags, and with comments allowed:: |
|
23 |
|
24 $ echo "This is post body" | jp blog set -T "This is a test message" -t test -t jp -C |
|
25 |
|
26 Create a blog post with rich content using `markdown` syntax, and no subject:: |
|
27 |
|
28 $ echo "This is a **rich** body" | jp blog set -S markdown |
|
29 |
|
30 get |
|
31 === |
|
32 |
|
33 get command retrieves one or move blog post from specified location (by default the |
|
34 personal blog of the profile). |
|
35 |
|
36 output can be customised to only retrieve some keys, or to use a specific template. |
|
37 |
|
38 :ref:`pubsub_common` commands are used to specify the blog location. |
|
39 |
|
40 examples |
|
41 -------- |
|
42 |
|
43 Retrieve personal blog of the profile using `fancy` output with a verbosity of 1 (to show |
|
44 publication date):: |
|
45 |
|
46 $ jp blog get -O fancy -v |
|
47 |
|
48 Retrieve *title* and *publication date* of last 3 blog posts from the blog at |
|
49 https://www.goffi.org:: |
|
50 |
|
51 $ jp blog get -m 3 -u https://www.goffi.org -k title -k published |
|
52 |
|
53 Retrieve last 2 posts of personal blog, and output them in browser using default |
|
54 template:: |
|
55 |
|
56 $ jp blog get -m 2 -O template --oo browser |
|
57 |
|
58 edit |
|
59 ==== |
|
60 |
|
61 With edit command you can create a new blog post or modify an existing one using your |
|
62 local editor (the one set in ``$EDITOR``). You'll edit 2 things: the body of the post, and |
|
63 the metadata which contain things like title, comments infos, or tags. |
|
64 |
|
65 For some common editors (like **vim** or **Emacs**), the editor will be automatially |
|
66 opened using a split screen with *body* in one side, and metadata on the other. If the |
|
67 editor is not supported or doesn't support split screen, you'll edit first the *body*, then |
|
68 the *metadata*. You can also specify editor and arguments in ``sat.conf``, see |
|
69 `configuration <edit_conf_>`_ below |
|
70 |
|
71 If you don't change anything or publish an empty blog post, the edition will be cancelled. |
|
72 |
|
73 In the metadata (see `below <edit_metadata_>`_ for details), you can use |
|
74 ``"publish": false`` to forbid the publication. In this case, when you'll save |
|
75 your modification and quit your editor, the blog post will not be published but |
|
76 saved locally in a draft. To continue your work later, just start your edition with the |
|
77 ``-D, --current`` option like this:: |
|
78 |
|
79 $ jp blog edit -D |
|
80 |
|
81 Note that item location must be re-specified if it has been used to create the draft, so |
|
82 you'll have to reproduce the arguments to specify service, node or item (or the URL), |
|
83 other data like tags will be restored from draft file of metadata. |
|
84 |
|
85 You can specify the syntax by using ``-S SYNTAX, --syntax SYNTAX``. If not specified, the |
|
86 syntax set in your parameters will be used. |
|
87 |
|
88 When you edit a blog post, it is often useful to activate the ``-P, --preview`` option, |
|
89 this will launch a web browser and refresh the page each time you save a modification in |
|
90 your editor. By default, the browser registered as default in your system will be used, |
|
91 and a new tab will be opened on each modification. This is not ideal, and we recommand to |
|
92 set you configuration to activate automatic refreshing of the page instead, see `preview |
|
93 configuration <edit_preview_>`_ below to see how to do. |
|
94 |
|
95 examples |
|
96 -------- |
|
97 |
|
98 Edit a new blog post with comments on your personal blog, using default syntax and preview:: |
|
99 |
|
100 $ jp blog edit -P --comments |
|
101 |
|
102 Modifiy a draft previously saved using the ``"publish": false`` metadata:: |
|
103 |
|
104 $ jp blog edit -D |
|
105 |
|
106 Correct a typo in your last published blog post:: |
|
107 |
|
108 $ jp blog edit --last-item |
|
109 |
|
110 Edit the blog item at an HTTPS URL using XHTML syntax:: |
|
111 |
|
112 $ jp blog edit -u https://www.example.net/some_xmpp_blog_article.html -S xhtml |
|
113 |
|
114 Create a new blog post on a XMPP blog node using its HTTPS URL (supposing here that |
|
115 https://example.net is a XMPP blog node):: |
|
116 |
|
117 $ jp blog edit -u https://www.example.net |
|
118 |
|
119 .. _edit_metadata: |
|
120 |
|
121 metadata |
|
122 -------- |
|
123 |
|
124 Metadata is set using a JSON object. The key you can use are: |
|
125 |
|
126 publish |
|
127 boolean indicating if item can be published. Set to ``false`` if you want to work on a |
|
128 draft and to avoid accidental publication. |
|
129 |
|
130 atom_id |
|
131 atom entry identifier. This should not be modified manually. |
|
132 |
|
133 published |
|
134 time of initial publication (unix time). This should not be modified manually. |
|
135 |
|
136 language |
|
137 language of the content |
|
138 |
|
139 comments |
|
140 array of URIs to the comments node, if any. |
|
141 |
|
142 tag |
|
143 array of tags, if any |
|
144 |
|
145 author |
|
146 human readable name of the entry author |
|
147 |
|
148 author_jid |
|
149 jid of the author. This should notbe modified manually. |
|
150 |
|
151 author_jid_verified |
|
152 true if the pubsub service confirmed that author_jid is the one of the publisher. It is |
|
153 useless to modify this variable. |
|
154 |
|
155 title |
|
156 the title of the message |
|
157 |
|
158 title_rich |
|
159 the rich title of the message, in current text syntax. It will be automatically |
|
160 converted to xhtml. |
|
161 |
|
162 .. _edit_conf: |
|
163 |
|
164 configuration |
|
165 ------------- |
|
166 |
|
167 editor |
|
168 ^^^^^^ |
|
169 |
|
170 Local editor used is by default the one set in ``$EDITOR`` environment variable, but you |
|
171 can specify one in ``sat.conf``. To do so, you have to set the name of an editor |
|
172 executable in the ``editor`` option in ``[jp]`` section. |
|
173 |
|
174 You can specify the args to use by using ``blog_editor_args`` option. Use |
|
175 ``{content_file}`` to get the path of the main content file (the body of the blog post), |
|
176 and ``{metadata_file}`` to get the path of the json metadata. |
|
177 |
|
178 .. sourcecode:: cfg |
|
179 |
|
180 [jp] |
|
181 editor = kate |
|
182 blog_editor_args = {content_file} {metadata_file} |
|
183 |
|
184 .. _edit_preview: |
|
185 |
|
186 preview |
|
187 ^^^^^^^ |
|
188 |
|
189 To set the preview, you can use the options ``blog_preview_open_cmd`` and |
|
190 ``blog_preview_update_cmd`` in your ``[jp]`` section. the former is the command to use to |
|
191 open your browser when edition starts, and the later is the command to use when a |
|
192 modification is saved. In both cases you may use ``{url}`` to set the location of local HTML file. |
|
193 |
|
194 This can be use to activate automatic refreshing of the page. |
|
195 |
|
196 For **Konqueror**, you can use its D-Bus API to do refreshing. Ensure that ``qdbus`` is |
|
197 installed on your system, and enter the following lines in your ``sat.conf``: |
|
198 |
|
199 .. sourcecode:: cfg |
|
200 |
|
201 [jp] |
|
202 blog_preview_open_cmd = konqueror {url} |
|
203 blog_preview_update_cmd = /bin/sh -c "qdbus $(qdbus org.kde.konqueror\*) /konqueror/MainWindow_1 reload" |
|
204 |
|
205 For **Firefox**, you may use ``xdotool`` on X11. Once you have installed this tool, enter the |
|
206 following lines in your ``sat.conf``: |
|
207 |
|
208 .. sourcecode:: cfg |
|
209 |
|
210 [jp] |
|
211 blog_preview_open_cmd = firefox -new-tab {url} |
|
212 blog_preview_update_cmd = /bin/sh -c "WID=$(xdotool search --name 'Mozilla Firefox' | head -1); xdotool windowactivate $WID; xdotool key F5" |
|
213 |
|
214 This *xdotool* technique can be adapted to other browsers. |
|
215 |
|
216 syntax extensions |
|
217 ^^^^^^^^^^^^^^^^^^ |
|
218 |
|
219 A dictionary with a mapping from syntax name to file extension can be used. This can be |
|
220 useful to activate the right syntax highlighting in your editor. There is a default |
|
221 mapping which can be overriden. |
|
222 |
|
223 The mapping is set in the ``syntax_ext_dict`` option of the ``[jp]`` section of your |
|
224 ``sat.conf`` file. For instance, if your prefer do your ``.markdown`` for temp files |
|
225 instead of the default ``.md``, you can use this: |
|
226 |
|
227 .. sourcecode:: cfg |
|
228 |
|
229 [jp] |
|
230 syntax_ext_dict = {"markdown": "markdown"} |
|
231 |
|
232 the first ``markdown`` is the name of the syntax (could an other syntax like ``xhtml``), |
|
233 while the second if the file extension. |
|
234 |
|
235 preview |
|
236 ======= |
|
237 |
|
238 This command will show the specified file in browser, and refresh it when changes are |
|
239 detected. Configuration is the same as for `edit preview <edit_preview_>`_. This is can be |
|
240 used if you have already started an edition with ``jp blog edit`` but forgot to use the ``-P, --preview`` arguments. |
|
241 |
|
242 example: |
|
243 -------- |
|
244 |
|
245 Preview the draft at ``~/local/sat/blog/some_name/blog_something.md``:: |
|
246 |
|
247 $ jp blog preview ~/local/sat/blog/some_name/blog_something.md |
|
248 |
|
249 import |
|
250 ====== |
|
251 |
|
252 With this command you can import an external blog in a XMPP blog at the specified pubsub |
|
253 location. |
|
254 |
|
255 The import is done using an *importer* name and a *location* which depends of the importer |
|
256 (it can be a path to a file, an URL to a blog, or something else). Use empty nothing to |
|
257 get list of importers, and specify only importer name to get its description. |
|
258 |
|
259 By default, found images are re-uploaded to XMPP server, if you want to keep original |
|
260 URLs, use the ``--no-images-upload`` option. |
|
261 |
|
262 Alternatively, you can re-upload images except for a specific host with ``--upload-ignore-host UPLOAD_IGNORE_HOST``. The images for the specified host will keep there original URLs while other will be uploaded to XMPP server. |
|
263 |
|
264 You shoud specify original blog host using ``--host HOST`` argument, this is used notably |
|
265 to reconstruct relative URLs of media. |
|
266 |
|
267 Importers may have specific options, you can set them using the ``-o NAME VALUE, --option NAME VALUE`` argument. Check the importer description for details. |
|
268 |
|
269 examples: |
|
270 --------- |
|
271 |
|
272 List available importers:: |
|
273 |
|
274 $ jp blog import |
|
275 |
|
276 Get description of ``dotclear`` importer:: |
|
277 |
|
278 $ jp blog import dotclear |
|
279 |
|
280 Import a Dotclear blog:: |
|
281 |
|
282 $ jp blog import dotclear /path/to/dotclear.dump |
|
283 |
|
284 Import a Dotclear blog without uploading images:: |
|
285 |
|
286 $ jp blog import --no-images-upload dotclear /path/to/dotclear.dump |