Willkommen im #Neuland
Login wie bei quake.ingame.de zuvor, die Passwörter aus der alten Datenbank wurden aber gelöscht - einmal hier neu anfordern.
Wer seine E-Mail-Adresse nicht mehr hat oder kennt, bitte eine Nachricht mit Infos schicken o. im Discord melden.

PQ Discord Server: #planetquake                                                                                                                                         Spenden? Hier entlang!

Sexy pq.de (20) tot?

Off-Topic
Antworten
fame
Combo
Combo
Beiträge: 13800
Registriert: Okt 2000
Wohnort: LK Rosenheim

Beitrag von fame »

Kann das nicht Peter übernehmen damit das was wird? Nichts gegen euch aber naja.
RDX hat geschrieben:Halt einfach mal deine verfickte Fresse du Spast, OK? Wenn es dir Spass macht nach dem Essen einen grummelnden Magen zu haben (noch dazu nachdem du etwas gegessen hast was dir absolut nicht schmeckt) um dann irgendwann furzend auf's Klo zu spazieren und richtig ordentlichen Weichschiss zu hinterlassen wonach du deinen Arsch etwa 12 mal abwischen musst, dann viel Spass damit.
Wenn nicht, dann halt's Maul und lass mich in Ruhe.
fr34k
Biker
Biker
Beiträge: 1031
Registriert: Nov 2006

Beitrag von fr34k »

Wow, wie alle paar Wochen mal hier reingeschaut und bin nun ziemlich geschockt.

3 Tage vorlaufzeit? :Zwiebelmad:



Meinem dringlichen Wunsch, den Analkreis wieder einzuführen, wurde leider nie stattgegeben, aber......danke für all die Lacher :)
Bild
EviLsEyE
Administrator
Administrator
Beiträge: 23012
Registriert: Jan 2000
Wohnort: NRW
Kontaktdaten:

Beitrag von EviLsEyE »

fame hat geschrieben:Kann das nicht Peter übernehmen damit das was wird? Nichts gegen euch aber naja.
Welcher Peter?
Oder meinst Du Peer (Forlani)?

Nach meinem Kenntnisstand haben ihn nahezu alle namhaften pq-Admins bzgl. eines Backups o.ä. kontaktiert und er zeigte kaum Reaktion bzw. ließ durchschimmern, dass er es wirklich ernst meint.. und es scheint ihm auch nicht wirklich viel daran zu liegen, uns diesen Community-Dienst zu erweisen..

Also versuche ich zumindest auf diese möglichst einfache und schnelle Art und Weise die Seite zu spiegeln, damit man darauf aufbauend ggf. eine archivierte Version bereitstellen kann..
Erstmal scrapen was geht, was man damit anstellt, kann man später überlegen..
Wenn heute im Laufe des Tages die Lichter ausgehen, kann es sein, dass alle Threads unwiederbringbar weg sind - das ist Dir klar, oder?
Bild
50493D33
Wrack
Wrack
Beiträge: 488
Registriert: Dez 2002

Beitrag von 50493D33 »

Also ich habe jetzt glaube auch alle Threads bis auf jene, die hinter verschlossenen Türen sind. Ich guck mal, ob ich noch Cookie-Support in mein Skript einbauen kann.
Thorns-zertifizierter Dampfplauderer

"There... are... four... lights!"
juyotoken
Dopefish
Dopefish
Beiträge: 4583
Registriert: Jun 2005
Wohnort: Stuttgart

Beitrag von juyotoken »

EviLsEyE hat geschrieben:Welcher Peter?
Oder meinst Du Peer (Forlani)?

Nach meinem Kenntnisstand haben ihn nahezu alle namhaften pq-Admins bzgl. eines Backups o.ä. kontaktiert und er zeigte kaum Reaktion bzw. ließ durchschimmern, dass er es wirklich ernst meint.. und es scheint ihm auch nicht wirklich viel daran zu liegen, uns diesen Community-Dienst zu erweisen..

