Wpis z mikrobloga

Drapnie mi ktoś na szybko parser ama w php ?
Tak by tylko uzyskać pytanie i odpowiedzi do niego. I oczywiście jeśli odpowiedź zawiera więcej nicków to i pytania tych ludzi powinny zostać dodane...

  • 19
@moooka: Potrzebuję wyciągnąć pytania i odpowiedzi żeby przedstawić wam wersję skróconą ama : )
Chyba nie widziałeś jak słabo działa ten widok "ama". Jest wciąż cała masa gówno komentarzy.
No nic, pozostaje mi zrobić to na piechotę.
@moooka: a ja sobie wyobrażam ale tylko mając te komentarze ułożone w drzewie.
Sprawdzamy w których gałęziach są odpowiedzi, resztę wywalamy. Sprawdzamy komu odpowiadał autor w danej gałęzi, zostawiam tylko tych którym odpowiadał i ich data komentarza jest wcześniejsza niż autora. Resztę już chyba trzeba pociągnąć człowiekiem bo nie wiem czy api dostaracza datę dodania komentarza i edycji osobno, czy mamy tylko jedną wartość i edycja nadpisuje datę dodania. Jeśli pierwsza
@Jacob: pisane na szybko, wklej w konsole przeglądarki:

$('.comments-stream>.iC>.wblock+.sub>li>.wblock.authorComment>div>.text>p').each(function(){
var $this = $(this), answer = $this.text(), $q = $this.parents('.sub').prev(), author = $q.find('>div>.author>a>b').text(), question = $q.find('>div>.text>p').text();
console.log('AUTOR: ' + author.trim());
console.log('PYTANIE: ' + question.trim());
console.log('ODPOWIEDŹ: ' + answer.trim());
console.log('--------');
});
@codecalm: otóż to, w komentarzu wspomnę o Tobie i tym skrypcie (warto to mieć jako skryptozakładkę, ale jeszcze powinno się otwierać nowe okno z ładnie wyrenderowanym tekstem bo mało ludzi będzie czytało z dev tools).

Dodałem też numerację pytań więc pi razy oko wiemy ile ich było. 3x więcej niż u dudy (tak sprawdzam ama Korwina)
@codecalm:
function removeBreaks(data){return data.replace(/(\r\n|\n|\r)/gm,'');}
$('.comments-stream>.iC>.wblock+.sub>li>.wblock.authorComment>div>.text>p').each(function(i){
var $this = $(this), answer = $this.text(), $q = $this.parents('.sub').prev(), author = $q.find('>div>.author>a>b').text(), question = $q.find('>div>.text>p').text();
console.log(i+1+'. (@' + author.trim()+')');
console.log('PYTANIE: ' + removeBreaks(question.trim()));
console.log('ODPOWIEDŹ: ' + removeBreaks(answer.trim()));
console.log('--------');
});
@Jacob: mam lepsze:

var htmlData = '';
$('.comments-stream>.iC>.wblock+.sub>li>.wblock.authorComment>div>.text>p').each(function(){
var $this = $(this), answer = $this.html(), $q = $this.parents('.sub').prev(), author = $q.find('>div>.author>a>b').text(), question = $q.find('>div>.text>p').html();
htmlData += '* ' + author.trim() + '' + question + '' + answer.trim() + '
';
});
htmlData += '
';
$('#amalayer').remove();
$('body').append('#amalayer{position:fixed;top:0;left:0;right:0;bottom:0;background:#fff;z-index:10000;overflow:auto}#amaLayer li{padding: 16px;padding-bottom:32px;border-bottom:1px solid #999}.amaAuthor{font-weight:bold}.amaQuestion{margin-bottom:32px;color:#999}' + htmlData + '');
@codecalm: No elegancko : ) Ale to już można rozwijać do skryptozakładki. Ja natomiast potrzebuję w tej chwili wypluć to do wpisu na mirko.

Minus jest taki, że pytanie jest powielone gdy Korwin nie zauważył i dwukrotnie odpowiedział (niestety robiąc przy tym literówkę więc niemożliwe do wyłapania przez skrypt ; / )