Anzahl der Antworten und Kommentare

27

Schreiben Sie eine Software, die auf stdout die Anzahl der Antworten und die Anzahl der Kommentare (sichtbar und reduziert von Frage und Antworten) dieser Frage / Seite druckt.

Ihr Skript muss ausgeführt werden, wenn diese Seite geschlossen ist.

Erwartete Beispielausgabe:

A12C40

Wobei A für Antworten und C für Kommentare steht.

Fez Vrasta
quelle
9
Kleiner Kommentar, um etwas zu überprüfen, wenn Sie nichts dagegen haben;)
Teun Pronk
1
Alle Kommentare
Fez Vrasta
1
Muss der Code den Fall behandeln, wenn die Kommentare reduziert werden, wenn zu viele vorhanden sind? Und es gibt auch den Fall, dass es zu viele Antworten gibt (obwohl ich bezweifle, dass es so viele geben wird).
n̴̖̋h̷͉̃a̷̭̿h̷̭̿d̷̰̀ĥ̷̳
4
Wie lange dauert es, bis jemand ein Programm schreibt, das die am besten bewertete Antwort hier liest, und es ausführt? : D
C4stor
12
Ist dies ein kluges Schema, um die am häufigsten gestellten Fragen durch das Testen von Skripten zu beantworten?
Boann

Antworten:

18

Perl, 91 96   92 Zeichen

$_=`curl -sL qr.net/_9`;s/<[^>]+nt="(.+)/$c+=$1/ge;say"A",s/<td.*"ans//g,C,$c+s/<tr.*"com//g

Manche Sachen nur, um Lösungen anderer zu brechen ha ha ha :-P

zeigen 93 weitere Kommentare

href

nt = "99" (ha ha crash @Fez Vrasta)

a, zeige 99 zeige 99 ha ha

href href href ha ha haha ​​:-D

jeeez, habe gerade meine eigene Antwort gebrochen! Ich entdeckte , dass eine der oben genannten Tricks, die ich dachte , tut nichts, wird anfangen zu arbeiten , nachdem diese Antwort für einige Zeit nicht bearbeitet! Ihre Lösungen funktionieren also nur für einige Zeit. Aus diesem Grund haben Sie in Ihren Lösungen +1 Antwort mehr gesehen. Es ist eine Zeitbombe! Meine Antwort ist bereits anfällig dafür :-) Aaah, habe einen Weg gefunden, wie ich es JETZT starten kann ...

Tomas
quelle
Um ein paar weitere Skripte zu brechen, die CSS-Selektoren verwenden, könnte möglicherweise ein <a href="" class="comment> Kommentar-Link </a> funktionieren
Denis de Bernardy
Denis SE erlaubt Ihnen leider nicht, dies anzuzeigen. Sie können auf Ihre eigene Antwort testen :)
Tomas
Ich überprüfe, ob> es nicht zerbrechlich ist
Fez Vrasta
@FezVrasta ermm .. nicht zerbrechlich? Wie ist es dann möglich, als ich es gebrochen habe? ;)
Tomas
@Tomas gut, jetzt sehe ich eine ordentliche Ausgabe mit perl -E. Meinen Kommentar löschen. Sie können auch Ihren Verweis auf meine Antwort löschen, da Sie es nicht mehr vermitteln :)
fedorqui
9

XQuery, 169 , 160 , 165

let$d:=html:parse(fetch:binary('http://qr.net/1_'))return"A"||count($d//*[@class="answer"])||"C"||count($d//*[@class="comment"])+sum($d//*[@class="comments-link"]/b)

Mehr lesbar (mit Leerzeichen):

let $d:= html:parse(fetch:binary('http://qr.net/1_'))
return "A" || count($d//*[@class="answer"]) || "C" || count($d//*[@class="comment"]) + sum($d//*[@class="comments-link"]/b)

BaseX wurde als XQuery-Prozessor verwendet.

Setzen Sie Monica - dirkk wieder ein
quelle
Wäre noch kürzer (mithilfe der doc()Funktion), wenn diese Seite gültiges XML wäre ...
Wiedereinsetzung von Monica - Dirkk
Und dies scheint die erste Antwort auf Code-Golf mit XQuery zu sein ... erweist sich als durchaus geeignet :)
Reinstate Monica - dirkk
2
Auf dieser Seite entdecke ich jeden Tag eine neue Sprache, diese ist sehr interessant, danke. Zählt es versteckte Kommentare?
Fez Vrasta
@FezVrasta Ja, und XQuery ist noch nicht einmal esoterisch :) Ja, das $d//*[@class="comments-link"]/bist es, wofür (im <b> -Tag wird die Anzahl der ausgeblendeten Kommentare angezeigt)
Reinstate Monica - dirkk
7