Also versuche ich zumindest auf diese möglichst einfache und schnelle Art und Weise die Seite zu spiegeln, damit man darauf aufbauend ggf. eine archivierte Version bereitstellen kann..
Erstmal scrapen was geht, was man damit anstellt, kann man später überlegen..
Wenn heute im Laufe des Tages die Lichter ausgehen, kann es sein, dass alle Threads unwiederbringbar weg sind - das ist Dir klar, oder?
ich glaube, das war ein Witz.
Peter war doch dieser "super-Admin-Typ" vor ein paar Jahren, als pq auf einmal inqame wurde. Null Ahnung, davon eine Menge und das hängte ihm zum Halse raus.
Bild
いつでも捜しているよ どっかに君の姿を
EviLsEyE
Administrator
Administrator
Beiträge: 23012
Registriert: Jan 2000
Wohnort: NRW
Kontaktdaten:

Beitrag von EviLsEyE »

juyotoken hat geschrieben:ich glaube, das war ein Witz.
Peter war doch dieser "super-Admin-Typ" vor ein paar Jahren, als pq auf einmal inqame wurde. Null Ahnung, davon eine Menge und das hängte ihm zum Halse raus.
:lol:
stimmt, da war was.. aber wurde der nicht nach 1-2 Jahren wieder abgesägt wegen unüberwindbaren Differenzen? :ugly:
Bild
juyotoken
Dopefish
Dopefish
Beiträge: 4583
Registriert: Jun 2005
Wohnort: Stuttgart

Beitrag von juyotoken »

EviLsEyE hat geschrieben: :lol:
stimmt, da war was.. aber wurde der nicht nach 1-2 Jahren wieder abgesägt wegen unüberwindbaren Differenzen? :ugly:
der war weg auf einmal ja, aber das mit unüberwindbaren Differenzen ist mir neu. :ugly: wenig überraschend aber.
Bild
いつでも捜しているよ どっかに君の姿を
shady
Bones
Bones
Beiträge: 3064
Registriert: Jun 2003
Kontaktdaten:

Beitrag von shady »

bah, dabei hab forum gerade erst nach mehreren Jahren Pause wieder entdeckt.
Dann werde ich wohl doch mal wieder IRC und Discord anschmeißen.

#fickdichforlani!
Original erstellt von prion
Und die Leute die gerne Angeln, anstatt auf die Jagd zu gehen, sollen halt CS spielen ;)
...the "Principle of Quake" as I described it is SHOOTING. that's why it's called a "First Person SHOOTER", ladies and gentleman, not a "First Person Red Armor Timer"...
Agrazitat

Beitrag von Agrazitat »

juyotoken hat geschrieben:ich glaube, das war ein Witz.
Peter war doch dieser "super-Admin-Typ" vor ein paar Jahren, als pq auf einmal inqame wurde. Null Ahnung, davon eine Menge und das hängte ihm zum Halse raus.

Ich glaube wegen Peter hat Drluv auch damals seinen Moderator Posten geschmissen,weil er dieser Zwiebelpeter Shice nicht mehr zusehen konnte.
Es wäre gut zu wissen ob es eine möglichkeit gibt dieses nutzlose Board zu kaufen.

#rettetpq
50493D33
Wrack
Wrack
Beiträge: 488
Registriert: Dez 2002

Beitrag von 50493D33 »

Cookie-Support tut. Den rohen http-Dump bekommt jetzt aber keiner mehr :)
Da ich aber nicht in alle Foren kann, wird da dennoch etwas fehlen.
Daher hier noch der aktuelle Code

Code: Alles auswählen

#!/usr/bin/env python3
from lxml import html
import requests
import pickle
import os
from progress.bar import Bar
import concurrent.futures
import pathlib
import sys

base_url = "https://quake.ingame.de/forum/threads"
file_name_tmpl = "thread{}_page{}"
do_update = True
num_parallel = 32
first_thread_id = 0 ## 180740 ##20000
last_thread_id = 292836

#Cookires muss man sich aus dem Browser holen
cookies = {
    # unter ingame
    "inToken" : "",
    #unter quake.ingame.de
    "bb_sessionhash" : "",
    "PHPSESSID" : ""
}

pathlib.Path('raw').mkdir(parents=True, exist_ok=True)
pathlib.Path('html').mkdir(parents=True, exist_ok=True)

