Два дня назад я написал статью Мой полуавтоматический рабочий процесс для ведения блога. В этой статье одним из шагов, который я еще не автоматизировал, была публикация в блоггере, и я сказал, что собираюсь реализовать его в ближайшее время. Итак, этот урок является продолжением этого. В этой статье я покажу, как вы можете автоматически загружать файлы в Blogger, а также покажу, как я планирую использовать это в своем рабочем процессе ведения блога.

Прежде чем все это, позвольте мне рассказать вам о нескольких вещах, которые произошли, когда я исследовал автоматизацию взаимодействия с Blogger. Я начал изучать API Blogger от Google и начал пробовать некоторые вещи, но вскоре понял, что есть много вещей, которыми нужно управлять и о которых нужно позаботиться, и я, конечно, не смогу закончить вовремя, чтобы опубликовать эту статью. Тогда я подумал, что кто-то уже сделал это и предоставил единый способ заставить это работать. Итак, вместо того, чтобы пытаться понять это самостоятельно, я решил посмотреть, что другие сделали для автоматизации блоггеров. И вот что я нашел.

Я нашел несколько инструментов для этого, но я решил использовать Easy Blogger от Raghu. Мне он понравился из-за хорошей документации и понятного интерфейса, и теперь я буду использовать его для публикации статей в блоггерах.

Инструкций в файле README проекта уже вполне достаточно, но чтобы эта статья была полной, я добавлю некоторые инструкции по настройке и использованию.

Настройка

Вы можете установить Easyblogger с помощью pip, запустив pip install EasyBlogger, который установит исполняемый файл easyblogger, а также соответствующие зависимости.

Довольно крутая вещь в этом инструменте заключается в том, что вы можете публиковать широкий спектр форматов, которые в конечном итоге будут преобразованы в html с помощью pandoc. Таким образом, вы можете написать свой документ в уценке и напрямую опубликовать его с помощью этого инструмента. Я бы хотел использовать это напрямую, но поскольку я уже преобразовал свою разметку в html, как я описал здесь, я просто опубликую html напрямую.

README также объясняет пару отображений Vim, если вы используете Vim и хотите публиковать статьи, не выходя из редактора. Да за это!

Затем вам нужно настроить аутентификацию, получив ключи клиента. Для этого вы бежите

easyblogger --blogid <yourblogid> get

Это откроет окно браузера, которое вы используете для аутентификации с помощью своей учетной записи, и после аутентификации easyblogger сохранит эти учетные данные в файле с подходящим названием ~/.easyblogger.credentials.

Как только это будет сделано, вы готовы использовать Easyblogger.

использование

Быстрая справка показывает все доступные команды и параметры:

$ easyblogger --help
usage: easyblogger [-h] [-i CLIENTID] [-s SECRET]
                   [-v {INFO,DEBUG,WARNING,ERROR,CRITICAL}]
                   [--blogid BLOGID | --url URL]
                   {get,post,delete,update,file} ...
Easily manage posts on Blogger blogs
positional arguments:
  {get,post,delete,update,file}
                        sub-command help
    get                 list posts
    post                create a new post
    delete              delete a post
    update              update a post
    file                Figure out what to do from the input file
optional arguments:
  -h, --help            show this help message and exit
  -i CLIENTID, --clientid CLIENTID
                        Your API Client id
  -s SECRET, --secret SECRET
                        Your API Client secret
  -v {INFO,DEBUG,WARNING,ERROR,CRITICAL}, --verbose {INFO,DEBUG,WARNING,ERROR,CRITICAL}
                        verbosity(log level) - default CRITICAL
  --blogid BLOGID       Your blog id
  --url URL             Your blog url

Получить сообщения

Начнем с получения файлов из блога. Вы можете сделать это с

easyblogger --blogid <blogid> get

Это распечатает все заголовки сообщений вместе с их идентификаторами сообщений. Но, конечно, если у вас сотни и тысячи постов, вы захотите ограничить посты определенным ярлыком или даже ограничить его несколькими постами. Вы можете сделать это, добавив параметры следующим образом:

easyblogger --blogid <blogid> get --labels programming --count 5

Что дает следующий вывод для моего блога, показывающий последние 5 статей по программированию.