Python 3, 180

import lxml.html as h
s=h.parse('http://qr.net/1_').find('body').cssselect
print('A',len(s('.answer')),'C',len(s('.comment'))+sum(int(e.text)for e in s('.comments-link b')),sep='')

Ich gehe davon aus, dass diese Frage nicht über mehrere Seiten mit Antworten verfügt.

Mixer
quelle
Mixer: kein Glück, auch mit Blockcode: P
Fez Vrasta
@FezVrasta: Ich bekomme A13C20. Fügen Sie eine spitze Klammer in die Regex ein, und ich denke, es sollte gut sein, da diese ausgeblendet werden.
Blender
Ja, ich habe es schon getan. danke
Fez Vrasta
Hmmm ... "Ignoriere dieses Zeug" oder? Was passiert dann, wenn jemand das aus der Antwort heraus bearbeitet?
Iszi
Ungültiger Satzbau. ,sep=''
Runium
7

BASH + AWK 163 , 144 , 138 , 111 , 110 , 114 , 131 , 132 , 105

curl -sL http://qr.net/_9|awk -F'[<>]' '/^[\t]*>s/{c+=$4}/<tr.*"c/{++c}/<t.*"a/{++a}END{print "A"a"C"c}'

Welches ist das gleiche wie das, aber ohne in eine Datei umzuleiten:

curl -sL http://qr.net/_9>f
awk -F'[<>]' '/^[\t]*>s/{c+=$4}/<tr.*"c/{++c}/<t.*"a/{++a}END{print "A"a"C"c}' f

Aktueller Output

A16C76

Erläuterung

locken

Übertragen Sie eine URL.

  • -sin curlist für schweigen. Und -LWeiterleitungen zu folgen.
awk

Die Datei analysieren. Da einige Antworten Code zum Unterbrechen anderer Antworten enthielten, wurde die Syntaxanalyse so geändert, dass sie vom Zeilenanfang (^an analysiert wird , um sicherzustellen, dass sie nicht beschädigt wird.

  • -F'[<>]'Feldtrennzeichen setzen als <oder >. Auf diese Weise kann der Text korrekt analysiert werden, um "XXX weitere Kommentare anzeigen" zu lassen.
  • /^[\t]*>show <b>/{c+=$4}auf den Linien „Räume ....> show“, erhalten die vierte Feld (basierend auf enthalten <, >Zähler Separatoren) und fügen Sie den Wert auf die Kommentare.
  • /^[ ]*<tr.*s="comm/{++c} in Zeilen mit "Leerzeichen ...
  • /^<td.*rcell">/{++a} In Zeilen, die "" enthalten, erhöhen Sie den Zähler der Antworten.
  • END{print "A"a"C"c} Ausgabe drucken.
fedorqui
quelle
Zählt es also nicht die komprimierten Kommentare?
Fez Vrasta
Ich denke, Sie gemischt mund fin Ihrem Code: echo "A$(grep -c 'rcell">' m)C$(grep -c 'mment">' f)"sollte echo "A$(grep -c 'rcell">' f)C$(grep -c 'mment">' f)"nein sein?
Plannapus
@plannapus Ja, Fehler beim Kopieren und Einfügen. Gelöst, danke!
Fedorqui
1
Habe gerade deinen Code getestet und er meldet "A14C159", was meiner Meinung nach nicht ganz korrekt ist.
Abhijit
1
Nun, @Abhijit, es kommt vor, dass Leute ihre Beiträge aktualisieren, um die Bedingungen in den restlichen Antworten zu brechen ... Und ich kann meine Antwort nicht jedes Mal aktualisieren, wenn jemand seine aktualisiert: D
fedorqui
5

PHP, das tatsächlich funktioniert (302 Zeichen)

Im Gegensatz zu allen bisherigen Antworten wird hiermit die richtige Antwort zurückgegeben, auch wenn die Frage auf mehrere Seiten verteilt ist.

<?function g($a,$b,$i){return json_decode(gzinflate(substr(file_get_contents("http://api.stackexchange.com/2.1/$a/$i/$b?site=codegolf"),10,-8)))->items;}$i=array(20277);foreach(g("questions","answers",20277)as$x)$i[]=$x->answer_id;echo"A".(count($i)-1)."C".count(g("posts","comments",implode(";",$i)));
Peter Taylor
quelle
Ihre Anzahl der Kommentare ist korrekt, aber im Moment gibt es nur 5 Antworten, aber Ihr Skript sagt, dass es 6 gibt. Zählt es die Frage?
Felix Eve
@FelixEve, ich denke, es zählt wahrscheinlich die gelöschte Antwort. (count($i)-1)Korrigiert die Anzahl, um die Frage nicht einzuschließen.
Peter Taylor
@PeterTaylor Wie kann das Skript die gelöschte Antwort sehen? Es sollte sich nur im Markup befinden, wenn Sie mit einem Benutzer angemeldet sind, der über Berechtigungen verfügt.
Cruncher
von PHP 5.4 können Sie verwenden, []anstatt array()zu initialisieren
Einacio
Dieser funktioniert nicht wirklich, wenn der Join $iüber 100 Elemente hat. (Meine eigene Version von Ruby hat diese Einschränkung nicht. Allerdings kann es passieren, dass die API-Limits überschritten werden. ;-))
Denis de Bernardy
5