def rawfileName(thread_id, page_id):
    file_name = file_name_tmpl.format(thread_id, page_id)
    return file_name
    # return os.path.join("raw", file_name)

def htmlFileName(thread_id, page_id):
    file_name = "{}.html".format(file_name_tmpl.format(thread_id, page_id))
    return file_name
    # return os.path.join("html", file_name)

def single_page(thread_id, page_id):
    url = "{}/{}/page{}".format(base_url, thread_id, page_id)
    # print("Getting file {}".format(url))
    page = requests.get(url, cookies=cookies)
    # print("Pickle target: {}".format(rawfileName(thread_id, page_id)))
    #Dump page immediately, since html from string sometimes excepts due to encoder problems
    pickle.dump(page, open(rawfileName(thread_id, page_id), "wb") )
    try:
        tree = html.document_fromstring(page.content)
    except Exception: # try reading as text encoded as utf-8?
        tree = html.document_fromstring(page.text)
    next_page = "page{}".format(page_id+1)
    have_next = False
    for x in tree.iterlinks():
        if next_page in x[2]:
            have_next = True
            break
    try:
        with open(htmlFileName(thread_id, page_id), 'wb') as f:
            f.write(html.tostring(tree))
    except Exception as e:
        print("Failed to write thread {} page {}: {}".format(thread_id, page_id, e))
    return have_next

def single_thread(thread_id):
    page_id = 1
    if os.path.exists(rawfileName(thread_id, page_id)) and os.path.exists(htmlFileName(thread_id, page_id)):
        if not do_update:
            # print("Thread {} already fetched".format(thread_id))
            return
        while True:
            if os.path.exists(rawfileName(thread_id, page_id+1)):
                page_id += 1
            else:
                break
        # print("Starting update for thread {} from page {}".format(thread_id, page_id))
        ## page_id now points to the last valid page
    while single_page(thread_id, page_id):
        page_id += 1
    # print("Thread {} had {} pages".format(thread_id, page_id))

def safe_single_thread(thread_id):
    # print("Getting thread {}".format(thread_id))
    try:
        single_thread(thread_id)
    except Exception as e:
        print("Failed to fetch thread {}: {}".format(thread_id, e))


#encode problems:
# safe_single_thread(292045)
# safe_single_thread(195823)
# safe_single_thread(last_thread_id)
# sys.exit(0)

with concurrent.futures.ThreadPoolExecutor(max_workers=num_parallel) as executor:
    bar = Bar('Processing', max=last_thread_id-first_thread_id)
    thread_id = last_thread_id
    active_futures = set()
    while thread_id > first_thread_id:
        while len(active_futures) < num_parallel:
            if thread_id <= first_thread_id:
                break
            active_futures.add( executor.submit(safe_single_thread, thread_id) )
            thread_id -= 1
            bar.next()
        # wait for any future to finish and remove it from active_futures
        finished_futures = concurrent.futures.wait(active_futures, None, concurrent.futures.FIRST_COMPLETED)
        for x in finished_futures.done:
            active_futures.remove(x)
    concurrent.futures.wait(active_futures, None, concurrent.futures.ALL_COMPLETED)
    bar.finish()
Argon
Ranger
Ranger
Beiträge: 4
Registriert: Mär 2005

Beitrag von Argon »

50493D33 hat geschrieben:Cookie-Support tut. Den rohen http-Dump bekommt jetzt aber keiner mehr :)
Da ich aber nicht in alle Foren kann, wird da dennoch etwas fehlen.
Daher hier noch der aktuelle Code

Code: Alles auswählen

#!/usr/bin/env python3
from lxml import html
import requests
import pickle
import os
from progress.bar import Bar
import concurrent.futures
import pathlib
import sys

base_url = "https://quake.ingame.de/forum/threads"
file_name_tmpl = "thread{}_page{}"
do_update = True
num_parallel = 32
first_thread_id = 0 ## 180740 ##20000
last_thread_id = 292836

#Cookires muss man sich aus dem Browser holen
cookies = {
    # unter ingame
    "inToken" : "",
    #unter quake.ingame.de
    "bb_sessionhash" : "",
    "PHPSESSID" : ""
}

