Visualizando Etherpads editados recentemente (observe a nova tag 'Etherpad' para o código Etherpad de origem aberta!)

StackOverflow https://stackoverflow.com/questions/2569194

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.

Foi útil?

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
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top