Flugstatistik nach CSV

ANZEIGE

mbx

Erfahrenes Mitglied
03.03.2010
405
0
BRU
ANZEIGE
Falls jemand seine Flugstatistik.de Daten in Excel oder wer weiß wo importieren will, mag dieses Script hilfreich sein.

Ihr braucht noch pdftotext (Teil von Xpdf: Home), getestet unter Linux, sollte aber mit beliebigen Perl-Versionen funktionieren. Womöglich tun's auch andere Tools, die PDF-Dateien in Text konvertieren.

Ich selber nutze flugstatistik.de nicht.

Code:
#!/usr/bin/perl
#
# flugstatistik2csv.pl
#
# Konvertiert aus flugstatistik.de exportierte PDF Daten
# (siehe "Druckansicht") in CSV.
#
# Der Autor übernimmt keine Garantie für Funktionsfähigkeit,
# ebensowenig dafür, dass die Benutzung des Tools mit den
# Nutzungsbestimmungen von flugstatistik.de kompatibel ist.
#
# Lizenz: GPL <http://www.gnu.org/licenses/gpl.html>
#
# Braucht pdftotext, getestet mit Version 3.00
#
# Benutzung:
#
# $ pdftotext -raw -nopgbrk HeruntergeladeneDatei.pdf flugdaten.raw
# $ flugstatistik2csv.pl < flugdaten.raw > flugdaten.csv
#

print "id;date;from;to;airline;cabin;reason;seat\n";

$id = 0;
while (<STDIN>) {
        chomp;
        if (/^([0-9]+) (([0-9]{2}\.)([0-9]{2}\.))?([0-9]{4}) ?([A-Z]{3})?/) { # HEADER - nr. datum
                if ($id) {
                        print "$id;$datum;$from;$to;$airline;$class;$reason;$seat\n";
                }
                $id = "$1";
                if ($2) {
                        $datum = "$5-".substr($4,0,2)."-".substr($3,0,2);
                } else {
                        $datum = "$5-01-01";
                }
                $from = $6;
                $to = "";
                $airline = "";
                $reason = "";
                $class = "";
                $seat = "";
                $isAirline = 0;
        }
        elsif (/(gesch.ftlich|privat|Economy|Business|First|Gang|Fenster)/) {
                $isAirline = 0;
                if (/gesch.ftlich/) { $reason = "B"; }
                if (/privat/) { $reason = "P"; }
                if (/Economy/) { $class = "Y"; }
                if (/Business/) { $class = "C"; }
                if (/First/) { $class = "F"; }
                if (/Gang/) { $seat = "A"; }
                if (/Fenster/) { $seat = "W"; }
        }
        elsif ($isAirline) {
                $airline .= $_ . " ";
        }
        elsif (/^([A-Z]{3})/) {
                if ($from) {
                        $to = $1;
                } else {
                        $from = $1;
                }
        }
        elsif (/^[0-9]+\:[0-9]+ h/) {
                $isAirline = 1;
        }

}

Aufgrund der Daten im PDF wird die Airline als Klartext, nicht als IATA-Code ausgegeben. Falls Ihr eine Datenbank mit Airlines und IATA-Codes habt, könnt Ihr das ggf. mit etwas dem folgenden Skript ähnlichen nachbearbeiten:

Code:
#!/usr/bin/perl

use strict;
use DBI();

# Connect to the database.
my $dbh = DBI->connect("DBI:mysql:database=flights;host=localhost",
	"***", "***", {'RaiseError' => 1});

open(IN, "***.csv");