pathlib.Path('raw').mkdir(parents=True, exist_ok=True)
pathlib.Path('html').mkdir(parents=True, exist_ok=True)

def rawfileName(thread_id, page_id):
    file_name = file_name_tmpl.format(thread_id, page_id)
    return file_name
    # return os.path.join("raw", file_name)

def htmlFileName(thread_id, page_id):
    file_name = "{}.html".format(file_name_tmpl.format(thread_id, page_id))
    return file_name
    # return os.path.join("html", file_name)

def single_page(thread_id, page_id):
    url = "{}/{}/page{}".format(base_url, thread_id, page_id)
    # print("Getting file {}".format(url))
    page = requests.get(url, cookies=cookies)
    # print("Pickle target: {}".format(rawfileName(thread_id, page_id)))
    #Dump page immediately, since html from string sometimes excepts due to encoder problems
    pickle.dump(page, open(rawfileName(thread_id, page_id), "wb") )
    try:
        tree = html.document_fromstring(page.content)
    except Exception as e: # try reading as text encoded as utf-8?
        tree = html.document_fromstring(page.text)
    next_page = "page{}".format(page_id+1)
    have_next = False
    for x in tree.iterlinks():
        if next_page in x[2]:
            have_next = True
            break
    with open(htmlFileName(thread_id, page_id), 'wb') as f:
        f.write(html.tostring(tree))
    return have_next

def single_thread(thread_id):
    page_id = 1
    if os.path.exists(rawfileName(thread_id, page_id)) and os.path.exists(htmlFileName(thread_id, page_id)):
        if not do_update:
            # print("Thread {} already fetched".format(thread_id))
            return
        while True:
            if os.path.exists(rawfileName(thread_id, page_id+1)):
                page_id += 1
            else:
                break
        # print("Starting update for thread {} from page {}".format(thread_id, page_id))
        ## page_id now points to the last valid page
    while single_page(thread_id, page_id):
        page_id += 1
    # print("Thread {} had {} pages".format(thread_id, page_id))

def safe_single_thread(thread_id):
    # print("Getting thread {}".format(thread_id))
    try:
        single_thread(thread_id)
    except Exception as e:
        print("Failed to fetch thread {}: {}".format(thread_id, e))


#encode problems:
# safe_single_thread(292045)
# safe_single_thread(195823)
# safe_single_thread(last_thread_id)
# sys.exit(0)

with concurrent.futures.ThreadPoolExecutor(max_workers=num_parallel) as executor:
    bar = Bar('Processing', max=last_thread_id-first_thread_id)
    thread_id = last_thread_id
    active_futures = set()
    while thread_id > first_thread_id:
        while len(active_futures) < num_parallel:
            if thread_id <= first_thread_id:
                break
            active_futures.add( executor.submit(safe_single_thread, thread_id) )
            thread_id -= 1
            bar.next()
        # wait for any future to finish and remove it from active_futures
        finished_futures = concurrent.futures.wait(active_futures, None, concurrent.futures.FIRST_COMPLETED)
        for x in finished_futures.done:
            active_futures.remove(x)
    concurrent.futures.wait(active_futures, None, concurrent.futures.ALL_COMPLETED)
    bar.finish()
Ah wunderbar. Später mal ausprobieren. Ich bereite mich gedanklich schon auf die Abschaltung von inWc vor.
Gibts einen grund weshalb du nicht die Druckversion nimmst? (printthread.php)
Agrazitat

Beitrag von Agrazitat »

Dein erster Beitrag seit 2005?
Bist du Feuerwehrmann? :ugly:
EviLsEyE
Administrator
Administrator
Beiträge: 23012
Registriert: Jan 2000
Wohnort: NRW
Kontaktdaten:

Beitrag von EviLsEyE »

Argon hat geschrieben:Ah wunderbar. Später mal ausprobieren. Ich bereite mich gedanklich schon auf die Abschaltung von inWc vor.
Gibts einen grund weshalb du nicht die Druckversion nimmst? (printthread.php)
Ich ziehe auch die "richtige" Version - bei der Printversion kriegt man zwar die Texte, aber das verliert auch einfach den ganzen Flair des Forums..
Bild
Argon
Ranger
Ranger
Beiträge: 4
Registriert: Mär 2005

Beitrag von Argon »

Ok, macht sinn. Dachte nur die Druckversien sollte etwas "leichter" sein, je nachdem welche Datenmenge sich dabei ergibt.
Gibts seitens ingame server ein rate limit/ban? Dann würd ich noch delays rein packen bevor ich anfang.
Agrazitat hat geschrieben:Dein erster Beitrag seit 2005?
Bist du Feuerwehrmann? :ugly:
Ich komm von nebenan
50493D33
Wrack
Wrack
Beiträge: 488
Registriert: Dez 2002

Beitrag von 50493D33 »

printthread.php kannte ich nicht. Sind da denn die ids etc. im html drin? Die "richtige" Version ist mit so vielen Metadaten voll, dass man da relativ einfach fast das ganze Forum rekonstruieren kann.
Thorns-zertifizierter Dampfplauderer

"There... are... four... lights!"
Agrazitat

Beitrag von Agrazitat »

Argon hat geschrieben:Ich komm von nebenan
Achtung hier wacht der Nachbar.

Sehr gut!
nKnmephisto
Anarki
Anarki
Beiträge: 1726
Registriert: Apr 2001
Kontaktdaten:

Beitrag von nKnmephisto »

EviLsEyE hat geschrieben:Benni!!1 <3
Sehr gerne :)
Falls das Forum ab morgen doch tot ist - auf welchem Wege kann man Dich sonst noch erreichen? :ugly:
Bist Du schon im Discord? Sonst Signal/Threema?
bin in dem pq.eu-forum und werde auch den weg ins discord finden. war gestern kurz da, hab aber nicht gerafft wie ich mit meiner eigentlichen mailadresse und anderem namen einen zweiten server joinen kann. moderne welt und so. IRC war einfacher :D
werd die tage also auch im discord auftauchen :)
thg
Staff
Staff
Beiträge: 6263
Registriert: Jan 2000
Wohnort: Stuttgart

Beitrag von thg »

Tschüss PQ... War schön mit dir *schnüff*

Die schönen Zeiten sind eh längst vorbei, aber die Erinnerungen bleiben :)

:wave: Juyo - bist du auf Skype oder so noch erreichbar?
Bild
DerSleaze
Sarge
Sarge
Beiträge: 127
Registriert: Feb 2017

Beitrag von DerSleaze »

Toll... da wollte ich nach Jahren wieder das Trollen anfangen und dann wird hier dicht gemacht. Forlani ich mach Dich nieder... sag einen Preis für das Forum:
https://youtu.be/CwE4mk2fbow?t=20
Argon
Ranger
Ranger
Beiträge: 4
Registriert: Mär 2005

Beitrag von Argon »

EviLsEyE hat geschrieben:Ich ziehe auch die "richtige" Version - bei der Printversion kriegt man zwar die Texte, aber das verliert auch einfach den ganzen Flair des Forums..
Die Ordner sind nur zur Zierde? :ugly: Gut, das hinterher zu verschieben ist das kleinste Problem.
Rattert und schaut gut aus. Hoffe das läuft durch. Danke schonmal!
juyotoken
Dopefish
Dopefish
Beiträge: 4583
Registriert: Jun 2005
Wohnort: Stuttgart

Beitrag von juyotoken »

thg hat geschrieben:Tschüss PQ... War schön mit dir *schnüff*

Die schönen Zeiten sind eh längst vorbei, aber die Erinnerungen bleiben :)

:wave: Juyo - bist du auf Skype oder so noch erreichbar?
Hey Thilo, :wave:
bin auf diesem Discord jetzt :ugly:
Skype habe ich nicht mehr. ( Schick Dir gleich aber ne PM mit meiner Tel. Nr. )
Bild
いつでも捜しているよ どっかに君の姿を
Argon
Ranger
Ranger
Beiträge: 4
Registriert: Mär 2005

Beitrag von Argon »

