Rette dein G+ auf deine Website!

Worum geht es?


G+ schließt im April 2019, die Daten sind jedoch herunterladbar. Die Daten sind allerdings nicht sonderlich gut lesbar, also habe ich ein Tool geschrieben, das mir meine Posts und die Kommentare der anderen auf meine Website rettet. In diesem Thread soll es darum gehen, wie DU das auch machen kannst;


Wäre mein Speicherplatz bei meinen Websitehoster nicht limitiert, würde ich deine Posts bestimmt mit aufnehmen, ist er aber...


Wenn es dir reicht, dein Profil auf deinem Rechner zu sehen, niemand anderes es sehen können soll, habe ich eine sehr einfache Lösung für dich:

Lade dir das Programm herunter und installiere ggf. noch Java, falls du es noch nicht hast. Dann kannst du die .jar-Datei (am besten aus der Konsole, damit du ihre Ausgabe siehst) starten: wähle den Ordner aus, in dem deine Beiträge liegen, im Stream in G+ - Ordner. Da das Auswahltool etwas... doof ist, wähle eine Datei aus dem Ordner aus. Du solltest dort .json-Dateien, .csv-Dateien und .png/.jpeg-Dateien sehen.

Nun wird das Programm alle Dateien, die nicht im Ordner enthalten sind, aus dem Internet herunterladen, was vorallem die Profilbilder der anderen Accounts betrifft. Sie werden im Ordner cache in deinem ausgewähltem Ordner erstellt :). Wenn sich nichts mehr am Ordner ändert, die Konsole deine Anzahl von Kontakten anzeigt, dann kannst du mit deinem Browser auf http://localhost:8080/ gehen und solltest dein Profil mit allen Kommentaren usw. sehen :D.


Falls dir das nicht reicht, hier der kompliziertere Weg:

Wenn du noch keine Erfahrung in diesem Bereich gesammelt hast, wirst du zwangsweise so einiges nebenbei lernen ;).


Schrittübersicht


1. Daten von Google retten

2. Webserver erstellen

3. Daten und Seite vorbereiten

4. Hochladen der Posts à 50 Stück

(5. Weitere Einstellungen)


1., Daten von Google retten


Gehe auf Google Takeout und wähle alles aus, was dir wichtig ist; auf jeden Fall jedoch "Stream in G+", da dort die Daten enthalten sind, die wir brauchen. "Profil" enthält nur deine Hintergrund- und Profilbilder und deine Profilinformationen, jedoch nicht deine Posts. Lade dann die Daten herunter.


2., Webserver erstellen


Hast du schon einen Webserver mit php und MySql-Datenbank? ;), dann kannst du diesen Schritt überspringen.

Andernfalls brauchst du sie noch: damit deine Website im Browser wie Chrome sichtbar ist, brauchen wir einen Webserver, also das, was hinter einer Website steckt. Grundlegend gibt es drei Optionen, zwischen denen du entscheiden musst:


Soll jeder deine Website sehen können? (dann 2.2 oder 2.3), oder reicht es deinem Haushalt?

Bist du bereit, einen kleinen monatlichen Betrag für deine Website zu bezahlen? (~6€/Monat, dann 2.3)


2.1, dein Heimwebserver

kostenlos, lokal, schnell


Lade dir XAMPP herunter, wenn du es noch nicht besitzt (oder Apache2 für Linuxnutzer plus eine Datenbank).

Konfiguriere XAMPP so, dass es startet, wenn du es brauchst, also z.B. immer beim Start oder nur wenn du es brauchst; und dann aktiviere den Webserver mit PHP (falls er nicht schon aktiviert ist) und die Datenbank (DB ist die Abkürzung; wie genau es heißt, ist nicht wichtig).

Wenn du nun im Browser unter der Addresse http://localhost eine Website siehst, ist alles gut :). "localhost" heißt dein eigener Rechner. Er hat die IP 127.0.0.1 . Damit nun auch dein Haushalt die Website sieht, musst du noch deine IP oder Adresse im lokalen Netzwerk herausfinden. Das geht z.B. mit dem Konsolenbefehl ipconfig unter Windows. Mit einer Fritzbox funktioniert auch <dein eingetragener Rechnername in den Fritzboxkonfigurationen>.fritz.box als Adresse.


2.2, kostenloses Hosting

kostenlos, global


