From 2967553bc855a715b921cbebd96d5431df8ba7be Mon Sep 17 00:00:00 2001 From: Argiris Deligiannidis Date: Thu, 1 Feb 2024 22:10:28 +0200 Subject: [PATCH] Drone CI --- .drone.yml | 15 +++++ README.md | 4 +- requirements.txt | 11 +++ src/logo.png | Bin 0 -> 7943 bytes src/main.py | 171 +++++++++++++++++++++++++++++++++++++++++++++++ 5 files changed, 200 insertions(+), 1 deletion(-) create mode 100644 .drone.yml create mode 100644 requirements.txt create mode 100644 src/logo.png create mode 100644 src/main.py diff --git a/.drone.yml b/.drone.yml new file mode 100644 index 0000000..b45f44c --- /dev/null +++ b/.drone.yml @@ -0,0 +1,15 @@ +kind: pipeline +type: docker +name: default + +steps: + - name: build + image: git.argideli.com/quertex/docker-win-pyinstaller + pull: always + commands: + # add dependancies + - wine c:/python/python.exe -m pip install -r z:/drone/requirements.txt + # prepare output directory + - mkdir -p /drone/src/out/ + # build + - wine c:/python/Scripts/pyinstaller.exe --onefile --name matomo-csv-util --distpath z:/drone/src/out z:/drone/src/main.py \ No newline at end of file diff --git a/README.md b/README.md index 77854e7..6a94a8b 100644 --- a/README.md +++ b/README.md @@ -1,2 +1,4 @@ -# matomo-csv-util +## iNewsletter CSV Util +GUI utility to convert csv with multiple columns to iNewsletter .csv import +Needed columns= name, email diff --git a/requirements.txt b/requirements.txt new file mode 100644 index 0000000..4c75363 --- /dev/null +++ b/requirements.txt @@ -0,0 +1,11 @@ +altgraph==0.17.4 +numpy==1.26.3 +packaging==23.2 +pandas==2.2.0 +pyinstaller==6.3.0 +pyinstaller-hooks-contrib==2024.0 +PySimpleGUI==4.60.5 +python-dateutil==2.8.2 +pytz==2023.3.post1 +six==1.16.0 +tzdata==2023.4 diff --git a/src/logo.png b/src/logo.png new file mode 100644 index 0000000000000000000000000000000000000000..25f5a71f08db0a094cc39f833ff61902ff8501a3 GIT binary patch literal 7943 zcmXY0cU%+C)4qfjdLjam9#BA~grXEFAt2I3kS@K8^b&dr5HL~%L=dD1h?IbIM0ybg z1*MD9L8MBT8X#}{{@y?Cb9=WtyF0rxv(G;BL{Ik)BOM1F004}d8fy0e07Nc=00=et zW#LoeM1IkFX_)x}fEDGx2L$K=OXQ!I{BE228F)JR1=#vH0s#R5VlE!8zV^0Wj$)oZ z&RLrZ900)cTvJWOFfe;#IwaI^KT~;oz}Lw~fR>#_&5+N+u$S=$YrRc`4d#tj*w2Z< zYcDQG{dlW=g%}|U7AFcc*L)Y7Usg#C%!q;GsNDEC# z-`ulkN^pPJx9ly8+(YHdQp?%La9<_4@hyZ?EX2C@`i!>5@Z*FrGhS^Db)>;H{Nv~p z@WMsxeV`D)Z)7=|&bC(r7l>_}z~IOsMtin>8hA-NS{|L%`A~3BpI?d2i>3NEs@cE5 zJ8XX6(&;oHZjSFNb}(ReZ9~HHt%QlG$n&o{nUo0>-W*bIK=6FonQ?%lQx-rAWVp%S za-)q7Q4Y7&*R5P|>!P@dg-SIqwBpn*hew+=r_=r{6rjiXWgpY?hy`~%v|+qyH+o@} zw1Vn+T=Nn7pb)s&e3;n;^Uo>5%00ehpprq&XN9TYtETutWy6V@{HbML7V+}DaZPVX zhpxjxN~__)9U;rW9Cd~GP8ra94xsego565s>)nn|4z5$yxt0p~=9s*P{8Tnkjn^NE z*FUJ=irV3ZdUR(-doH+bP);x`+?D5wC>P5jpRM|j*`m`fVp-n28DzRVx#{q*o$|X_BLk<~wV#Ov%%N`=e~APC|}qevd-; z+!bKKa2cjW)>EmXfw(L#G9Z^PpFpQ?0#NFO2c4m*l|g()7#`RKrs$*mwXSl)!&?}* z5mhqDZ#vL)g$mpLRz4nb`)|d^h4%p)6hC>(bnVhhgs}#PbHy|Fa6O2I1-io~i0RN! zkz#e*<<_3P#d*;MdcOAl^bcyTzw2_h8Mg+dt=@ZR9^4_MQW|u#pTXf7!jnbyYxq5r5Uc2U??5SNHp0lbT zZz^5eKTOEsH@iB*Vr$Ulj#bdK#h88qn}j*AXYyU}(aQrcR*q1M@4ekWR{dE~If(2! z#cLw!csw}6WC+>Wb>a%t7&^oBv3m5k+N|qEd|#~zN74~3u~9ygZ`r;pW6MvwL=xOg zxAj#rH<-rs!L0Ah0m{KspUG&-U@%P2fnP)-(zvkRQGu%>03PcI>bEw_DoHsohqjf; z$3rQDr}J+ujf#BT)XVv3Vrv5I8E^2o3~@(LCch?EpTU3pu3E3P3Puv?$IL=u##G7H zL&=@xq$gMjLM>#z`vu#eyKB6pe<{<#+p3=d-^44=Zko;tUT=rkzL4$MVl$NPH{|X% zx77!zSl=~+HtqtdWNo^l9h}bgTXvgx2}}!#$>P|k-II{a)!V)BQ~uEI3)?>7x2M5l zDhjl#;NG$l5^Xez1(9n25fZT}zbag5T_BIYg=n_>oi>@yvgZq#Pe2Ev7%F+MWU{HInc$v6S&WFt8TZ|djR)sv|OF!+6O zIl@vXj1!yx1r5p9y$-uqCemM1N|)!B8Ztwe7T_)oQU%8QC7V>Mxc}=~9F0T;S zG;a+{PTL@f${avCU0Rt=UCzHexWZg6(F$m3=VKZ^o;}U1xIwIqf#}P#6&HKlTm|R-2*~m^xuc4 zx73JN$x(!&;1yBwo=+63_9oo-JM1j0Qb*+@uac@kJaHsQJ>++eV2i=H-I{Y;Z}nWd zw%2~(GEMPWr&`idnoNt4<@2@=RWSz=Ex>Z>hrv9#)9BUNBNENWs8xS*i>$H57KyF<&i;@aDB<5Ly5SG>|%Lq~?AUIBq)NmvbH zeHZ$g%~=CvF_WqMyks^m?BYY3cK4Ot7114rsve~|P=qI4^?%i_> zF|^B%biax)ujMIpa3X@8PCAQ!SQlo^xlq1qPZvPUYBIdD&AA?oz$$na?Gu21m;*18 z&8bHa-pRUaUGkK#J87x1+|syKnpjm#+d4sI6K@4H{W zl6*#)*N0rjmd4VM+u)05i8|8|ldUEZ;Ol$_Bg(^#oxjB_*sp11EUO{_1o4pJ#zE&* z?EM?XZi!<5A-yYeO>?)&qA`)2Y~@EscFtRJqJVb7Z-0|5T13~=rK-REJ_oTQS&ShxoNgm_77v)?HG$^@v@=Cq@^Vjp`opMQ{|At_x& zMF91lk!~#}%jw0L0QMNs$8?+WQPZ2qrdcwg=OC}m$(o_mACp*Vf`K+ z(mioJu%l23z!gTaWzi7d6e4(~*-k_KjFn%~@td_-$b1L;w`*7{n!8dmNzg7eHMXYk zIeO<;RD5CAOm%Ik><-zv@$o6z!d=syuVH?4UVJ%4;J{YWWGy{b)8m|Wu(tBfXsH0q zW#td&sV=GXrR9zl7^v)FVMpV5!9H|a%-x3(5lsN~s^&O=H+rT8u}zod8BQ4?ea*}< zD!8h(072+{YzlWLjZ-8U-!)FY4Y8F>ObI(#AE_M9WRHQS#6PJyY5xw)wT(^McVv`^ zJtNQZ(mxCy*#=%&#pgie0AV#U=*jY%|BbQ+Rf%Ph&}u9+t7a&Y1W>^6#svp0;$PCq zs{|nM;+s#QT{=1wvUw5g0KDwqmqj*pwj5(dk;r4RNsk`hvCe9*xe4p=`WS?RE;W_p z{YAAH)tZiUG)+;sCC5mK-_E|F5T5P1r4XCczOo(E=6SCTV7YUJ8lk`PV|Fw~Mp=O% zuZ~Q)S%*nT`ymnQ$lG2tFlmVRWwAJ0A4wrch(b1(ZI!?OkJ$bmhJph}rpVczpd z-c|P%oF9jGW9ZSi8=Xs#$3we9DYeEjgl}V@2pm}FDhK>NfL23L7eC}n2SfSg-4gn#I3=thBA%r=p{UM0TvW>g>ZNUoGjyIibx174erfhN{7M=vzCGI203Kh zpq5R2iCz!?@Cp^5+Qs(#}Z(NPsMf2q!Ayeu#b`QIcGQ82}WYG{|7 zAlI0mSM3@fSs)|p2Dpz63)RP??%b#nG$${C0J@g?u0IHeSMQ!GhwUN8RB%wbou}>>>*bGuSX~-_Fk9(4$nj>4L+kn{V0}BgmxJ+Ofdgt1=bD!XF?o) zlcf=$l|NObi2^tz>n|M;*B{w;G?LO8(4hr~o)yJc;4rGHHx5nQ42@B@@hf`mN;2c1 zzr2)`0QzmszoE7>F=2DjDvPpY-LOyY@%~k|1k_HHN4sI@jL+cUcGCI?Rk9oRU(g~d z51LYuHTg_wjr3`P^szQx$Zz?@_y*vW^UM^+KS4uf>D70|l>Ees8NkPi$yuV{pHLGxc;*r>8LEQ*UG<=n4s$bk-}QG40x38#7q5tW{Qj`rI32f z9y>9umHW98EU?t&kbRM z9Mn|qZfj_Zgw%F!m_vlYi#3S4>s^gM$HYeQToYhjdpKmb&)pnon$EW1pK>GHXjTBX z0k`TAme#YqO1SuNYTR;E_Ok~T3RAORUauPg+xWDAP&{mWY7T=NFW(LQ&z*Y(XAe{+D#*^+s#u$de#5M^ZzS(YB> z6g+f!C+APT+MIU&_$TKUc${C(7QhnNl51e^p6E@E5Kf5Uh+i%oNmP1`(qZ(FR~#&w z5L>2`LIRQ)p?LRqH2}964$6_pC&!Yx8w^#&r7cZw`X0T}0+y#W_;3(S#iok!K&knl z01ElqrO5uuy}orT5K<=3RNrR4UmNCpWlTa1dmw|E|H_<1cseh1A|9}OPP0n@04zq~ zF2@p(JnJFj^GWFO*Q&X$8}aIp@%(C$j%%L9`@x2f*WP5-+qfNwlOrZqi;KJdCo#|B z0~b^F;X27#3R*<}hwEXP6UE>X5uMp??Dz(Gb7A@KnuLj!ZT${dC z`)g@?WT+UnLYvdd?o-eI(8NjMuVF$Skyck-S6-|YwV_gUqhdh`v?Fxq%Q zA+0V;?T|pr1N0!T*{iJey(4ZVb^u6lA2@OUHP=Mb*?Zu8u5mClV>|{^`&+8*+7~?b z>e3mHH$uGb5z`$*p#AX`eRDx9gip0kR4$ zTRx3S-0H9ex0hL#sGH{jt|51AzjK~{`x5{{cJPIjw(l`7dc7x=GHCj>75kLD;q;f; z<55@$7D??6q_?xMsG0mJs*0c^F=BRzbbwGu;@LF+r*>lSVniM`cgxV|dF!PFW$GFR zU}ep_egB#KiD;SCe=iNtBU zF4we=nIx88NpM6*)>AYv9VxP4nne_-FtdL)XXnbzsVo~OGo#E9*70tvd0(_7n0URR zub(GtakurISo361jF)4746Rs$DQIr68f%;u87$rWJ0HcqFm8s8B&0iT_K8;#ZvgE9 zH1f^d4_&rCRu#gFx0p5S?1oD&ONY*c&xFWJSrLi0ZuRwZ!=r&*N;A<#Y=_DYV6P2U z)$BIs03=gThBd^bB5URJkTBa;r2ATlQ10`y5KFTru?VYV3+aCiyabzl>aq5FA4Vb? zi2H?bE>yp>8ol{0$l@3@H}OQ(%jHqa$f44$&GSZ*pIEAd|{5d8g_el8T zdDjq~(^Pel-ej;TagNoUFI+a+@z2!OIgOOohhTQC3FN%&K@gIOvZ^Z-a8X!^I6fwJWTg>jW0S(01^Vgc>P?Qgy(-ywLGUi&8f=bFU_IxOhB znKflcrEQwbBCoQK(ri}5Pyos8xEeAs8*2O~oO?jgELVYKn z&mVP;!aR!QW^8+A-8}BB9HtJF7_xH_7x-7we z!Y#`KsOOiB`Xmpj-X+&kg|f|AylS}dB2iQKD^>EZ^%i$a|CXi=yxTbHSq*9-G}q9m3U9eqQT;x|hn*rp~4>?5+l`XtjfQ zWQRshhMkAkC%Q*&J&^Pd|L*@cvxCh?X@SooD{z1?QHHS$;l-}!xSK>mgiowEYKARd z6)Uq-$OaeCh;Fp5tbI?Bl%+0JwS#SaBxQ$(Fk=cne%Ocb2b)QEC3nLacrQeEMz@ff ze@;!rTeq~ZyGL4De76VP-Ek}t_oR9Q0DP6@o3{K4n*%MMX^joYVMp+hTBYy`Hdw=Wbkp;_Rb35RiY!1gVmJ2%hbaJ?Lo2(-4{0_o#*Vmk`)}U5}J#Xy1m!~sOj?KraO;_o4*2o zoe9WJOxX8IUTP_75_U~N(EEPa9>MC?3z6WTH_U*Fg8y#G82TP<*b zfk7DO*%X2a-E|c5-|+lE40-zctT3`6S<2tvWrG>sfEw5N2?nq+j?Fzk=6^7u<6wQw z4^6phhMytl7gXRuDqPgeHFjiGTiWk@`yD^$B@4GyWa4t)_&D@E*Ct_;0_gFxB&mNL z{_`nMz2Tb%zu;-?^;u?^P*+= zjO0GN19f;B+~d_Mv!n?8N~47GOG|$;^*Vb=BiU}eGhgHh`fJ{BL=b3--2y|71YHna zqY`#)Mq^)?g+&0M#Ozt4xzITen9Il%j~u06sl6Uwdr-oVUq^PtBILR!!y+iT^XPV+ z7t%Grgw@g0m|HCf1fVebOV@SkfbFegCo~S`RK#n-UQDvWK>5_j=@|mO6ajQnN`|bI ztiIkD?@ykFJuB>zQ~+Rf`_e#UqXvcv5fzz1Y9+{)p)pS*(c}X;k6Z@pB$25+Tna?^ zt;jdYGc@nL=aw{cnpTbOa*^mw8bRCuUYkHyi{4Fo(91?%UBl6{j7tLu$_7K+HdyL) zRg>(<_E2czg<< zne~nN)WovvhkSwxo1hF!*hzyb#J~{ql zQPl(_W(g;|R@S(&&U$wGk;8+P>RHOFyBIdaw;h!Ps`1AoUzl-bAfO|H)jC{StdwXC zoHmd<{u@-EI#E>CQZ`_1TThRKf~4E04)`K@9w$f$kJ^CWYPj|VzAwD2uw_p>30`?& zVx=72(N5u&zb3*ThkS_{%zn9$&|r9nR_zBF4on$X$!O77QF$ejt2wrrESGP6Sen$hlE3*>bzcAA)0j%sRemOL6Pa^u`&Iky z^|+)xE!Ll$yXalF+g8na?QhM#dR-YxWe!k?nmTeW53VYMrpn2w0Y%EwyN~VlF++>@ z44oyk4Os!NwI3*}7*SrGb}$nCFSGCxcwlApT>rH^{%1i2aPpPRmOmV-b7T;qfmX^V z=@qbd>>Xqrkpf+IaK>Y{hWH8aicDpJZB)!LE!LNu`zV@#(4-rR_DvPbR?>>z1N9K2m;v&N`lN*)SQLGAvrC+nIyvw&RD!vr_MFW_VlpDyMmZw}=k zpeL%@kWzGJUv*{kgERZR6=QClYy=gQ`acer<5}>f)n36R9YJ@l4j0M(F^9|(R6o_N2W_#P!?STzmb$>MbV+I0?ZW1 z63_HbSxm4bHR}GX>xS$N*;on`sRNz^)B{rtd6`e1LVcwolcGfK4sz2B=7#3gT;3=Q fBGq?2B+(R@&rCRGa9<}Uu>sB7x@r|@o2dT-y2znY literal 0 HcmV?d00001 diff --git a/src/main.py b/src/main.py new file mode 100644 index 0000000..493dc8b --- /dev/null +++ b/src/main.py @@ -0,0 +1,171 @@ +import csv +import json +import os.path +import numpy as np +import pandas as pd +import PySimpleGUI as sg + + +def append_list_as_row(file_name, list_of_elem): + with open(file_name, 'a+', newline='', encoding='utf-8') as write_obj: + csv_writer = csv.writer(write_obj) + csv_writer.writerow(list_of_elem) + +def sanitize_data(data_in): + if isinstance(data_in, dict): + pop_lst = [] + for key in data_in: + if isinstance(data_in[key], str): + data_in[key] = data_in[key].replace(u'\xa0', u' ') + data_in[key] = data_in[key].strip() + else: + if key not in ['email', 'name']: + pop_lst.append(key) + for i in pop_lst: + data_in.pop(i, None) + data_in = {key.strip(): value for key, value in data_in.items()} + + if isinstance(data_in, list): + data_in = [sub.replace(u'\xa0', u' ').strip() for sub in data_in] + + return data_in + +def create_import_file(in_file): + file_path, file_name = os.path.split(in_file) + out_file = os.path.join(file_path, 'OUT_{}'.format(file_name)) + + if os.path.exists(out_file): + os.remove(out_file) + + csv_in = pd.read_csv(in_file, dtype=str) + + attrs=sanitize_data(list(csv_in.head())) + try: + attrs.remove('name') + attrs.remove('email') + except ValueError: + return 11 + + append_list_as_row(out_file,['email', 'name', 'attributes']) + + for index, row in csv_in.iterrows(): + row_dict = sanitize_data(row.to_dict()) + + if row_dict['name'] in ['nan', np.nan]: + row_dict['name'] = row_dict['email'] + + emails = row_dict['email'] + if type(emails) is str: + if '/' in emails: + emails = sanitize_data(row_dict['email'].split("/")) + else: + emails = [sanitize_data(row_dict['email'])] + + mail_counter = 0 + entry_name = row_dict['name'] + for mail in emails: + out_lst = [] + mail_counter += 1 + out_lst.append(mail) + if len(emails) > 1: + name = "{}-{}".format(entry_name, mail_counter) + out_lst.append(name) + else: + out_lst.append(entry_name) + + row_dict.pop('name', None) + row_dict.pop('email', None) + + out_lst.append(json.dumps(row_dict, ensure_ascii=False)) + + append_list_as_row(out_file, out_lst) + return 0 + +# Columns +file_list_column = [ + [ + sg.Text("Φάκελος του CSV"), + sg.In(size=(25, 1), enable_events=True, key="-FOLDER-"), + sg.FolderBrowse(), + ], + [ + sg.Listbox( + values=[], enable_events=True, size=(50, 20), key="-LIST_FILES-" + ) + ], +] + +confirmation_column = [ + [sg.Text("Επιλέξτε ένα αρχείο CSV από τα περιεχόμενα του φακέλου στα αριστερά:")], + [sg.Text("Επιλεγμένο Αρχείο:",key="-FILE_HEAD-", visible = False)], + [sg.Text(size=(60, 2), key="-FILENAME-")], + [sg.Text(key="-CSV_FILE-")], + [sg.Button(key="-PROCESS_FILE-", button_text="Δημιουργία λίστας", visible = False)], + [sg.Text("Processing", key="-PROCESS_OUT-", visible = False)], +] + +# Layout +layout = [ + [ + sg.Column(file_list_column), + sg.VSeperator(), + sg.Column(confirmation_column), + ] +] +import base64 + +base64_icon=b'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' +window = sg.Window("iNewsletter CSV attributes", layout, icon=base64_icon) + + +#create_import_file('/home/argiris/VScode/Python/inewsletter_csv/list.csv') +#exit(0) + +while True: + event, values = window.read() + print(event) + + if event == "Exit" or event == sg.WIN_CLOSED: + break + + if event == "-FOLDER-": + folder = values["-FOLDER-"] + try: + file_list = os.listdir(folder) # Get file list + print(file_list) + except: + file_list = [] + + fnames = [ + f + for f in file_list + if os.path.isfile(os.path.join(folder, f)) + and f.lower().endswith((".csv")) # Filter file list + ] + window["-LIST_FILES-"].update(fnames) + + elif event == "-LIST_FILES-": # File chosen + window["-FILE_HEAD-"].update(visible=True) + window["-PROCESS_FILE-"].update(visible=True) + window["-PROCESS_OUT-"].update(visible=False) + try: + filename = os.path.join( + values["-FOLDER-"], values["-LIST_FILES-"][0] + ) + window["-FILENAME-"].update(filename) + window["-CSV_FILE-"].update(filename=filename) + except: + pass + + elif event == "-PROCESS_FILE-": # Process button pressed + window["-FILE_HEAD-"].update(visible=True) + window["-PROCESS_FILE-"].update(visible=False) + + res = create_import_file(filename) + if res == 0: + window["-PROCESS_OUT-"].update("Η δημιουργία ολοκληρώθηκε", visible=True) + else: + window["-PROCESS_OUT-"].update("Σφάλμα {}: Φροντίστε το .csv να διαθέτει δύο στήλες με όνομα name και email, όλες οι υπόλοιπες είναι τα χαρακτηριστικά".format(res), visible=True) + + +window.close() \ No newline at end of file