50493D33 hat geschrieben:printthread.php kannte ich nicht. Sind da denn die ids etc. im html drin? Die "richtige" Version ist mit so vielen Metadaten voll, dass man da relativ einfach fast das ganze Forum rekonstruieren kann.
Hab da gar nicht weiter rein geschaut, lad jetzt auch die normale Version. Dachte echt nur aus Platzgründen dran. Aber am Ende vom Tag ist das ja alles Text, komprimiert also ziemlich gut.
Wenn fertig könnte man alles mit Xapian indizieren und dann sogar ne gute Suche drumrum basteln.
BaBaUTZ
Patriot
Patriot
Beiträge: 1305
Registriert: Aug 2000

Beitrag von BaBaUTZ »

Poste hier seit Jahren nicht mehr, schau aber immer mal rein. Wenn hier bald dicht ist, wollt ich zumindest mal tschö sagen!
pressluftpinocchio
Defense
Defense
Beiträge: 7744
Registriert: Okt 2001
Wohnort: pq.de

Beitrag von pressluftpinocchio »

macht mich schon betroffen. pq.de war die erste community, der ich beigetreten bin und seitdem so eine art anker in meinem online-leben. alles andere kam und ging, aber pq blieb.

gg, wp
Windows Thorns 7
Defense
Defense
Beiträge: 7192
Registriert: Dez 2000
Wohnort: Berlin

Beitrag von Windows Thorns 7 »

Ok tschüss war schön aber man wird ja doch älter.
Herr von zoW
Uriel
Uriel
Beiträge: 2876
Registriert: Jul 2010
Steam: FloWzoW
Kontaktdaten:

Beitrag von Herr von zoW »

Windows Thorns 7 hat geschrieben:Ok tschüss war schön aber man wird ja doch älter.
Stimmt, hast du jetzt einen Mac oder Linux?
PostalDude
Humilation
Humilation
Beiträge: 10962
Registriert: Aug 2003
Wohnort: Köln

Beitrag von PostalDude »

:eek: :heul:

R.I.P. geliebtes Forum. Das letzte seiner Art... :(

Aber:

Totgesagte leben länger ! Vielleicht gibt es ne Chance, anders weiter zu leben !?

:ugly: :ugly: :ugly:

Zum Abschluss:

Bild
onkelcolo
Bitterman
Bitterman
Beiträge: 184
Registriert: Mai 2009

Beitrag von onkelcolo »

Aktueller Status: Account auf planetquake.eu gesichert!

Ich fuerchte mich irgendwie vor dem Tag, an dem auch das QuakeNet offline geht :(


YTARY!
ytary.
Kanegou
Assist
Assist
Beiträge: 5395
Registriert: Mai 2003
Wohnort: #hirnfick

Beitrag von Kanegou »

:ugly:
Bild
Frylock: You know, I think I've finally found a good use for the TV.
Master Shake: You put that right back upstairs!
Frylock: No.
Master Shake: Well, then, you help me move down my chair down here so I can watch it. HERE!
Frylock: No, I won't.
Master Shake: Uh... well... I will pee all over my pants, and THEN who's gonna end up looking bad? Huh?
Frylock: You just stay down here with your TV and fucking shove it.
Master Shake: ... Well, maybe I WILL!
realgeizt
Bones
Bones
Beiträge: 3024
Registriert: Apr 2001

Beitrag von realgeizt »

Mich kennt zwar niemand mehr hier und ich hab hier auch nur noch 1x pro Jahr reingeschaut, aber gerade in den Anfangszeiten von Q3A habe ich hier sehr viel Zeit verbracht. Von daher auch von mir ein fettes Schade, danke für die gute Zeit und Tschööööö! :wave:
TITANIC-Leser stellen sich vor
Heute: Thorsten T. aus Googlemail.com

Betreff: es gibt kein betreff, hehe.
Datum: Wed, 11 Nov 2009 20:06:35 +0100
Von: Thorsten T*****
absolut bemittleidenswert was ihr macht. euch sollte man wie die juden vergasen und davor eure kinder vor euren augen bei lebendigen leib verbrennen. kein respekt vor der würde des menschen. richtig behindert seid ihr. das hat überhaupt nichts mehr mit satire zu tun.
Antworten