У меня есть веб-приложение, которое читает из Tumblr API и переформатирует способ форматирования «цепочек реблогов».
В Tumblr комментарии к сообщению хранятся в виде блок-кавычек HTML. Когда пользователи отвечают на комментарий выше, к цепочке цитат добавляется еще один уровень, что в конечном итоге приводит к множеству вложенных цепочек реблогов.
Вот пример того, как «цепочка реблогов» выглядит в простом HTML:
<p><a class="tumblr_blog" href="http://chainsaw-police.tumblr.com/post/96158438802/example-tumblr-post">chainsaw-police</a>:</p><blockquote>
<p><a class="tumblr_blog" href="http://example-blog-domain.tumblr.com/post/96158384215/example-tumblr-post">example-blog-domain</a>:</p><blockquote>
<p>Here is an example of a Tumblr post.</p> <p>It can have multiple <p> elements sometimes. It may only have one, though, at other times.</p>
</blockquote>
<p>This is an example of a user “reblogging” a post. As you can see, the previous comment is stored above as a <blockquote>.</p>
</blockquote>
<p>This is another reblog. As you can see, all of the previous comments are stored as blockquotes, with earlier ones being residing deeper in the nest of blockquotes.</p>
И вот как это выглядит при рендеринге.
Я хочу иметь возможность переформатировать цепочку реблогов, чтобы она выглядела примерно так:
example-blog-domain: вот пример сообщения Tumblr.
Иногда он может иметь несколько элементов ‹p›. Однако в другое время у него может быть только один.
chainsaw-police: это пример того, как пользователь «реблогирует» сообщение. Как видите, предыдущий комментарий хранится выше как ‹blockquote›.
example-blog-domain: это еще один реблог. Как видите, все предыдущие комментарии хранятся в виде цитат, а более ранние находятся глубже в гнезде цитат.
Я знаю, это невероятно запутанная структура, поэтому я пытаюсь написать что-то, чтобы сделать ее более читабельной.
Есть ли способ интерпретировать HTML и разделить реблоги на отдельные «комментарии»? Например, наличия массива или словаря с именем пользователя и комментарием будет более чем достаточно. Однако, после нескольких месяцев возни с lxml и BeautifulSoup, я в отчаянии.
Если бы был даже способ сделать это в CSS, в чем я очень сомневаюсь, это было бы прекрасно.
Заранее спасибо всем!