Last active
January 16, 2018 16:21
-
-
Save criess/fa1d29eba245972ea40f7ec058e04e3e to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
require 'digest' | |
require 'yaml' | |
require_relative 'randomer.rb' | |
count = ARGV.find do |arg| | |
arg.match(/count=/) | |
end.to_s.scan(/[0-9]+/)[0].to_i | |
mode = ARGV.find do |arg| | |
arg.match(/mode=/) | |
end.to_s.scan(/[a-z]+/)[1].to_s | |
if %w[address name].include?(mode.downcase) | |
case mode | |
when "address" | |
gkey = ARGV.find do |arg| | |
arg.match(/gkey=/) | |
end.to_s.scan(/[A-Za-z0-9-]+/)[1].to_s | |
generator = RandomAddress.set_api_key!(gkey) | |
when "name" | |
generator = RandomName | |
end | |
else | |
$stderr << "mode must be set (via mode=[address|name])" << "\n" | |
exit 1 | |
end | |
collection = [] | |
count.times do |time| | |
object = nil | |
while !object || ( | |
collection.find do |compare| | |
Digest::MD5.hexdigest(compare.to_s) == Digest::MD5.hexdigest(object.to_s) | |
end | |
) do | |
if object | |
$stderr << "DUPLICATE #{object.to_s}" << "\n" | |
end | |
object = begin | |
generator.new.attributes | |
rescue NoMethodError | |
nil | |
end | |
end | |
collection.push object | |
end | |
puts collection.to_yaml |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/usr/bin/env ruby | |
require 'yaml' | |
require 'digest' | |
require 'fileutils' | |
begin | |
dir = ARGV.find do |arg| | |
arg.match(/dir=/) | |
end.to_s.scan(/=.+/)[0][1..-1] | |
raise "non-existing directory `#{dir}'" unless Dir.exists?(dir) | |
rescue | |
$stderr << "Exit with error: #{$!.message} (from #{$!.backtrace[0]})" << "\n" | |
exit | |
end | |
yamls = Dir.glob(File.join dir, "*.yml") | |
hashed = {} | |
yamls.each do |file| | |
YAML.load_file(file).each do |node| | |
dig = Digest::SHA1.hexdigest node.to_yaml | |
$stderr << "DUPLICATE: #{node}" << "\n" if hashed[dig] | |
hashed[dig] = node unless hashed[dig] | |
end | |
end | |
$stderr << "OUTPUT #{hashed.size} entries" << "\n" | |
puts(hashed.values.sort do |x,y| | |
x["address_zip"].to_i <=> y["address_zip"].to_i | |
end.to_yaml) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
class RndBase | |
def attributes | |
instance_variables.inject({}) do |hash, i| | |
hash[i.to_s.gsub(/^@/,"")] = instance_variable_get(i) unless i.match(/^@_/) | |
hash | |
end | |
end | |
end | |
class RandomAddress < RndBase | |
@@api_key = "api_key_not_set" | |
class << self | |
def set_api_key!(key) | |
@@api_key = key | |
self | |
end | |
end | |
def initialize | |
extremes_lat = (47270834..55059166) | |
extremes_lng = (5866944..15043611) | |
german_address = nil | |
find_count = 0 | |
while !german_address | |
lng = rand(extremes_lng).to_s.gsub(/(.*)([0-9]{6})$/, "\\1.\\2") | |
lat = rand(extremes_lat).to_s.gsub(/(.*)([0-9]{6})$/, "\\1.\\2") | |
res = JSON.parse( | |
Net::HTTP.get( | |
URI.parse "https://maps.googleapis.com/maps/api/geocode/json?latlng=#{lat},#{lng}&result_type=street_address&key=#{@@api_key}" | |
) | |
) | |
german_address = res["results"].find do |entry| | |
entry["formatted_address"].match(/Germany$/) | |
end | |
find_count +=1 | |
end | |
@address_snumber = german_address["address_components"].find do |part| | |
part["types"].include?("street_number") | |
end["long_name"].to_s.downcase | |
@address_street = german_address["address_components"].find do |part| | |
part["types"].include?("route") | |
end["long_name"].to_s | |
@address_city = german_address["address_components"].find do |part| | |
part["types"].include?("locality") | |
end["long_name"].to_s | |
@address_zip = german_address["address_components"].find do |part| | |
part["types"].include?("postal_code") | |
end["long_name"].to_s | |
end | |
end | |
class RandomName < RndBase | |
MAIL_DOMAIN = "@testaddress.pfdev.de" | |
def initialize | |
@_first_name_female = %w[ | |
Lara | |
Michelle | |
Nina | |
Chiara | |
Jasmin | |
Vanessa | |
Leonie | |
Lea | |
Alena | |
Saskia | |
Laura | |
Celina | |
Phoebe | |
Katharina | |
Marie | |
Sophie | |
Svenja | |
Chantal | |
Sarah | |
Emily | |
Julia | |
Lisa | |
Melissa | |
Emma | |
Jacqueline | |
Aimee | |
Nele | |
Lena | |
Samira | |
Sonnhild | |
Tabea | |
Hannah | |
Moana | |
Jessica | |
Denise | |
Alessa | |
Freia | |
Lilly | |
Tamara | |
Annika | |
Nadine | |
Maren | |
Kim | |
Sabrina | |
Heidrun | |
Joelina | |
Ramona | |
Anna | |
Sonngard | |
Lorena | |
Giuliana | |
Jennifer | |
Louisa | |
Tanja | |
Nathalie | |
Naomi | |
Vivien | |
Alyssa | |
Romy | |
Doreen | |
Andrea | |
Luna | |
Luana | |
Hiltrud | |
Sophia | |
Samantha | |
Svea | |
Corinna | |
Janina | |
Kimberly | |
Luisa | |
Milena | |
Paula | |
Ronja | |
Verena | |
Amelie | |
Larissa | |
Maja | |
Maureen | |
Alicia | |
Emilie | |
Rebecca | |
Alina | |
Emilia | |
Celine | |
Jule | |
Maria | |
Carmen | |
Patricia | |
Yvonne | |
Stella | |
Cheyenne | |
Maya | |
Reinhild | |
Zoe | |
Johanna | |
Antonia | |
Jana | |
Mia | |
Dominique | |
Lana | |
Pia | |
Hilde | |
Paulina | |
Hildegard | |
Desiree | |
Noemi | |
Lotta | |
Katrin | |
Sonja | |
Sina | |
Sara | |
Lina | |
Lilli | |
Maike | |
Dana | |
Livia | |
Fabienne | |
Anastasia | |
Hanna | |
Miriam | |
Klara | |
Colleen | |
Benita | |
Aaliyah | |
Pauline | |
Coleen | |
Franziska | |
Daria | |
Victoria | |
Mareike | |
Malin | |
Josephine | |
Allegra | |
Carina | |
Angelina | |
Fee | |
Emely | |
Clara | |
Lynn | |
Annalena | |
Amy | |
Imogen | |
Alissa | |
Elisa | |
Luca | |
Alexandra | |
Kira | |
Julie | |
Aurora | |
Madita | |
Joana | |
Theresa | |
Thorgard | |
Linnea | |
Josie | |
Joelle | |
Charlotte | |
Emelie | |
Melina | |
Lavinia | |
Joyce | |
Linda | |
Natalie | |
Leona | |
Madleen | |
Christina | |
Janine | |
Chloe | |
Elena | |
Sigru | |
Selina | |
Giulia | |
Merle | |
Finja | |
Sanne | |
Henritte | |
Hedwi | |
Judith | |
Romina | |
Aileen | |
Marlne | |
Irmgard | |
Magdlena | |
Phila | |
Vivienn | |
Valerie | |
Jolina | |
Laurn | |
Sofia | |
Marina | |
Lucy | |
Flora | |
Carlotta | |
Tabith | |
Alish | |
].shuffle.first | |
@_first_name_male = %w[ | |
Jan | |
Luca | |
Leon | |
Manuel | |
Alexander | |
Nico | |
Daniel | |
Yannick | |
Justin | |
Rudolf | |
Pascal | |
Noah | |
Marcel | |
Kevin | |
Lucas | |
Joshua | |
Jonas | |
Lukas | |
Maurice | |
Flemming | |
Paul | |
Tobias | |
Eugen | |
Tom | |
Simon | |
Maximilian | |
Fabian | |
Dennis | |
Julian | |
Robin | |
Adrian | |
Marco | |
Michael | |
Marc | |
Tim | |
Reinhard | |
Soeren | |
Benjamin | |
Calvin | |
Raphael | |
Nicolas | |
Thomas | |
Cedric | |
Arne | |
Max | |
Heinrich | |
Leandro | |
Linus | |
Ole | |
Aaron | |
Lauro | |
Finn | |
Samuel | |
Felix | |
Sven | |
Niklas | |
Christian | |
Patrick | |
David | |
Dario | |
Jeremy | |
Frank | |
Ben | |
Mario | |
Oliver | |
Marius | |
Florian | |
Sascha | |
Laurin | |
Damian | |
Fabio | |
Timo | |
Keanu | |
Jannis | |
Markus | |
Joel | |
Richard | |
Lars | |
Kilian | |
Sebastian | |
Yannik | |
Moritz | |
Sean | |
Marten | |
Gianluca | |
Sandro | |
Elias | |
Andre | |
Stefan | |
Martin | |
Fynn | |
Philipp | |
Pierre | |
Alessio | |
Nicholas | |
Luis | |
Raimund | |
Lasse | |
Niko | |
Dominik | |
Liam | |
Noel | |
Johannes | |
Friedrich | |
Mika | |
Bastian | |
Meiko | |
Fabrizio | |
Marlon | |
Levi | |
Ruben | |
Malte | |
Flavio | |
Hermann | |
Jannik | |
Eric | |
Marcello | |
Hauke | |
Romeo | |
Erik | |
Torsten | |
Jerome | |
Rico | |
Jakob | |
Devin | |
Hannes | |
Nils | |
Ramon | |
Anton | |
Nick | |
Justus | |
Louis | |
Valentin | |
Rene | |
Bjarne | |
Lennart | |
Thorsten | |
Steve | |
Riccardo | |
Leo | |
Nicolai | |
Ralf | |
Alessandro | |
Rainer | |
Neo | |
Danny | |
Jaden | |
Jonathan | |
Claudio | |
Robert | |
Leander | |
Torben | |
Philip | |
Raoul | |
Kjell | |
Konstantin | |
Kai | |
Antonio | |
Mirko | |
Carlos | |
Gabriel | |
Roman | |
Jamie | |
Luke | |
Otto | |
Christopher | |
Peter | |
Dustin | |
Tristan | |
Joschua | |
Eckehard | |
Silas | |
Levin | |
Vincent | |
Raven | |
Leonard | |
Hendrik | |
Niclas | |
Luka | |
Paolo | |
Emil | |
Benedict | |
Youri | |
Jasper | |
Andrew | |
Oskar | |
Thorben | |
Matteo | |
Maxime | |
Helge | |
Michel | |
Tino | |
Miguel | |
Jens | |
Heiko | |
Etienne | |
Jacob | |
Roland | |
Alex | |
].shuffle.first | |
@_double_name = (1..100).to_a.shuffle.first > 85 | |
@name = %w[ | |
Albrecht | |
Arndt | |
Ackermann | |
Adam | |
Arnold | |
Becker | |
Bauer | |
Braun | |
Busch | |
Baumann | |
Cremer | |
Clemens | |
Christ | |
Conrad | |
Caro | |
Daniel | |
Dahmen | |
Dietrich | |
Dambach | |
Decker | |
Esser | |
Engels | |
Engel | |
Ernst | |
Eckert | |
Fischer | |
Fuchs | |
Frank | |
Franke | |
Friedrich | |
Guenther | |
Gross | |
Gerlach | |
Giesen | |
Grimm | |
Hoffmann | |
Hartmann | |
Hahn | |
Hofmann | |
Herrmann | |
Issel | |
Ippers | |
Isenberg | |
Ihle | |
Ingenhoven | |
Jansen | |
Jung | |
Jaeger | |
Janssen | |
Jacobs | |
Klein | |
Koch | |
Krause | |
Krueger | |
Kaiser | |
Lange | |
Lehmann | |
Lang | |
Ludwig | |
Lorenz | |
Mueller | |
Meyer | |
Meier | |
Moeller | |
Mertens | |
Neumann | |
Nowak | |
Neuhaus | |
Nagel | |
Nolte | |
Otto | |
Ott | |
Otten | |
Ostermeier | |
Ostermann | |
Peters | |
Pohl | |
Probst | |
Puetz | |
Pfeiffer | |
Quast | |
Quint | |
Quack | |
Quandt | |
Quadflieg | |
Richter | |
Roth | |
Reuter | |
Roemer | |
Riedel | |
Schmidt | |
Schmitz | |
Schneider | |
Schulz | |
Schaefer | |
Thiel | |
Thomas | |
Tillmann | |
Thelen | |
Thoma | |
Urban | |
Ulrich | |
Unger | |
Ullrich | |
Utz | |
Vogt | |
Vogel | |
Voigt | |
Vieten | |
Voelker | |
Weber | |
Wagner | |
Wolf | |
Werner | |
Weiss | |
Yilmaz | |
Yildiz | |
Yildirim | |
Yavuz | |
Yueksel | |
Zimmermann | |
Ziegler | |
Zander | |
Zimmer | |
Zeiler | |
].shuffle.inject("") do |str, entry| | |
if @_double_name | |
if str.match(/-/) | |
break str | |
else | |
if str.empty? | |
str = entry | |
else | |
str = str + "-" + entry | |
end | |
end | |
else | |
break entry | |
end | |
str | |
end | |
@gender = ['m','f'].shuffle.first | |
@first_name = @gender == 'f' ? @_first_name_female : @_first_name_male | |
@email = @first_name.gsub(/[^a-z]/i,"").downcase << | |
"." << | |
@name.gsub("-",".").gsub(/[^a-z\.]/i,"").downcase << | |
MAIL_DOMAIN | |
end | |
end |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment