Visualizando Etherpads editados recentemente (observe a nova tag 'Etherpad' para o código Etherpad de origem aberta!)
-
24-09-2019 - |
Pergunta
Prescript: o incrível Etherpad foi recentemente de origem aberta. Venha aqui: http://code.google.com/p/etherpad. Esta é a primeira pergunta que conheço no StackOverflow sobre o código EtherPad. Se você faz parte da comunidade de código aberto Etherpad, convém se inscrever O feed RSS para perguntas marcadas 'Etherpad' Apenas no caso de isso pegar!
Minha pergunta real, que pressupõe que você tenha o Etherpad instalado em seu próprio servidor:
Primeiro, aqui está uma consulta para ver as almofadas editadas recentemente:
SELECT id,lastWriteTime,creationTime,headRev
FROM PAD_SQLMETA ORDER BY lastWriteTime, headRev;
Ou, se você quiser executá -lo de um prompt Unix:
mysql -u root -pPASSWD etherpad -e "select id,lastWriteTime,creationTime,headRev
from PAD_SQLMETA order by lastWriteTime, headRev"
Isso é útil, no entanto lastWriteTime
Na verdade, é atualizado toda vez que alguém vê um bloco no navegador. Prefiro classificar as almofadas quando elas foram realmente editadas pela última vez. Provavelmente há uma consulta SQL sofisticada envolvendo uma junção com outra tabela que mostraria o último horário de edição real. Alguém sabe o que é isso? Como alternativa, você pode ter um script que avisa quando o HeadRev muda, mas isso não parece a maneira mais limpa de fazê -lo.
Solução
Não descobri bastante a resposta para minha pergunta original, mas escrevi um script que alcança algo semelhante. O principal objetivo é exportar versões simples de texto de todas as minhas almofadas e armazená -las no meu laptop. Como efeito colateral, ele me mostra quais almofadas mudaram e me permitem ver um diferencial desde a última versão exportada. Também mostra quais foram criados recentemente.
Primeiro, crie o seguinte script, padlist.pl
, no servidor que hospeda sua instância de Etherpad:
#!/usr/bin/env perl
$list = `mysql -u root -pPASSWD etherpad -e
"select id from PAD_SQLMETA order by lastWriteTime DESC, headRev DESC"`;
$list =~ s/^id\s*\n//s; # get rid of the column header mysql adds.
print $list;
Em seguida, execute o seguinte script, fetchall.pl
, na sua máquina local. Ele sugará instantâneos de todas as suas almofadas e informará quais mudaram e quais apareceram recentemente.
#!/usr/bin/env perl
use LWP::Simple qw(get);
$| = 1; # autoflush.
$server = "server.com"; # the server that hosts your etherpad instance.
$pads = `ssh $server etherpad/padlist.pl`;
@padlist = split(/\s+/, $pads);
$neednewline = 0; # printing "." for each pad where nothing to be done.
for(@padlist) {
$ep = $_;
$localfile = "$ep.txt";
if(-e $localfile) {
$localexists = 1;
$localcontent = do {local (@ARGV,$/) = $localfile; <>};
} else { $localexists = 0; }
$livecontent = get("http://$server/ep/pad/export/$ep/latest?format=txt");
if($livecontent ne $localcontent) {
if($neednewline) { print "\n"; $neednewline = 0; }
if($localexists) {
print "CHANGED: $ep\n";
open(F, ">prev/$localfile") or die "Probably need to create 'prev' dir.";
print F $localcontent;
close(F);
} else { print "NEW: $ep\n"; }
open(F, ">$localfile") or die;
print F $livecontent;
close(F);
} else {
print ".";
$neednewline = 1;
} }
Para ver um diferencial de pad foo desde a última vez que peguei:
diff prev/foo.txt foo.txt