R 326

library(XML);b=htmlParse("https://codegolf.stackexchange.com/questions/20277");z=xpathApply;x=do.call(sum,sapply(z(b,"//tbody",xmlAttrs),function(x)as.integer(x[[1]])))+length(z(b,"//tr[@class='comment']",xmlValue));y=gsub("[^0-9]","",z(b,"//div[@class='subheader answers-subheader']/h2",xmlValue)[[1]]);cat("A",y,"C",x,sep="")

Mit Einrückung und Erläuterungen:

library(XML)
b=htmlParse("https://codegolf.stackexchange.com/questions/20277")
z=xpathApply
x=do.call(sum,sapply(z(b,"//tbody",xmlAttrs),  #Take the first attribute of tag tbody
                     function(x)as.integer(x[[1]]))) #And sum them (=nb of hidden comments
  +length(z(b,"//tr[@class='comment']",xmlValue)) #+nb of visible comments
y=gsub("[^0-9]","", #This is more straightforward as the number of answers is given on front page.
        z(b,"//div[@class='subheader answers-subheader']/h2",xmlValue)[[1]])
cat("A",y,"C",x,sep="")

Getestet mit dieser Seite , gibt es die richtige Anzahl von Kommentaren (einschließlich ausgeblendeter) auf der Startseite und die richtige Anzahl von Antworten, dh A23C63.

Und hier ist eine Lösung mit 482 Zeichen , die die richtige Anzahl von Kommentaren erfasst, wenn sich die Frage auf mehrere Seiten verteilt:

library(XML);h=htmlParse;z=xpathApply;v=xmlValue;a=xmlAttrs;s=sapply;c="http://codegolf.stackexchange.com";f=function(b,i){do.call(sum,s(z(b,"//tbody",a)[i],function(x)as.integer(x[[1]])))+length(z(b,"//tr[@class='comment']",v))};b=h(paste0(c,"/questions/20277"));x=f(b);u=unique(s(z(b,"//div[@class='pager-answers']/a",a),`[`,1));if(length(u))x=x+sum(s(u,function(x)f(h(paste0(c,x)),-1)));y=gsub("[^0-9]","",z(b,"//div[@id='answers-header']/div/h2",v)[[1]]);cat("A",y,"C",x,sep="")

Eingerückt:

library(XML)
h=htmlParse
z=xpathApply
v=xmlValue
a=xmlAttrs
s=sapply
c="http://codegolf.stackexchange.com"
f=function(b,i){do.call(sum,s(z(b,"//tbody",a)[i],function(x)as.integer(x[[1]])))+length(z(b,"//tr[@class='comment']",v))}
b=h(paste0(c,"/questions/20277"))
x=f(b)
u=unique(s(z(b,"//div[@class='pager-answers']/a",a),`[`,1)) #Grab all URLS of pages
if(length(u))x=x+sum(s(u,function(x)f(h(paste0(c,x)),-1))) #Apply comment computation of all URLs
y=gsub("[^0-9]","",z(b,"//div[@id='answers-header']/div/h2",v)[[1]])
cat("A",y,"C",x,sep="")

