Vielen Dank für die Antwort,
die Anzeige, dass 85% der Files nicht verfügbar sind, ist vielleicht nicht schön, aber es ist doch immer besser die Tatsachen vor sich zu sehen, als im Dunkeln zu tappen.
Ich bin voll und ganz deiner Meinung, dass hier schon seit so vielen Jahren großartige Arbeit geleistet wird!
Die Überprüfung von den Links kann selbstverständlich nur vom System durchgeführt werden.
Das Ganze sollte relativ einfach sein. Wenn wir beispielsweise davon ausgehen, dass die Links in irgendeiner SQL-Datenbank stehen, wie ich aus einigen Post herauslesen konnte.
Je nachdem, um welchen Hoster es geht muss man sich eindeutige Erkennungsmerkmale suchen, die zeigen, dass eine Datei zum Download bereit steht (in einer html-Datei von Share-Online zum Beispiel, wäe dies beispielsweise der String "Download-Paket". Bei Seiten, die ausgeliefert werden, wenn die Datei nicht verfügbar ist kommt dieses Wort nicht vor.
Um das Schema abzubilden habe ich eine ganz einfache MySQL-Tabelle aufgesetzt:
- mysql> select * from links.so;
- +
- | link | status | pk |
- +
- | http://www.share-online.biz/dl/03ZJ6K2NK3LX | 0 | 1 |
- | http://www.share-online.biz/dl/H9KF6K2NZ3Y | 0 | 2 |
- | http://www.share-online.biz/dl/03ZJ6K2NK3L | 0 | 3 |
- +
- 3 rows in set (0.00 sec)
In folgender Tabelle sind 2 verfügbare Einträge enthalten und ein dritter - nicht verfügbarer Eintrag in der Spalte Link
dann habe ich noch eine Spalte Status angefügt, was warscheinlich in den Tabellen von Serienjunkies ebenfalls getan werden sollte, um den Status des aktuellen Links zu erfassen
und meine letzte Spalte pk stellt den Primärschlüssel, also die eindeutige Identifizierung des Datensatzes dar (hier weiß ich nicht, wie das bei SJ gehandhabt wird, da müsste man gegebenenfalls bei dem nachfolgenden Script noch ein wenig anpassen.
Anschließend habe ich in ca. 2-3h ein kleines Script für die Bash geschrieben und getestet, welches den Status der Links überprüft und diesen in die 2. Spalte der MySQL-Tabelle einfügt.
- i=1
- max=$(mysql -u root -se "SELECT MAX(pk) FROM links.so;")
- while [ $i -le $max ]
- do
- tempfilename=/tmp/$(date | md5sum | cut -c 1-32).dat
- wget -O $tempfilename $(mysql -u root -se "SELECT link FROM links.so WHERE pk = $i;") >/dev/null 2>&1
- if cat $tempfilename | grep Download-Paket >/dev/null 2>&1 ; then
- $(mysql -u root -se "UPDATE links.so SET status=1 WHERE pk = $i;") >/dev/null 2>&1
- else
- $(mysql -u root -se "UPDATE links.so SET status=0 WHERE pk = $i;") >/dev/null 2>&1
- fi
- rm -f $tempfilename >/dev/null 2>&1
- i=$[ $i + 1 ]
- done
Alles anzeigen
Hierbei wird:
1.) Eine Zählvariable definiert
2.) der Maximalwert für die Schleife bestimmt, aus dem größten vorhandenen Primärschlüssel der MySQL-Tabelle
3.) Hier wird der Wiederholbereich der Schleife definiert (in dem Falle von 1-3)
4.) Die Schleife wird gestartet
5.) Die Variable tempfilename wird mit dem Pfad für die temporär zu erstellende Datei gefüllt (abhängig vom aktuellen Datum)
6.) der Link jeweilige Link aus der MySQL-Tabelle an der Stelle der Zählvariable i wird heruntergeladen und als Datei abgespeichert
7.) die abgespeicherte Datei wird nach dem String "Download-Paket" abgesucht
8.) wenn dies der Fall war,
9.) wird in der MySQL-Tabelle der Statuswert das aktuellen Links (Zählvariable i) auf 1 (also verfügbar) gesetzt
10.) wenn dies nicht der Fall war,
11.) wird in der MySQL-Tabelle der Statuswert das aktuellen Links (Zählvariable i) auf 0 (also nicht verfügbar) gesetzt
12.) Die Bedingung wir abgeschlossen
13.) die heruntergeladene Datei wird gelöscht
14.) die Zählvariable wir hochgesetzt
15.) die Schleife beginnt von vorn und es wird erneut die Bedingung i <= 3 (in unserem speziellen Fall) geprüft und die Schleife gegebenenfalls mit der neuen Zählvariable i wiederholt
Dieses Script ändert prinzipiell die Verfügbarkeitswerte der Links in der MySQL-Tabelle.
So sieht nach der Durchführung die neue Tabelle aus
- mysql> select * from links.so;
- +
- | link | status | pk |
- +
- | http://www.share-online.biz/dl/03ZJ6K2NK3LX | 1 | 1 |
- | http://www.share-online.biz/dl/H9KF6K2NZ3Y | 1 | 2 |
- | http://www.share-online.biz/dl/03ZJ6K2NK3L | 0 | 3 |
- +
- 3 rows in set (0.00 sec)
Was zu tun wäre um alles umzusetzen:
* SQL-Tabellendefinition anpassen
* Grenzbereiche für die Schleifen bestimmen
* Das Script soweit anpassen, dass die SQL-Befehle mit der vorliegenden Datenbank übereinstimmen (und wirklich nur Share-Online-Links überprüft werden).
* Eventuell kann zusätzlich zum setzen des Status 0 noch eine Mail an den entsprechenden Uploader verschickt werden.
* Für andere Hoster müssen entsprechend angepasste Scripte erstellt werden.
* Einen Cronjob erstellen, der beispielsweise einmal täglich/wöchentlich alle Script durchführt.
* Anschließend kann man über eine ansprechende Anpassung der Serienjunkies-Website nachdenken, mit grünen (alle Links aus einem Paket verfügbar), geleben (einige Links aus einem Pakt verfügbar) und rot (all Links aus einem Paket offline)
Im Prinzip sollte das in einer Woche umsetzbar sein. Ich kann leider nicht abschätzen, wie ressourcenlastig dies für einen Server wäre, aber es würde auf jeden Fall mehr Klarheit bringen für die Up- und Downloader. Falls ihr Unterstützung für die Umsetzung meines oder eines vergleichbaren Vorschlags braucht (ein anderes Betriebssystem als Linux als Server einsetzt, etc.), stehe ich euch gern tatkräftig zur Seite.