Hosting bezeichnet, dass ein Server für dich die Websiteprogramme ausführt und in der Regel weltweit sichtbar macht. Als ich mit der Websitenprogrammierung angefangen habe und wollte, dass meine Websiten im Netz sichtbar sind, aber mein Taschengeld nicht sooo rosig war, habe ich https://www.1freehosting.com/ genutzt. Keine Werbung auf deiner Website, akzeptable Ladezeiten und nur manchmal ist deine Website nicht erreichbar. Zudem die Auswahlmöglichkeit einer kostenlosen Domain, z.B. *.tk. Meine erste öffentliche Website war z.B. http://anionoa.phychi.com. Mit HTTPS ist der Webtraffic dort sicher nicht geschützt, war er damals zumindest nicht, HTTPS ist aber auch nur wichtig, wenn du/deine Nutzer Daten eingeben können sollen, die nicht jeder sehen können soll, z.B. ein Passwort. HTTP selbst ist nämlich nicht verschlüsselt und man kann mit bloßem Auge jede Anfrage verstehen und als Klartext ohne Konvertierung lesen.

Es sind glaube ich aber nicht alle Dinge auf 1freehosting kostenlos, also passt auf! :)


Zugriff auf deine Dateien bekommst du mit einer FTP-Verbindung: gib ftp://deineDomain.xyz in deinen normalen Dateiexplorer ein und schon solltest du per Passwort und Nutzernamenseingabe Zugriff auf die Dateien auf dem Server haben.


2.3, kostenpflichtiges Hosting

schickere Domains, bessere Ladezeiten


.tk? Was soll das sein? ;). Wenn du möchtest, dass deine Website fast immer verfügbar ist und deine Domain auch schick aussieht, musst du für das Hosting bezahlen. Ich selbst nutze https://all-inkl.com, einem Anbieter mit Servern in Dresden (in Deutschland ist gut für leicht kürzere Ladezeiten) und bin für 7€/Monat mit HTTPS, 3 Domains als .de, .com oder ähnlichem (aber keine speziellen wie .bank; die kosten extra), 50 GB Festplattenspeicher, 3 Datenbanken, 150 Subdomains und 500 Emailadressen ;) ziemlich zufrieden und der Preis ist gut. Inzwischen gibt es bestimmt aber auch Anbieter mit besseren Konditionen/Preisen ;).

Wichtig ist, dass dein Anbieter dir genug Festplattenspeicher zur Verfügung stellt, wobei 1-2 GB schon für 2000 Posts reichen sollten und php unterstützt und auch mindestens eine Datenbank dabei ist.


Meine Domains sind übrigens *.phychi.com und *.chantez.de.


3., Daten und Seite vorbereiten

Dieser Abschnitt wird ein bisschen länger, aber lass dich nicht abschrecken, wir schaffen das! ;)


3.0

Wenn du einen gehosteten Server hast, lohnt es sich trotzdem, dir einen 2.1-Server zu erstellen, damit du lokale Dateien für das php-Hochladeprogramm verwenden kannst und sie nicht erst auf den Webserver hochladen musst!


3.1

Entpacke deine von Google Takeout heruntergeladenen Daten in ein Unterverzeichnis deiner Wahl. Wenn die Daten einmal in die Datenbank hochgeladen sind, kannst du die .html, .css, .js und .php, die noch kommen werden, aber beliebig woanders hin verschieben (als Gruppe) und es wird weiter funktionieren. Dafür ist die Datenbank gut! :D


3.2

Lege dir nun die benötigten Tabellen in /phpmyadmin, dem Datenbank-Kontrollier-Tool an. In phpmyadmin musst du dein Passwort und so eingeben: wo du es findest, hängt vom Server ab, aber mit ein bisschen Internetrecherche schaffst du das schon! :D.


Wir brauchen (3 Tabellen insgesamt):

Eine Tabelle "Images" mit den folgenden Spalten:

1. Name: UUID, Typ: bitint, Extra: AUTO_INCREMENT, Index: Primary

2. Name: Creator, Typ: bitint

3. Name: Flags, Typ: tinyint

4. Name: Data, Typ: blob

5. Name: Data2, Typ: mediumblob

6. Name: Description, Typ: text, Collation (Zeichensatz): utf8mb4_general_ci (UTF-8 mit Smileys und Groß-/Kleinschreibung ist für die Suche egal)

7. Name: Created, Typ: datetime, Default: CURRENT_TIMESTAMP

8. Name: LastSeen, Typ: datetime, Attributes/Extra: on update CURRENT_TIMESTAMP, Default: CURRENT_TIMESTAMP


Eine Tabelle "Players" mit den folgenden Spalten:

1. Name: UUID, Typ: bigint, Extra: AUTO_INCREMENT, Index: Primary

2. Name: Name, Typ: tinytext, Collation: ascii_general_ci (keine Sonderzeichen)

3. Name: Flags, Typ: int, Default: 0

4. Name: Info, Typ: text, Collation: utf8mb4_general_ci

5. Name: Icon, Typ: bigint


