02 Dec 12:42
require 'zip'
require 'csv'
SOURCE_DIR = "./zips" # katalog z zipami
TARGET_STATION = "CZERNICHÓW-PROM" # stacja do filtrowania
OUTPUT_FILE = "wynik.csv"
# przygotowanie pliku wynikowego
CSV.open(OUTPUT_FILE, "w") do |csv_out|
# nagłówka brak w źródłach → możesz dodać własny
# csv_out << ["id", "station", "river", "year", "month", "day", "value1", "value2", "value3", "code"]
Dir.glob(File.join(SOURCE_DIR, "*.zip")).each do |zipfile|
puts "Przetwarzam: #{zipfile}"
Zip::File.open(zipfile) do |zip|
zip.glob("*.csv").each do |entry|
puts " - CSV: #{entry.name}"
entry.get_input_stream.each_line do |line|
# parsowanie wiersza CSV
row = CSV.parse_line(line)
# skip pustych
next if row.nil? || row.empty?
# stacja jest w kolumnie 1 (licząc od 0)
if row[1] == TARGET_STATION
csv_out << row
end
end
end
end
end
end
puts "Zakończono! Wynik zapisano do #{OUTPUT_FILE}"