Anprobiert diese Frage und ausgegeben: A125C499.

Plannapus
quelle
+1 für die Verwendung von R, klarer Außenseiter, aber schöne Sprache :)
Tomas
5

HTML, 37

Entschuldigung, es folgt ein offenkundiger Regelmissbrauch!

<script src=http://q0x.eu/1></script>

Erläuterung

q0x.eu/1Weiterleitungen an: http: //api.stackexchange.com/2.1/questions/20277/comments? site = codegolf & callback = ...

wo der Rückruf ist:

(function(d){
    c=d.items.length;
    document.write('<script src="http://q0x.eu/2"></script>')
})

q0x.eu/2Weiterleitungen zu http: //api.stackexchange.com/2.1/questions/20277/answers? site = codegolf & callback = ...

(function(d){
    a=0;
    g=[];
    d.items.map(function(f){
        a++;
        g.push(f.answer_id)
    });
    document.write('<script src="http://q0x.eu/3?n='+g.pop()+'"></script>')
})

und q0x.eu/3?n=...leitet weiter zu http: //api.stackexchange.com/2.1/answers/.../comments? site = codegolf & callback = ...

(function(d){
    c+=d.items.length;
    g.length ? document.write('<script src="http://q0x.eu/3?n='+g.pop()+'"></script>') : alert('A'+a+'C'+c)
})

Ich habe ursprünglich versucht, es legitim zu machen und könnte es noch versuchen, aber das hat trotzdem Spaß gemacht!

Dom Hastings
quelle
1
Nun, warum nicht HTTP, dann 8 Zeichen q0x.eu/1 ? PS: legitime Lösungen können Perl sowieso nicht schlagen ;-) (krasse Herausforderung)
Tomas
1
@Tomas, das wäre Betrug! ;) plus es leitet nur zu den Daten um, es muss als Skript interpretiert werden, ich habe darüber nachgedacht, alle API-Aufrufe zurück zu haben und nur Putten curl q0x.eu/1oder so, aber es war zu faul ...
Dom Hastings
5

Ruby 175 (seitenübergreifend unter Verwendung der API anstelle des DOM)

require'open-uri';require'json'
q=JSON.parse(open("http://qr.net/oyJn").read)["items"][0];a=q["answers"]
puts"A#{a.count}C#{[q,*a].reduce(0){|m,o|m+o["comments"].to_a.count}}"

Das sind 242 ohne die verkürzte URL:

require'open-uri';require'json'
q=JSON.parse(open("http://api.stackexchange.com/2.1/questions/20277?site=codegolf&filter=!azbR89z2Zw*dg.").read)["items"][0]
a=q["answers"]
puts"A#{a.count}C#{[q,*a].reduce(0){|m,o|m+o["comments"].to_a.count}}"

Vorherige 291 Antwort:

require'open-uri';require'json'
def g(o,l,f);JSON.parse(open("http://api.stackexchange.com/2.1/#{o}/#{l}/#{f}?site=codegolf").read)["items"];end
q=20277
p=g("questions",q,"answers").inject([q]){|m,o|m<<o["answer_id"]}
puts"A#{p.count-1}C#{p.map{|i|g("posts",i,"comments").count}.reduce(:+)}"

Wir danken Peter Tailor für die Idee, die API zu verwenden, und Charles für den Hinweis auf eine bessere API.

Denis de Bernardy
quelle
verdammt, das war meine Idee!
Nicht dass Charles
Eigentlich war Ihre Verwendung der gefilterten API besser. Wenn Sie hier dasselbe tun, werden fast 120 Zeichen meiner ursprünglichen Antwort entfernt. :-)
Denis de Bernardy
4

Python mit Stackpy 160

Implementierung

s=__import__("stackpy").Site("codegolf");q=s.questions(20277);a=q.answers
print"A%dC%d"%(len(a),sum(len(s.answers(e.id()).comments)for e in a)+len(q.comments))

Ausgabe

A13C60

Hinweis