Eine Tabelle "Threads" mit den folgenden Spalten:

1. Name: UUID, Typ: bigint, Extra: AUTO_INCREMENT, Index: Primary

2. Name: ID, Typ: Int

3. Name: Creator, Typ: bigint

4. Name: Content, Typ: text, Collation: utf8mb4_general_ci

5. Name: Images, Typ: tinytext, Collation: ascii_general_ci

6. Name: Party, Typ: bigint

7. Name: Flags, Typ: smallint, Default: 0

8. Name: Created, Typ: datetime, Default: CURRENT_TIMESTAMP

9. Name: Updated, Typ: datetime, Attributes/Extra: on update CURRENT_TIMESTAMP, Default: CURRENT_TIMESTAMP


3.3

Lade dir die Dateien der Website selbst hier herunter!

Bitte schicke mir außerdem deine Emailadresse an z.B. meine Emailadresse siehe Impressum (footer ganz unten), damit ich dich über Updates benachrichtigen kann und du dir die neueste Version dann runterladen kannst, z.B. kann man im Moment wenn mehrere Bilder in einem Post waren, bisher nur das erste sehen.


3.4

Öffne die index.php mit einem Texteditor deiner Wahl und trage bei den ersten Teilen deine Datenbank-IP, den Nutzernamen und das Passwort ein!

Wenn dein Webserver php kann, wird die Daten niemand sehen können, da sie nur im Programm stehen, dem Nutzer aber niemals gezeigt werden. Ganz im Gegensatz zu JavaScript auf der Nutzerseite.


4., Hochladen der Posts


Suche nach "#2" in der Datei. Trage dort wo /home/antonio/ usw steht, den Ordner mit den Takeout-Dateien, den Unterordner deiner Wahl. Stelle sicher, dass er auf den Unterordner darin namens "Stream in G+/Beiträge" zeigt. Natürlich kannst du die Ordner auch umbenennen, wenn du möchtest, es müssen aber die gleichen wie in der .php-Datei sein.

Gebe für Start 0 und für Ende 1 ein, falls das noch nicht so ist.

Rufe nun im Browser die php-Datei mit Argument ?i auf, also z.B. https://deineWebsite.de/gplus/index.php?i

Gucke in der Datenbank nach, ob dein Profil wirklich UUID 1 hat; wenn nicht, ändere das. Hat sie jemand anderes, dann lösche diesen anderen erstmal


Erhöhe nun s auf 1 und e auf 50 (im folgenden dann immer weiter, s = 50, e = 100, s = 100, e = 150, usw usw :)). Die Seite wird ein bisschen laden und die ganzen Bilder von Google+ herunterladen.

Manche Posts (2-7%) sind leider leicht anders: du wirst eine Fehlermeldung auf der Seite https://deineWebsite.de/gplus/index.php?i sehen: für diese Posts musst du, wenn sie dir wichtig sind, selber auf Google zu der angezeigten URL, die nicht erfolgreich heruntergeladen werden konnte, und lädst die Bilder von Hand herunter. Dann trägst du von dem betroffenem Post (wird dir angezeigt), den resourceName aus der .json-Datei in dem Bereich in der php, wo isset($_GET('x')) steht, ein und außerdem das, wo du das extra heruntergeladene Bild abgelegt hast. Nun rufst du die Seite mit ?x und ohne ?i in einem neuen Tab (falls mehrere Fehler aufgetreten sind) auf und das Bild wird in die Datenbank hochgeladen :).


Diese fehlenden Bilder kann man auch anders finden, das ist jedoch nicht so einfach und braucht ein bisschen MySQL

Dass alle Posts und Kommentare und so eingetragen wurden, erkennst du daran, dass die Seite mit dem ?i nicht mehr lädt und schnell fertig ist, auch nichts mehr anzeigt.


Sind alle Posts hochgeladen, kannst du den Teil mit dem ?x und ?i dort entfernen, damit niemand das missbraucht.

Möchtest du, dass manche Posts nicht sichtbar sind, kannst du sie direkt aus der Datenbank löschen oder ihre Party auf -1 setzen.


Die Seite ohne zusätzliche Argumente kann man ohne Probleme jederzeit aufrufen; es macht nichts kaputt.


5., Zusätzliches Zeugs


Wenn du das Icon ändern möchtest, suche nach #3 in der php-Datei und ersetze dort, sowie in der template.html die fav-pngs durch deine eigenen.

Ist irgendwas schiefgelaufen, dann schreib mir ruhig :).

Das Bild des Banners usw. kannst du natürlich zu deinen eigenen umändern, aber vergiss nicht, dass irgendwo auf der Seite stehen sollte, dass ich auch mitgewirkt habe ;).