while (<IN>) {
	chomp;
	my ($oldid,$date,$dep,$arr,$airline,$class,$reason,$seat) = split(/\;/);
	$airline =~ s/\s+$//;

	my $airlinecode = 0;
	my $sth = $dbh->prepare("SELECT code,name,MATCH(name) AGAINST ('$airline') AS count
		FROM airline HAVING count > 0 ORDER BY count DESC LIMIT 1");
	$sth->execute();
	while (my $ref = $sth->fetchrow_hashref()) {
		$airlinecode = $ref->{'code'};
	}
	$sth->finish();
	unless ($airlinecode) {
		print "Airline \"$airline\" not found - please enter code: ";
		chomp($airlinecode = <STDIN>);
	}
	$dbh->do("INSERT INTO flight (uid,date,dep,arr,airline,cabin,reason) VALUES
		( '2', '$date', '$dep', '$arr', '$airlinecode', '$class', '$reason' )");

}

$dbh->disconnect();
 
  • Like
Reaktionen: grizu

goaround

Erfahrenes Mitglied
12.08.2009
353
0
DUS
Geht auch wenn man sich bei OpenFlights.com registriert und dann von dort aus die Flüge von Flugstatistik importiert. Danach kann man es als CSV herunterladen
 
  • Like
Reaktionen: HelmutNassauer

DigitalOlli

Erfahrenes Mitglied
05.03.2010
1.243
50
Gibt es hier schon etwas neues ? OpenFlights.com scheint es nicht mehr zu geben .

ich möchte gerne meine Flüge als CSV Datei exportieren
 

DigitalOlli

Erfahrenes Mitglied
05.03.2010
1.243
50
Ja ich möchte die daten von Flugstatistik Exportieren um sie dann bei Flighdiary zu importieren . Alles einzeln eingeben ist schon sehr aufwendig
 

DigitalOlli

Erfahrenes Mitglied
05.03.2010
1.243
50
Gibt es für flugstatistik aber leider keine Import Funktion . oder hat jemand eine Idee ?
 

zolagola

Erfahrenes Mitglied
02.01.2014
2.027
196
FRA
Hab keinen Account da, aber gibt es die Impoirt-Funktion von FlightMemory (englische Seite von Flugstatistik) nicht mehr? Wird zumindest in der FAQ noch referenziert...
 

jb1991

Erfahrenes Mitglied
20.10.2010
425
69
DRS
Hab keinen Account da, aber gibt es die Impoirt-Funktion von FlightMemory (englische Seite von Flugstatistik) nicht mehr? Wird zumindest in der FAQ noch referenziert...

Gibt es noch und funktioniert mit Ausnahme von Premium Economy sehr zuverlässig. Allerdings hat zumindest vor 2, 3 Jahren die Übertragung zu flightdiary mittels .csv nur mittelmäßig funktioniert.
 

rausmade

Erfahrenes Mitglied
03.06.2012
1.090
205
Hallo zusammen,
ich würde gerne meine Flüge von Flugstatistik.de exportieren, z. B. nach Openflights. Hier scheitert es aber an Folgendem:

FlugStatistik (.html) — FlugStatistik hat keine Exportfunktion, OpenFlights kann jedoch die FlugStatistik Internetseiten auslesen. Loggen Sie sich bei FlugStatistik ein, rufen Sie die Flugdaten-Seite auf und wählen Sie "Webseite speichern" o.ä. in Ihrem Browser. Die erstellte HTML Seite laden Sie hoch, einzeln für jede Seite Ihrer Flugdaten.

Warnung: Bitte stellen Sie sicher, dass die Sprache Englisch ausgewählt ist bevor Sie die Seiten speichern.

Anmerkung: Es gibt derzeit keine Dublettenprüfung. Ein doppelter Import der gleichen FlugStatistik-Datei führt zu doppelten Flügen in OpenFlights.
Ich finde keine Option bei Flugstatistik.de , wo ich die Sprache ändern kann. Mit deutscher Sprache erhalte ich nach dem Import den Fehler

[h=4]Ergebnisse[/h]Tmpfile phpONWjHy
Sorry, the file /var/www/openflights/import/phpONWjHy does not appear contain FlightMemory FlightData.

Jemand einen Vorschlag, wie ich meine Daten exportieren kann?
 

datschi

Erfahrenes Mitglied
23.06.2010
768
1
DUB
Auf flightmemory.com gehen, ist die gleiche Seite auf Englisch (Auswahl der Sprache auf der Login Seite).
 
  • Like
Reaktionen: rausmade

rausmade

Erfahrenes Mitglied
03.06.2012
1.090
205
Danke für den Tipp.

Openflights nach Flightdiary klappt danach auch ganz gut, außer dass die Ankunftszeiten nicht übernommen werden.