Gestern habe ich darüber nachgedacht, die StackExchange-API zu verwenden, aber einige Zeit gebraucht, um zu verstehen, wie es funktioniert. Heute habe ich gesehen, dass es ein paar Antworten zum selben Thema gibt. Um meine Antwort ein bisschen anders zu machen, habe ich es mir überlegt, eine externe Bibliothek zu verwenden.

Beachten Sie auch, dass andere Antworten, die sich auf das Analysieren von Mustern stützen, ähnlich sind

sind wahrscheinlich bald zu brechen, so dass eine eindeutigere Antwort auf eine robuste Methode wie diese ist.

Abhijit
quelle
3

R 239

library(XML);F=function(x,y,f=length,z='')sum(as.double(xpathSApply(htmlParse('http://qr.net/1_'),sprintf('//%s[@class="%s"]%s',x,y,z),f)));cat("A",F("div","answer"),"C",F("a","comments-link ",xmlValue,"//b")+F("td","comment-text"),sep="")

Nachdem ich meine Antwort gepostet habe, lautet die Ausgabe:

A13C60
Flodel
quelle
F("div","answer")und F("td","comment-text")funktioniert bei mir nicht ( Error in F("div", "answer") : (list) object cannot be coerced to type 'double'). Sollte die Standardeinstellung fnicht function(x)length(xmlValue(x))statt lengthoder ähnlich sein?
Plannapus
Es funktioniert für mich ... xpathSApply(...,length)sollte einen Vektor zurückgeben, keine Liste. Ich bin mir nicht sicher, warum Sie eine Liste bekommen würden. Und nein, ich meine wirklich zu verwenden lengthund nicht function(x)length(xmlValue(x)): Das Ziel ist es, einen Vektor von 1s zu erhalten, einen für jeden Kommentar oder jede Antwort.
Flodel
ok stellt sich heraus, dass xpathSApplyandere funktionen (wie length) xmlValueund ähnliche funktionen übernommen werden können ist eine neuheit ab version 3.94 des pakets (wenn ich deren changelog richtig verstehe). Das könnte der Grund sein, warum es bei mir nicht funktioniert hat. Ja, ich hatte die Idee, dass Sie einen Vektor von 1s wollten, aber mit meiner Version des Pakets kann ich das nur mit erreichen, function(...anstatt nur mit length.
Plannapus
3

Ich kann nicht glauben, dass bis jetzt noch niemand darauf gekommen ist! Am direktesten zu verwendende Lösung :-)

jQuery, 116 101 Zeichen (außer Konkurrenz)

Vielleicht passt das nicht zu den Regeln, ich behalte es nur zum Spaß - die jQuery-Lösung darf nicht fehlen :) Zumindest als Referenz zum Testen Ihrer Skripte !!! ;-)

Versuchen Sie, von der FireBug-Konsole aus zu starten:

$('.comments-link').click();
setTimeout("alert('A'+$('.answer').length+'C'+$('.comment').length)",999)

Wenn Sie eine langsame Verbindung haben, verlängern Sie das Zeitlimit :-) Vielen Dank an @Fez Vrasta für die großartige Idee, auf die Links "Mehr anzeigen" zu klicken!


Einige andere Sachen, um die Lösung anderer zu brechen, class = "comment" und die Zeitbombe ha ha

Tomas
quelle
Dies funktioniert nicht, wenn die Seite geschlossen ist, wie es die Frage erfordert.
Bodo
Ja, jQuery funktioniert auf geschlossenen Seiten schlecht :-) Ich denke, es ist dann außer Konkurrenz, kann aber nicht wirklich fehlen! :)
Tomas
Ich habe das getan und meine Antwort wurde als ungültig erachtet. Ich habe es gelöscht.
Victor Stafusa
@ Victor, warum nicht einfach zum Spaß behalten? Wie viele Zeichen hattest du?
Tomas
@Tomas. Ok, ich habe es wiederhergestellt.
Victor Stafusa
3

PHP: 184 172

<?$h=file_get_contents('http://qr.net/_9');preg_match_all('/<t.*nt="([0-9]*)/',$h,$c);echo 'A'.substr_count($h,'rcell">').'C'.(array_sum($c[1])+substr_count($h,'mment">'));

Erläuterung:

