Migrace článků G+ do Drupalu 8

Submitted by drupal admin on

Na tento web jsem nakopíroval svůj obsah z Google Plus. Níže se k tomu rozepisuji. K dispozici je i rejstřík obsahu z G+.

Na končícím (duben 2019) Google Plus https://plus.google.com/+LiborFettr jsem publikoval v letech 2012 - 2018 cca 600 článků. Články jsem chtěl nějak zachovat online. Logickou volbou cíle pro migraci by byla Googlova blogovací aplikace Blogger, např. https://fettr.blogspot.com/. Bohužel neexistuje možnost importu článků do Bloggeru.

Rozhodl jsem se pro migraci do vlastního Drupalu 8. Základním nástrojem pro import je v Drupalu modul Feeds. V době migrace (únor 2019) byl pro D8 pouze ve verzi 8.x-3.0-alpha4, což bylo příslibem mnoha dobrodružsví.

Vytvořil jsem v D8 nový datový typ "g_plus", do kterého jsem přidával průběžně pole potřebná pro import. Uzly typu "g_plus" budou obsahovat migrovaná data z článků G+.

Nejdříve jsem hledal, zda G+ neposkytuje RSS, odkud by bylo možné články importovat. Neposkytuje. Takové RSS poskytují třetí strany, např. http://rss2lj.net/g+, https://plusfeed.frosas.net/ nebo https://gplus-to-rss.appspot.com/. Pro tyto služby jsem nakonfiguroval feeds, vyzkoušel je a zavrhl, protože bohužel poskytovaly jen omezený počet článků, např. 50. Dalším omezením byl jen zúžený výběr dat, která jsou v RSS k dispozici. 

Pozn.: existuje také modul https://www.drupal.org/project/google_plus_feeds, který zobrazí obsah z G+ v bloku, ale neimportuje do databáze. 

Po neuspokojivých pokusech s RSS jsem hledal jiný způsob, jak se k datům G+ dostat. Pro export/archivaci obsahu G+ nabízí Google dva formáty: HTML a JSON. Vyexportoval jsem data v obou formátech. Nejdříve jsem zkusil nakonfigurovat ve Feeds import dat z formátu JSON, který byl přehlednější. Pro tento formát bylo třeba ještě nainstalovat modul Feeds extensible parsers (8.x-1.0-alpha2). Nepodařilo se mi však importér nakonfigurovat tak, aby načetl byť jediné pole. Problémy jsem přisuzoval faktu, že používané moduly jsou jen ve verzi alfa.

Zkusil jsem tedy nakonfigurovat Feeds pro import z formátu HTML. Ukázalo se, že články exportované z G+ do HTML mají natolik variabilní strukturu, že jejich parsování ve Feeds je nelidský úkol. Proto jsem se znovu obrátil k formátu JSON. Jako schůdný se ukázal import modifikovaných souborů - obsah všech souborů jsem pomoci .CMD uzavřel do pomocného "root" obalu

{ "gplus":
   původní_obsah_souboru
}

Takto upravené soubory jsem pomocí Feeds importoval do uzlů typu g_plus. Při tom jsem pomocí hooku life_g_plus_node_presave() ve vlastním modulu z importovaných dat "dopočítával" hodnoty některých polí uzlu. Například se do souborového systému Drupalu kopírovaly obrázky z externích zdrojů, pokud byly k dispozici. Také jsem dynamicky vytvářel nadpis (title) uzlu podle toho, jaké položky byly ve zdrojovém *.JSON k dispozici. Do uzlů jsem vložil i původní komentáře z G+

Obrázky z G+ zobrazuji pomocí modulu Colorbox. Pokud se Feeds import článků zaseknul, nedogenerovaly se potřebné "velikostní" varianty obrázků. Pro dogenerování variant jsem musel import zopakovat. A to i v případě, že "základní" obrázek byl úspěšně přenesen. Některé chybějící obrázky jsem k uzlům doplnil ručně. Videa jsem nepřenášel.