437344021642199000,Datasets in Apache Spark | Part 1,http://www.freblogg.com/2017/12/apache-spark-datasets-1.html
226912361219823323,Tweeting with Python and Tweepy,http://www.freblogg.com/2017/12/tweeting-with-python-and-tweepy.html
345235372397413038,How to recover from 'git reset --hard" | Git,http://www.freblogg.com/2017/09/how-to-recover-from-git-reset-hard-git.html
63494528537546270,Functions in C Programming | Part 1,http://www.freblogg.com/2017/08/functions-in-c-programming-part-1.html
304802860468725657,Understanding Git Octopus Merge,http://www.freblogg.com/2016/12/git-octopus-merge.html

И чтобы получить только один пост, возьмите постид сверху и запустите,

easyblogger.exe --blogid <blogid> get -p 437344021642199000 -d markdown

Это выводит сообщение на консоль.

Примечание. Хотя в README сказано, что это будет напечатано в уценке, я получил только html. Я пока не понял, что может быть причиной этого. Я, вероятно, подниму вопрос о проектах github. Но для меня эта функция не особо важна. Так что меня это устраивает.

Публиковать посты

Инструкции по использованию метода post следующие:

usage: easyblogger post [-h] [-t TITLE] [-l LABELS] [--publish]
                        (-c CONTENT | -f FILE)
                        [--filters FILTERS [FILTERS ...]]
                        [--format {commonmark,creole,docbook,docx,epub,gfm,haddock,html,json,latex,markdown,markdown_github,markdown_mmd,markdown_phpextra,markdown_strict,mediawiki,muse,native,odt,opml,org,rst,t2t,textile,tikiwiki,twiki,vimwiki}]
optional arguments:
  -h, --help            show this help message and exit
  -t TITLE, --title TITLE
                        Post title
  -l LABELS, --labels LABELS
                        comma separated list of labels
  --publish             Publish to the blog [default: false]
  -c CONTENT, --content CONTENT
                        Post content
  -f FILE, --file FILE  Post content - input file
  --filters FILTERS [FILTERS ...]
                        pandoc filters

Как видите, вы можете установить заголовок статьи, установить метки, а также передать файл практически в любом текстовом формате, который только можно вообразить. Я собираюсь использовать его с флагом -f, передав файл уценки и с некоторыми метками.

В качестве пробного запуска я создал этот пост в своем экспериментальном блоге с помощью этой команды:

easyblogger.exe --blogid <blogid> post -t "Posted from CL using EasyBlogger" -l "blogging, easyblogger" --publish -f test.html

Если вы не хотите публиковать сообщение сразу, а вместо этого хотите просто сохранить его в черновиках, вы можете сделать это, удалив параметр --publish из приведенной выше команды. И это сохранит пост как черновик.

Обновление сообщения

Вы можете обновить ранее опубликованный пост следующим образом:

easyblogger update -t 'A new title' -l "new,labels" 3295765957555899963

Это обновит заголовок и метки данного поста.

Удаление сообщения

Это может быть не для всех, так как большинство не будет удалять свои посты после публикации. Но, конечно, вы можете сделать и это, запустив delete с постидентификацией.

easyblogger delete 234546720561632959

Я думаю, что это охватывает большую часть того, как вы можете работать с EasyBlogger. Для получения дополнительной информации прочитайте README.md в проекте, который содержит тщательно документированные команды.

Поскольку я собираюсь опубликовать эту статью на Medium, я не смогу использовать это для этого поста, но для всех своих будущих постов в блогах я обязательно буду использовать это.

Это все для этой статьи.

Другие статьи по программированию можно найти на Freblogg.

Несколько статей по автоматизации:

Веб-скрейпинг для начинающих с Python

Мой полуавтоматический рабочий процесс для ведения блога

Это шестая статья в рамках моего твиттер-челленджа #30DaysOfBlogging. Еще двадцать четыре статьи на различные темы, включая, помимо прочего, Java, Git, Vim, Разработка программного обеспечения, Python.

Если вам это интересно, подписывайтесь на меня в Твиттере @durgaswaroop. Пока вы это делаете, подписывайтесь на здесь, на среду, а также на мой другой блог.

Если вы заинтересованы в участии в каких-либо проектах с открытым исходным кодом и не нашли подходящий проект или не знаете, с чего начать, я хотел бы предложить свой собственный проект Delorean, который представляет собой систему управления распределенными версиями, созданную с нуля в scala. Вы можете внести свой вклад не только в виде кода, но и с документацией по использованию, а также путем выявления любых ошибок в функциональности.

Спасибо за чтение. До новых встреч в следующей статье.