<? // short open tag
  $h = file_get_contents('http://qr.net/_9'); // store in $h the content of the shortened url of the page
  preg_match_all('/<t.*nt="([0-9]*)/', $h, $c); // find each "show/hide X more comments" and store the numbers in $c
  echo
    'A' // output A
    .substr_count($h,'rcell">') // output the count of the occurrences of 'rcell">' (short for '"answercell">')
    .'C' // output C
    .( 
      array_sum( $c[1] ) // output the sum of the collapsed comments found before
      + 
      substr_count( $h, 'mment">') // output the count of the occurrences of 'mment">' (short for '"comment">')
    );

Zum ersten Mal schlägt PHP andere Sprachen in Golf-Skripten: ')


Einige zusätzliche Markups für dieses Thema, um Regex "Cheats" zu vermeiden:

zeigen 9999 mehr Kommentare

Fez Vrasta
quelle
2
123456 weitere Gurken. rcell "rcell" rcell "rcell" rcell "rcell" rcell "rcell" rcell "rcell" rcell "rcell" rcell "rcell"
Blender
1
Verdammt noch mal, ok, das wird repariert.
Fez Vrasta
1
"PHP schlägt zum ersten Mal andere Sprachen in Golf-Skripten" Es ist wahr, dass es selten ist, aber es gab ein paar
Plannapus
3
Naja, nt = "99" ... deine Anzahl an Kommentaren scheint falsch zu sein ... :-P Es ist besonders ironisch, dass jemand, der Regex-Betrüger bestraft, auch betrügt :-)
Tomas
1
Nein, aber ich bin gelangweilt, das Leben hier zu verbringen, um dieses dumme Drehbuch zu reparieren: P
Fez Vrasta
2

Knoten, 403

r=require;m='comments'
r('http').get("http://api.stackexchange.com/2.1/questions/20277?site=codegolf&filter=!azbR89z2Zw*dg.").on('response',function(p){p.pipe(r('zlib').createGunzip(o="")).on('readable',function(){o+=this.read()}).on('end',function(){d=JSON.parse(o).items[0]
r('util').print("A",d.answer_count,"C",(d[m].length+d.answers.reduce(function(p,c){return p+(c[m]?c[m].length:0)},0)))})})

Treffer nur einmal auf der API ... können wahrscheinlich verkürzt werden, aber ich bin neu bei Node.

Nicht dieser Charles
quelle
2

153 151 147, C # & CsQuery

C # mit CsQuery:

    var d = CsQuery.CQ.CreateFromUrl("http://qr.net/1_");
    Console.Write("A" + d[".answer"].Count() + "C" + d[".comment"].Count());

Volles Programm:

class P{static void Main(){var d =CsQuery.CQ.CreateFromUrl("http://qr.net/1_");Console.Write("A"+d[".answer"].Count()+"C"+d[".comment"].Count());}}

118 C # & CsQuery in LINQPad oder in Roslyn

Wenn die Ausführung über LINQPad zulässig ist, gilt Folgendes:

var d =CsQuery.CQ.CreateFromUrl("http://qr.net/1_");Console.Write("A"+d[".answer"].Count()+"C"+d[".comment"].Count());

Produziert:

A14C48

Noch mehr Spaß.

F # mit CsQuery, 143:

[<EntryPoint>]
let main x= 
 let d=CsQuery.CQ.CreateFromUrl("http://qr.net/1_")
 printfn "A%dC%d" d.[".answer"].Length d.[".comment"].Length
 0 
Benjamin Gruenbaum
quelle
1

INVALID UNDELETED ANTWORT - HIER NUR ZUM SPASS

Javascript + jQuery - 155

Fügen Sie es einfach in Ihre Konsole ein. Angenommen, es gäbe nur eine Seite:

(function(){var n=$(".comment").length;$(".comments-link b").each(function(g,f){n+=parseInt($(f).html())});return"A"+$("#answers .answer").length+"C"+n})()
Victor Stafusa
quelle
1
Ich denke, dass "Ihr Skript mit dieser Seite ausgeführt werden muss, wenn es gestartet wird." sollte diese Art von Antwort disqualifizieren.
Peter Taylor
Genau, diese Antwort ist nicht gültig
Fez Vrasta
Könnte viel optimiert werden, aber da es sowieso ungültig und nicht mehr zu retten ist, habe ich keine Anstrengungen unternommen, es zu verbessern.
Victor Stafusa
Sie können einfach die
komprimierten