Skip to content

Instantly share code, notes, and snippets.

@Tendrid
Created December 15, 2015 22:39
Show Gist options
  • Save Tendrid/5e886ca96222b53b3dd1 to your computer and use it in GitHub Desktop.
Save Tendrid/5e886ca96222b53b3dd1 to your computer and use it in GitHub Desktop.
simple Michigan Drivers License Generator in python.
#to use:
#print gen('john', 'smith', 'foo', 3, 8)
# requires fuzzy (https://pypi.python.org/pypi/Fuzzy)
# pip install fuzzy
import fuzzy
m_map = {'a':'027','aa':'028','ab':'029','ac':'030','ad':'031','ae':'032','af':'033','ag':'034','ah':'035','ai':'036','aj':'037','ak':'038','al':'039','ala':'040','alb':'041','alc':'042','ald':'043','ale':'044','alf':'045','alg':'046','alh':'047','ali':'048','alj':'049','alk':'050','all':'051','alm':'052','aln':'053','alo':'054','alp':'055','alq':'056','alr':'057','als':'058','alt':'059','alu':'060','alv':'061','alw':'062','alx':'063','aly':'064','alz':'065','am':'066','an':'067','ao':'068','ap':'069','aq':'070','ar':'071','as':'072','at':'073','au':'074','av':'075','aw':'076','ax':'077','ay':'078','az':'079','b':'080','ba':'081','bb':'082','bc':'083','bd':'084','be':'085','bf':'086','bg':'087','bh':'088','bi':'089','bj':'090','bk':'091','bl':'092','bm':'093','bn':'094','bo':'095','bp':'096','bq':'097','br':'098','bs':'099','bt':'100','bu':'101','bv':'102','bw':'103','bx':'104','by':'105','bz':'106','c':'107','ca':'108','cb':'109','cc':'110','cd':'111','ce':'112','cf':'113','cg':'114','ch':'115','ci':'116','cj':'117','ck':'118','cl':'119','cm':'120','cn':'121','co':'122','cp':'123','cq':'124','cr':'125','cs':'126','ct':'127','cu':'128','cv':'129','cw':'130','cx':'131','cy':'132','cz':'133','d':'134','da':'135','db':'136','dc':'137','dd':'138','de':'139','df':'140','dg':'141','dh':'142','di':'143','dj':'144','dk':'145','dl':'146','dm':'147','dn':'148','do':'149','dp':'150','dq':'151','dr':'152','ds':'153','dt':'154','du':'155','dv':'156','dw':'157','dx':'158','dy':'159','dz':'160','e':'161','ea':'162','eb':'163','ec':'164','ed':'165','eda':'166','edb':'167','edc':'168','edd':'169','ede':'170','edf':'171','edg':'172','edh':'173','edi':'174','edj':'175','edk':'176','edl':'177','edm':'178','edn':'179','edo':'180','edp':'181','edq':'182','edr':'183','eds':'184','edt':'185','edu':'186','edv':'187','edw':'188','edward':'189','edx':'190','edy':'191','edz':'192','ee':'193','ef':'194','eg':'195','eh':'196','ei':'197','ej':'198','ek':'199','el':'200','ela':'201','elb':'202','elc':'203','eld':'204','ele':'205','elf':'206','elg':'207','elh':'208','eli':'209','elizabeth':'210','elj':'211','elk':'212','ell':'213','ellen':'214','elm':'215','eln':'216','elo':'217','elp':'218','elq':'219','elr':'220','els':'221','elt':'222','elu':'223','elv':'224','elw':'225','elx':'226','ely':'227','elz':'228','em':'229','en':'230','eo':'231','ep':'232','eq':'233','er':'234','es':'235','et':'236','eu':'237','ev':'238','ew':'239','ex':'240','ey':'241','ez':'242','f':'243','fa':'244','fb':'245','fc':'246','fd':'247','fe':'248','ff':'249','fg':'250','fh':'251','fi':'252','fj':'253','fk':'254','fl':'255','fm':'256','fn':'257','fo':'258','fp':'259','fq':'260','fr':'261','fs':'262','ft':'263','fu':'264','fv':'265','fw':'266','fx':'267','fy':'268','fz':'269','g':'270','ga':'271','gb':'272','gc':'273','gd':'274','ge':'275','gf':'276','gg':'277','gh':'278','gi':'279','gj':'280','gk':'281','gl':'282','gm':'283','gn':'284','go':'285','gp':'286','gq':'287','gr':'288','gs':'289','gt':'290','gu':'291','gv':'292','gw':'293','gx':'294','gy':'295','gz':'296','h':'297','ha':'298','hb':'299','hc':'300','hd':'301','he':'302','henry':'303','hf':'304','hg':'305','hh':'306','hi':'307','hj':'308','hk':'309','hl':'310','hm':'311','hn':'312','ho':'313','hp':'314','hq':'315','hr':'316','hs':'317','ht':'318','hu':'319','hv':'320','hw':'321','hx':'322','hy':'323','hz':'324','i':'325','ia':'326','ib':'327','ic':'328','id':'329','ie':'330','if':'331','ig':'332','ih':'333','ii':'334','ij':'335','ik':'336','il':'337','im':'338','in':'339','io':'340','ip':'341','iq':'342','ir':'343','is':'344','it':'345','iu':'346','iv':'347','iw':'348','ix':'349','iy':'350','iz':'351','j':'352','ja':'353','jaa':'354','jab':'355','jac':'356','jad':'357','jae':'358','jaf':'359','jag':'360','jah':'361','jai':'362','jaj':'363','jak':'364','jal':'365','jam':'366','james':'367','jan':'368','jao':'369','jap':'370','jaq':'371','jar':'372','jas':'373','jat':'374','jau':'375','jav':'376','jaw':'377','jax':'378','jay':'379','jaz':'380','jb':'381','jc':'382','jd':'383','je':'384','jea':'385','jeb':'386','jec':'387','jed':'388','jee':'389','jef':'390','jeg':'391','jeh':'392','jei':'393','jej':'394','jek':'395','jel':'396','jem':'397','jen':'398','jeo':'399','jep':'400','jeq':'401','jer':'402','jes':'403','jet':'404','jeu':'405','jev':'406','jew':'407','jex':'408','jey':'409','jez':'410','jf':'411','jg':'412','jh':'413','ji':'414','jj':'415','jk':'416','jl':'417','jm':'418','jn':'419','jo':'420','joa':'421','job':'422','joc':'423','jod':'424','joe':'425','jof':'426','jog':'427','joh':'428','john':'429','joi':'430','joj':'431','jok':'432','jol':'433','jom':'434','jon':'435','joo':'436','jop':'437','joq':'438','jor':'439','jos':'440','joseph':'441','jot':'442','jou':'443','jov':'444','jow':'445','jox':'446','joy':'447','joz':'448','jp':'449','jq':'450','jr':'451','js':'452','jt':'453','ju':'454','jv':'455','jw':'456','jx':'457','jy':'458','jz':'459','k':'460','ka':'461','kb':'462','kc':'463','kd':'464','ke':'465','kf':'466','kg':'467','kh':'468','ki':'469','kj':'470','kk':'471','kl':'472','km':'473','kn':'474','ko':'475','kp':'476','kq':'477','kr':'478','ks':'479','kt':'480','ku':'481','kv':'482','kw':'483','kx':'484','ky':'485','kz':'486','l':'487','la':'488','lb':'489','lc':'490','ld':'491','le':'492','lea':'493','leb':'494','lec':'495','led':'496','lee':'497','lef':'498','leg':'499','leh':'500','lei':'501','lej':'502','lek':'503','lel':'504','lem':'505','len':'506','leo':'507','lep':'508','leq':'509','ler':'510','les':'511','let':'512','leu':'513','lev':'514','lew':'515','lex':'516','ley':'517','lez':'518','lf':'519','lg':'520','lh':'521','li':'522','lj':'523','lk':'524','ll':'525','lm':'526','ln':'527','lo':'528','loa':'529','lob':'530','loc':'531','lod':'532','loe':'533','lof':'534','log':'535','loh':'536','loi':'537','loj':'538','lok':'539','lol':'540','lom':'541','lon':'542','loo':'543','lop':'544','loq':'545','lor':'546','los':'547','lot':'548','lou':'549','lov':'550','low':'551','lox':'552','loy':'553','loz':'554','lp':'555','lq':'556','lr':'557','ls':'558','lt':'559','lu':'560','lv':'561','lw':'562','lx':'563','ly':'564','lz':'565','m':'566','ma':'567','maa':'568','mab':'569','mac':'570','mad':'571','mae':'572','maf':'573','mag':'574','mah':'575','mai':'576','maj':'577','mak':'578','mal':'579','mam':'580','man':'581','mao':'582','map':'583','maq':'584','mar':'585','margaret':'586','mary':'587','mas':'588','mat':'589','mau':'590','mav':'591','maw':'592','max':'593','may':'594','maz':'595','mb':'596','mc':'597','md':'598','me':'599','mf':'600','mg':'601','mh':'602','mi':'603','mj':'604','mk':'605','ml':'606','mm':'607','mn':'608','mo':'609','mp':'610','mq':'611','mr':'612','ms':'613','mt':'614','mu':'615','mv':'616','mw':'617','mx':'618','my':'619','mz':'620','n':'621','na':'622','nb':'623','nc':'624','nd':'625','ne':'626','nf':'627','ng':'628','nh':'629','ni':'630','nj':'631','nk':'632','nl':'633','nm':'634','nn':'635','no':'636','np':'637','nq':'638','nr':'639','ns':'640','nt':'641','nu':'642','nv':'643','nw':'644','nx':'645','ny':'646','nz':'647','o':'648','oa':'649','ob':'650','oc':'651','od':'652','oe':'653','of':'654','og':'655','oh':'656','oi':'657','oj':'658','ok':'659','ol':'660','om':'661','on':'662','oo':'663','op':'664','oq':'665','or':'666','os':'667','ot':'668','ou':'669','ov':'670','ow':'671','ox':'672','oy':'673','oz':'674','p':'675','pa':'676','pb':'677','pc':'678','pd':'679','pe':'680','pf':'681','pg':'682','ph':'683','pi':'684','pj':'685','pk':'686','pl':'687','pm':'688','pn':'689','po':'690','pp':'691','pq':'692','pr':'693','ps':'694','pt':'695','pu':'696','pv':'697','pw':'698','px':'699','py':'700','pz':'701','q':'702','qa':'703','qb':'704','qc':'705','qd':'706','qe':'707','qf':'708','qg':'709','qh':'710','qi':'711','qj':'712','qk':'713','ql':'714','qm':'715','qn':'716','qo':'717','qp':'718','qq':'719','qr':'720','qs':'721','qt':'722','qu':'723','qv':'724','qw':'725','qx':'726','qy':'727','qz':'728','r':'729','ra':'730','rb':'731','rc':'732','rd':'733','re':'734','rf':'735','rg':'736','rh':'737','ri':'738','rj':'739','rk':'740','rl':'741','rm':'742','rn':'743','ro':'744','robert':'745','rp':'746','rq':'747','rr':'748','rs':'749','rt':'750','ru':'751','rv':'752','rw':'753','rx':'754','ry':'755','rz':'756','s':'757','sa':'758','sb':'759','sc':'760','sd':'761','se':'762','sf':'763','sg':'764','sh':'765','si':'766','sj':'767','sk':'768','sl':'769','sm':'770','sn':'771','so':'772','sp':'773','sq':'774','sr':'775','ss':'776','st':'777','su':'778','sv':'779','sw':'780','sx':'781','sy':'782','sz':'783','t':'784','ta':'785','tb':'786','tc':'787','td':'788','te':'789','tf':'790','tg':'791','th':'792','ti':'793','tj':'794','tk':'795','tl':'796','tm':'797','tn':'798','to':'799','tp':'800','tq':'801','tr':'802','ts':'803','tt':'804','tu':'805','tv':'806','tw':'807','tx':'808','ty':'809','tz':'810','u':'811','ua':'812','ub':'813','uc':'814','ud':'815','ue':'816','uf':'817','ug':'818','uh':'819','ui':'820','uj':'821','uk':'822','ul':'823','um':'824','un':'825','uo':'826','up':'827','uq':'828','ur':'829','us':'830','ut':'831','uu':'832','uv':'833','uw':'834','ux':'835','uy':'836','uz':'837','v':'838','va':'839','vb':'840','vc':'841','vd':'842','ve':'843','vf':'844','vg':'845','vh':'846','vi':'847','vj':'848','vk':'849','vl':'850','vm':'851','vn':'852','vo':'853','vp':'854','vq':'855','vr':'856','vs':'857','vt':'858','vu':'859','vv':'860','vw':'861','vx':'862','vy':'863','vz':'864','w':'865','wa':'866','wb':'867','wc':'868','wd':'869','we':'870','wf':'871','wg':'872','wh':'873','wi':'874','wia':'875','wib':'876','wic':'877','wid':'878','wie':'879','wif':'880','wig':'881','wih':'882','wii':'883','wij':'884','wik':'885','wil':'886','william':'887','wim':'888','win':'889','wio':'890','wip':'891','wiq':'892','wir':'893','wis':'894','wit':'895','wiu':'896','wiv':'897','wiw':'898','wix':'899','wiy':'900','wiz':'901','wj':'902','wk':'903','wl':'904','wm':'905','wn':'906','wo':'907','wp':'908','wq':'909','wr':'910','ws':'911','wt':'912','wu':'913','wv':'914','ww':'915','wx':'916','wy':'917','wz':'918','x':'919','xa':'920','xb':'921','xc':'922','xd':'923','xe':'924','xf':'925','xg':'926','xh':'927','xi':'928','xj':'929','xk':'930','xl':'931','xm':'932','xn':'933','xo':'934','xp':'935','xq':'936','xr':'937','xs':'938','xt':'939','xu':'940','xv':'941','xw':'942','xx':'943','xy':'944','xz':'945','y':'946','ya':'947','yb':'948','yc':'949','yd':'950','ye':'951','yf':'952','yg':'953','yh':'954','yi':'955','yj':'956','yk':'957','yl':'958','ym':'959','yn':'960','yo':'961','yp':'962','yq':'963','yr':'964','ys':'965','yt':'966','yu':'967','yv':'968','yw':'969','yx':'970','yy':'971','yz':'972','z':'973','za':'974','zb':'975','zc':'976','zd':'977','ze':'978','zf':'979','zg':'980','zh':'981','zi':'982','zj':'983','zk':'984','zl':'985','zm':'986','zn':'987','zo':'988','zp':'989','zq':'990','zr':'991','zs':'992','zt':'993','zu':'994','zv':'995','zw':'996','zx':'997','zy':'998','zz':'999'}
b_map = [
['002',',007','010','012','017','020','022','025','027','030','032','035','037','040','042','045','047','050','052','055','057','060','062','065','067','070','072','075','077','080','082'],
['086','088','091','093','096','098','101','103','106','108','111','113','116','118','121','123','126','128','131','133','136','138','141','143','146','148','151','153','156'],
['159','162','164','167','169','172','174','177','182','184','187','189','192','194','197','199','202','204','207','227','229','232','234','237','239','242','244','247','249','252','254'],
['258','260','263','265','268','270','273','275','278','280','283','285','288','290','293','295','298','300','303','305','308','310','313','315','318','320','323','325','328','330'],
['334','336','339','341','344','346','349','351','354','356','359','361','364','366','369','371','374','376','379','381','384','386','389','391','394','396','399','401','404','406','409'],
['412','415','417','420','422','425','427','430','432','435','437','440','442','445','447','450','452','467','470','472','475','477','480','482','497','500','502','505','507','517'],
['521','523','526','528','534','537','539','542','544','547','549','552','554','557','559','562','564','567','569','572','574','577','579','582','584','587','589','592','594','597','599'],
['603','605','608','610','613','615','618','620','623','625','628','630','633','635','638','640','643','645','648','650','653','655','658','660','663','665','668','670','673','675','678'],
['681','684','686','689','691','694','696','699','701','704','706','709','711','714','716','719','721','724','726','729','731','734','736','739','741','744','746','749','751','754'],
['757','760','762','765','767','770','772','775','777','780','782','785','787','790','792','797','800','802','807','810','812','815','817','820','822','825','827','830','832','835','837'],
['841','843','846','848','851','853','856','858','861','863','866','868','871','873','876','878','881','883','886','888','891','893','896','898','901','903','906','908','911','913'],
['917','919','922','924','927','929','932','934','937','939','942','944','947','949','952','954','957','959','962','964','967','969','972','974','977','983','985','990','993','995','998']
]
def gen(first_name, last_name, middle_name, month, day):
m_keys = m_map.keys()
#first letter, and first set of numbers
part = fuzzy.Soundex(len(last_name))(last_name)[0:4]
#second set of numbers
fn_key = first_name.lower()
while fn_key not in m_keys:
fn_key = fn_key[:-1]
#third set of numbers
#needs to be tested with someone that doesnt have a middle name
if middle_name:
mn_key = middle_name.lower()
while mn_key not in m_keys:
mn_key = mn_key[:-1]
#fourth set of numbers
last_part = b_map[month-1][day-1]
#put it all together, and what do you get?!
return "{} {} {} {} {}".format(part[0], part[1:4], m_map[fn_key], m_map[mn_key], last_part)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment