From f8e6110ccd7ce9f87224f24e0bc1798368877626 Mon Sep 17 00:00:00 2001 From: tapish13031997 Date: Mon, 1 May 2017 00:36:51 +0530 Subject: [PATCH] ADDED DOWNLOAD SCRIPT,SQLITE VERSION_FOR_LINUX & XLSX_MERGER --- Linux_sqlite_version/Parser.py | 65 ++ Linux_sqlite_version/Parser.pyc | Bin 0 -> 1523 bytes Linux_sqlite_version/browser.py | 6 + Linux_sqlite_version/browser.pyc | Bin 0 -> 670 bytes Linux_sqlite_version/controller.py | 46 ++ Linux_sqlite_version/convert.py | 15 + Linux_sqlite_version/convert.pyc | Bin 0 -> 898 bytes Linux_sqlite_version/excelwriter.py | 97 +++ Linux_sqlite_version/excelwriter.pyc | Bin 0 -> 4543 bytes Linux_sqlite_version/extractor.py | 439 ++++++++++++++ Linux_sqlite_version/extractor.pyc | Bin 0 -> 14228 bytes Linux_sqlite_version/installer.py | 12 + Linux_sqlite_version/logwriter.py | 6 + Linux_sqlite_version/logwriter.pyc | Bin 0 -> 488 bytes Linux_sqlite_version/main.py | 73 +++ Linux_sqlite_version/main.pyc | Bin 0 -> 2119 bytes Linux_sqlite_version/merge.py | 123 ++++ Linux_sqlite_version/need.py | 56 ++ Linux_sqlite_version/need.pyc | Bin 0 -> 2600 bytes Linux_sqlite_version/patents.db | Bin 0 -> 22528 bytes Linux_sqlite_version/sqlitewriter.py | 118 ++++ Linux_sqlite_version/sqlitewriter.pyc | Bin 0 -> 4243 bytes Linux_sqlite_version/test.py | 55 ++ Linux_sqlite_version/test.pyc | Bin 0 -> 2791 bytes Linux_sqlite_version/universal.py | 41 ++ Linux_sqlite_version/universal.pyc | Bin 0 -> 1285 bytes download_patents_script/patent_new_links.txt | 568 ++++++++++++++++++ .../script_for_downloading_patents.py | 29 + sqlite | 0 sqlite_version/Parser.py | 65 ++ sqlite_version/Parser.pyc | Bin 0 -> 1523 bytes sqlite_version/browser.py | 6 + sqlite_version/browser.pyc | Bin 0 -> 670 bytes sqlite_version/controller.py | 46 ++ sqlite_version/convert.py | 15 + sqlite_version/convert.pyc | Bin 0 -> 898 bytes sqlite_version/excelwriter.py | 97 +++ sqlite_version/excelwriter.pyc | Bin 0 -> 4543 bytes sqlite_version/extractor.py | 439 ++++++++++++++ sqlite_version/extractor.pyc | Bin 0 -> 14228 bytes sqlite_version/installer.py | 12 + sqlite_version/logwriter.py | 6 + sqlite_version/logwriter.pyc | Bin 0 -> 488 bytes sqlite_version/main.py | 73 +++ sqlite_version/main.pyc | Bin 0 -> 2119 bytes sqlite_version/merge.py | 123 ++++ sqlite_version/need.py | 56 ++ sqlite_version/need.pyc | Bin 0 -> 2600 bytes sqlite_version/patents.db | Bin 0 -> 22528 bytes sqlite_version/sqlitewriter.py | 118 ++++ sqlite_version/sqlitewriter.pyc | Bin 0 -> 4243 bytes sqlite_version/test.py | 55 ++ sqlite_version/test.pyc | Bin 0 -> 2791 bytes sqlite_version/universal.py | 41 ++ sqlite_version/universal.pyc | Bin 0 -> 1285 bytes xlsx_meger/browser.py | 6 + xlsx_meger/browser.pyc | Bin 0 -> 668 bytes xlsx_meger/controller.py | 28 + xlsx_meger/copyapr 1.xlsx | Bin 0 -> 110003 bytes xlsx_meger/copycopyapr 1.xlsx | Bin 0 -> 110003 bytes xlsx_meger/main.pyc | Bin 0 -> 2107 bytes xlsx_meger/merger.py | 123 ++++ xlsx_meger/merger.pyc | Bin 0 -> 5939 bytes xlsx_meger/universal.py | 41 ++ xlsx_meger/universal.pyc | Bin 0 -> 1277 bytes 65 files changed, 3099 insertions(+) create mode 100644 Linux_sqlite_version/Parser.py create mode 100644 Linux_sqlite_version/Parser.pyc create mode 100644 Linux_sqlite_version/browser.py create mode 100644 Linux_sqlite_version/browser.pyc create mode 100644 Linux_sqlite_version/controller.py create mode 100644 Linux_sqlite_version/convert.py create mode 100644 Linux_sqlite_version/convert.pyc create mode 100644 Linux_sqlite_version/excelwriter.py create mode 100644 Linux_sqlite_version/excelwriter.pyc create mode 100644 Linux_sqlite_version/extractor.py create mode 100644 Linux_sqlite_version/extractor.pyc create mode 100644 Linux_sqlite_version/installer.py create mode 100644 Linux_sqlite_version/logwriter.py create mode 100644 Linux_sqlite_version/logwriter.pyc create mode 100644 Linux_sqlite_version/main.py create mode 100644 Linux_sqlite_version/main.pyc create mode 100644 Linux_sqlite_version/merge.py create mode 100644 Linux_sqlite_version/need.py create mode 100644 Linux_sqlite_version/need.pyc create mode 100644 Linux_sqlite_version/patents.db create mode 100644 Linux_sqlite_version/sqlitewriter.py create mode 100644 Linux_sqlite_version/sqlitewriter.pyc create mode 100644 Linux_sqlite_version/test.py create mode 100644 Linux_sqlite_version/test.pyc create mode 100644 Linux_sqlite_version/universal.py create mode 100644 Linux_sqlite_version/universal.pyc create mode 100644 download_patents_script/patent_new_links.txt create mode 100644 download_patents_script/script_for_downloading_patents.py create mode 100644 sqlite create mode 100644 sqlite_version/Parser.py create mode 100644 sqlite_version/Parser.pyc create mode 100644 sqlite_version/browser.py create mode 100644 sqlite_version/browser.pyc create mode 100644 sqlite_version/controller.py create mode 100644 sqlite_version/convert.py create mode 100644 sqlite_version/convert.pyc create mode 100644 sqlite_version/excelwriter.py create mode 100644 sqlite_version/excelwriter.pyc create mode 100644 sqlite_version/extractor.py create mode 100644 sqlite_version/extractor.pyc create mode 100644 sqlite_version/installer.py create mode 100644 sqlite_version/logwriter.py create mode 100644 sqlite_version/logwriter.pyc create mode 100644 sqlite_version/main.py create mode 100644 sqlite_version/main.pyc create mode 100644 sqlite_version/merge.py create mode 100644 sqlite_version/need.py create mode 100644 sqlite_version/need.pyc create mode 100644 sqlite_version/patents.db create mode 100644 sqlite_version/sqlitewriter.py create mode 100644 sqlite_version/sqlitewriter.pyc create mode 100644 sqlite_version/test.py create mode 100644 sqlite_version/test.pyc create mode 100644 sqlite_version/universal.py create mode 100644 sqlite_version/universal.pyc create mode 100644 xlsx_meger/browser.py create mode 100644 xlsx_meger/browser.pyc create mode 100644 xlsx_meger/controller.py create mode 100644 xlsx_meger/copyapr 1.xlsx create mode 100644 xlsx_meger/copycopyapr 1.xlsx create mode 100644 xlsx_meger/main.pyc create mode 100644 xlsx_meger/merger.py create mode 100644 xlsx_meger/merger.pyc create mode 100644 xlsx_meger/universal.py create mode 100644 xlsx_meger/universal.pyc diff --git a/Linux_sqlite_version/Parser.py b/Linux_sqlite_version/Parser.py new file mode 100644 index 0000000..4080796 --- /dev/null +++ b/Linux_sqlite_version/Parser.py @@ -0,0 +1,65 @@ +#using tag for fields in pdf for which information is to be extracted and value for information +from lxml import html +import requests +import os +from urllib import url2pathname +import need +import universal +import convert +import logwriter +import extractor +def reopen(filename): #open the html file for parasing + requests_session = need.requests.session() + requests_session.mount('file://', need.LocalFileAdapter()) + url = "file:///"+os.getcwd().replace(" ","%20").replace("\\","/") + page = requests_session.get(url+"/"+universal.tag_folder+"/"+filename) #file name + universal.tree = html.fromstring(page.content) +#def extractor(index,tag) : +# data from html file--> abcdaaa +# tag ---------> axabcydaa +#Approach A1 +#now what we know is that the tag is complete and a subsequence of tag will be the data from html file ....but if we use s.get_matching_blocks() it returns the longest common subsequence which will be wrong consider +#Approach A2 +# data from html file--> international_total_publication +# tag ---------> international publication +#this will match while they are two different tags so...we cant use this approach +#my approach:- +#remove all the whitespaces from the universal.datastring and then we will use the approach A1 to extract tags from universal.datastring +def begin(): #return 1 if string is not present + universal.datastring="" + reopen(universal.filename+universal.filename+".html") #html-tag filename converted from pdf + #page = requests_session.get('file:///home/killerbee/Desktop/test2/'+filename) #file name + #universal.tree = html.fromstring(page.content) + s = universal.tree.itertext() +# universal.test=["(21) Application No","Date of filing of Application","Publication Date","Title of the invention","International classification","Priority Document","Priority Date","Name of priority country","International Application","Fil","International Publication","Patent of Addition to Application","Fil","Divisional to Application","Fil","Name of Applicant","(72)Name of Inventor","Abstract"] + for a in s: + universal.datastring += a + try: + return(extractor.getdetails(universal.datastring)) + except Exception as e: + logwriter.logwrite("Extracter: "+str(e)+" on page "+str(int(universal.filename)+1)) + universal.logflag = 1 + return -1 + return 0 +# write code for case when tayal returns -1 and you have to run your extraction function +# implement ur extraction function and then call it + + + + + + + + + + #extractor.getdetails(universal.datastring) +# for tag in universal.test: +# tempi=i +# # i=extractor(i,tag) +# if i==-1: +# if(extractor.mycheck(universal.datastring)==0): +# fappend=open("log.txt",'a') +# fappend.write("-->"+str(universal.filename)+"->"+tag+"--->"+universal.datastring[tempi:tempi+len(tag)]+'\n') +# fappend.close() +# return -1 +# i+=1 diff --git a/Linux_sqlite_version/Parser.pyc b/Linux_sqlite_version/Parser.pyc new file mode 100644 index 0000000000000000000000000000000000000000..def38d3aa38b0168bbd47f92837876f68c757682 GIT binary patch literal 1523 zcmb_b&1w@-6h3z*Nt-mWRjUzE2!b%Hjub=?5yk3CYDpI@gA%4QH|eA|GwHpz8lhd) zh4?;hd;y=q=WyvlzjM;q2hgEH8MIlIDW9C}~k%qfbQ1 z3gvYnZ4S8`HIPp68^1__`5NHRPt5k*Y{NXUW^y;IlWA$Xheg$zDeU2b(x+L zbsHm98{suKBQWYtOO{TkToDof2P1bUvQQ?IS(8CTA8OGnyg zA96Wt_0*)9_8b>(q>G-G#d~dCYJ3ZpPe+4cWpZu%utqy9=Iv$Orw8(m}$e4p-fO2k{j&#HU1l&Wg_^_Jj_^2>O+XJoRE$xncHH~++UhT*3 z*c4t5I8hWI@1)jgyD|MJ1zKHAb-98&9G5_9RozsPx~DR>I4n2o1s?YeFjvC>(}D~j z08CM^3t8}36`M60*F{4_v%7?WZ@s(0g2Gx20)ws|1-Rn)5$%0kC!_%#@j1mZ*xf7N zPz|#?YLWd)3Q|&Y`9Nxr3>1Z3U5Ks=%eOBQfDa!8ryyy7|-yE5>RrBf}tQ$2p literal 0 HcmV?d00001 diff --git a/Linux_sqlite_version/browser.py b/Linux_sqlite_version/browser.py new file mode 100644 index 0000000..26bd41c --- /dev/null +++ b/Linux_sqlite_version/browser.py @@ -0,0 +1,6 @@ +import Tkinter,tkFileDialog +def browse(): + root = Tkinter.Tk() + root.withdraw() + filez = tkFileDialog.askopenfilenames(parent=root,title='Choose a file',filetypes = (("pdf files","*.pdf"),("all files","*.*"))) + return root.tk.splitlist(filez) diff --git a/Linux_sqlite_version/browser.pyc b/Linux_sqlite_version/browser.pyc new file mode 100644 index 0000000000000000000000000000000000000000..fd48f813817feb2e85cb811e8322622ae52e9000 GIT binary patch literal 670 zcmbtRJ5K^Z5T4}_6)~~2w9tfDaGjMgCK3t@VvvH+ki#2fx#jk}86_C3^dFnp>dZ={ zFjj7EXTN!U^SJ1JzrGlK4DMikD)L^+r4tdUdoC!X=q0#jTQIA^O7gYT zp3rr< z)20sbSIWluJ8xU^SVcdxIb+F6)X#WFo`vOUS|$r_Xi(OX9@{o?{+ znInZv&cYN_IGNEBhtgb?@Y4J5={4cGDHaHV&IH9%KgT$;&S5!5jN3>V`y#$+cLp&% z2pNu^uq5mAcwG7gVc9B{VXxn67+-q^(=c^&Y{F0O>2`X${hp4nDf;iqTIzi6(?^FF KMlfjuhvo}48kCj* literal 0 HcmV?d00001 diff --git a/Linux_sqlite_version/controller.py b/Linux_sqlite_version/controller.py new file mode 100644 index 0000000..2f9c4a4 --- /dev/null +++ b/Linux_sqlite_version/controller.py @@ -0,0 +1,46 @@ +import main +import universal +import browser +import sqlitewriter +from shutil import copyfile +import os +#import test +universal.init() +sqlitewriter.init() +files=browser.browse() +for _file in files : + #main.run_command("cp "+str(_file)+" "+universal.current_dir) + src=str(_file) + universal.filename="" + temp=len(_file)-1 + while _file[temp]!="/": + universal.filename=_file[temp]+universal.filename + temp-=1 + tempfile = "copy"+universal.filename + dst=str(universal.current_dir+'/'+str("copy"+universal.filename)) + copyfile(src,dst) + universal.logfile = universal.filename.replace('.pdf','') #as univeral.filename changes in main + sqlitewriter.createconnection() + main.initial() + sqlitewriter.closeconnection() + + if(universal.logflag==0): + os.remove(universal.logfile+".txt") +# else: +# test.init(tempfile) + os.remove(tempfile) + os.remove(_file) + #main.run_command("rm "+universal.logfile) +#year=input("year\n") +#s=main.run_command("ls "+str(year),1).split("\n") +#fappend.close() +#for x in s: +# universal.filename=x +# main.run_command("mv "+str(year)+"/"+str(x)+" "+universal.current_dir) +# main.initial() +# main.run_command("mv "+universal.current_dir+"/"+str(x)+" "+str(year)) + +#fappend=open("log.txt",'a') +#fappend.write("\n********"+"\n"+str(year)+"\n*************\n\n\n") +#fappend.close() +#i=input("Filename\n") diff --git a/Linux_sqlite_version/convert.py b/Linux_sqlite_version/convert.py new file mode 100644 index 0000000..6dcb64a --- /dev/null +++ b/Linux_sqlite_version/convert.py @@ -0,0 +1,15 @@ +import commands +import universal +import logwriter +def run_command(string): + if commands.getstatusoutput(string)[0]!=0: + logwriter.logwrite("ERROR IN Commands.getstatusoutput "+string) +def convert(): + # run_command("pdf2txt.py -t html -Y exact "+"-o "+universal.filename+".html "+universal.current_dir+"/"+universal.year+"/"+universal.filename+".pdf") + run_command("pdf2txt.py -t tag -Y exact "+"-o "+universal.current_dir+"/"+universal.tag_folder+"/"+universal.filename+universal.filename+".html "+universal.current_dir +"/"+ universal.pdf_folder+"/"+universal.filename+".pdf") +#universal.init(); +#for i in range(8,622): +# #print(i) +# universal.filename=str(i); +# convert() #for initializing conversion of files + diff --git a/Linux_sqlite_version/convert.pyc b/Linux_sqlite_version/convert.pyc new file mode 100644 index 0000000000000000000000000000000000000000..f1282c9f02637d7471927b1936b6c28c50692cf1 GIT binary patch literal 898 zcmb_a&2G~`5T3PDXiE{ts^YTZNXId#hkrZ+Y3HPCxXr<^Q(I=EsbOKqY)QyP~TA^4XzGFC5 z8_zz^Bz;;#QMd>7tSDX<`o&bA`lcyc6DCW`flKa#?|IX+jy>=`Vyhv9?_l#+7$3mq z{PKNQv+ZK|c9%)ld;=Cb!XU|{f;hjUh z`IYTL?c2QaEg(-eANUqhyS|+dO$kv!6sZ%nyM`TCZ{Pq|pa+y3v!WFiP#qzbEgb!{ zU@-&yEpG3RID@SaYY6uw(@n!&=#5!C;A?47k6ClM)Z+_nugi*ckaosi<9Li6BxiET zjnlF52{L1yVh@hUXW!N`dFkS`Ro`{C<+-UlK9rDhIbV2Z2D%ruvu)Yf=tHf+_lxa+ yru-%j9d1Bike{5AOxi637Gf>L8b>IOfd1q0`zZIg@uqk7i7*(%aHQltNPhrWVZ*!t literal 0 HcmV?d00001 diff --git a/Linux_sqlite_version/excelwriter.py b/Linux_sqlite_version/excelwriter.py new file mode 100644 index 0000000..d4eef3a --- /dev/null +++ b/Linux_sqlite_version/excelwriter.py @@ -0,0 +1,97 @@ +import xlsxwriter +import universal +import logwriter +def init(): #for initializing the xlsx file + universal.workbook = xlsxwriter.Workbook(universal.filename.replace(".pdf","")+".xlsx") + universal.worksheet = universal.workbook.add_worksheet() + headformat = universal.workbook.add_format() + headformat.set_bold() + headformat.set_text_wrap() + universal.worksheet.set_row(0, 60) + universal.worksheet.set_column(0,3,11) + universal.worksheet.set_column(4,4,30) + universal.worksheet.set_column(5,5,20) + universal.worksheet.set_column(6,6,15) + universal.worksheet.set_column(7,8,7) + universal.worksheet.set_column(9,9,12) + universal.worksheet.set_column(10,10,13) + universal.worksheet.set_column(11,12,9) + universal.worksheet.set_column(13,13,15) + universal.worksheet.set_column(14,14,12) + universal.worksheet.set_column(15,17,14) + universal.worksheet.set_column(18,18,11) + universal.worksheet.set_column(19,19,14) + + universal.worksheet.write('A1',"Application No.",headformat) + universal.worksheet.write('B1',"Date of filling of Application",headformat) + universal.worksheet.write('C1',"Publication Date",headformat) + universal.worksheet.write('D1',"Name of Applicant",headformat) + universal.worksheet.write('E1',"Title of Invention",headformat) + universal.worksheet.write('F1',"Name of Inventor(s)",headformat) + universal.worksheet.write('G1',"Abstract",headformat) + universal.worksheet.write('H1',"No. of pages",headformat) + universal.worksheet.write('I1',"No. of claims",headformat) + universal.worksheet.write('J1',"International classification",headformat) + universal.worksheet.write('K1',"Priority Document No.",headformat) + universal.worksheet.write('L1',"Priority Date",headformat) + universal.worksheet.write('M1',"Name of priority country",headformat) + universal.worksheet.write('N1',"International Application No.",headformat) + universal.worksheet.write('O1',"International Application Filling Date",headformat) + universal.worksheet.write('P1',"International Publication No.",headformat) + universal.worksheet.write('Q1',"Patent of addition to Application No.",headformat) + universal.worksheet.write('R1',"Patent of addition to Application No. Filling Date",headformat) + universal.worksheet.write('S1',"Divisional to Application No.",headformat) + universal.worksheet.write('T1',"Divisional to Application No. Filling Date",headformat) + universal.row = 1 + universal.date_format = universal.workbook.add_format({'num_format':'dd mm yyyy'}) + #universal.workbook.close() + + +#inside for loop +def loop() : + try: + universal.worksheet.write(universal.row, 0, universal.data["Application No."]) + universal.worksheet.write(universal.row, 1, universal.data["Date of filing of Application"], universal.date_format) + universal.worksheet.write(universal.row, 2, universal.data["Publication Date"], universal.date_format) + universal.worksheet.write(universal.row, 3, universal.data["Name of Applicant"]) + universal.worksheet.write(universal.row, 4, universal.data["Title of the invention"]) + universal.worksheet.write(universal.row, 5, universal.data["Name of Inventor"]) + universal.worksheet.write(universal.row, 6, universal.data["Abstract"]) + if(universal.data["No. of Pages"].upper()!="NA"): + universal.worksheet.write(universal.row, 7, int(universal.data["No. of Pages"])) + else: + universal.worksheet.write(universal.row, 7, universal.data["No. of Pages"].upper()) + if(universal.data["No. of Claims"].upper()!="NA"): + universal.worksheet.write(universal.row, 8, int(universal.data["No. of Claims"])) + else: + universal.worksheet.write(universal.row, 8, universal.data["No. of Claims"].upper()) + universal.worksheet.write(universal.row, 9, universal.data["International classification"]) + universal.worksheet.write(universal.row, 10, universal.data["Priority Document No"]) + if(universal.data["Priority Date"] == "NA"): + universal.worksheet.write(universal.row, 11, universal.data["Priority Date"]) + else: + universal.worksheet.write(universal.row, 11, universal.data["Priority Date"],universal.date_format) + universal.worksheet.write(universal.row, 12, universal.data["Name of priority country"]) + universal.worksheet.write(universal.row, 13, universal.data["International Application No"]) + if(universal.data["IAFiling Date"] == "NA"): + universal.worksheet.write(universal.row, 14, universal.data["IAFiling Date"]) + else: + universal.worksheet.write(universal.row, 14, universal.data["IAFiling Date"],universal.date_format) + universal.worksheet.write(universal.row, 15, universal.data["International Publication No"]) + universal.worksheet.write(universal.row, 16, universal.data["Patent of Addition to Application Number"]) + if(universal.data["IBFiling Date"] == "NA"): + universal.worksheet.write(universal.row, 17, universal.data["IBFiling Date"]) + else: + universal.worksheet.write(universal.row, 17, universal.data["IBFiling Date"],universal.date_format) + universal.worksheet.write(universal.row, 18, universal.data["Divisional to Application Number"]) + if(universal.data["ICFiling Date"] == "NA"): + universal.worksheet.write(universal.row, 19, universal.data["ICFiling Date"]) + else: + universal.worksheet.write(universal.row, 19, universal.data["ICFiling Date"],universal.date_format) + + universal.row = universal.row + 1 + except Exception as e: + universal.logflag=1 + logwriter.logwrite("Excelfile : "+str(e)+" on page "+str(int(universal.filename)+1)) + + diff --git a/Linux_sqlite_version/excelwriter.pyc b/Linux_sqlite_version/excelwriter.pyc new file mode 100644 index 0000000000000000000000000000000000000000..50a9bd708a397367b441a8d648182d4d83e475da GIT binary patch literal 4543 zcmb_f+fv(B6y35RfVm|=AmplCASO+5l{9Iarfmo$EotjgCo{?9#bbN~2xQ6Ckps-M zPxL4HS^bPY_q8+W+FO<-TQ==OEU}T+zMidfbe8gePZr+a|L0Ae+P@tBKf#}V1fg&m zK z)4up1&rr`{Se#c9>%t zZD>NEGo(i7B%ek{N#R7GF0?=j=Xei_AUG#`&?!>Wq^5e%v!rmI>p^Eo;hgP3N7xYN z-8IazVJ6!gDV)7=CrO=WMR$aGQaF1@yg&+Pmo3~ckXq!PrXm2nNa|7+y-ey#7QIU9 zS{5})UC*L7NZrh$w@58z(PdJ%vuKgjN*29C>Z2@rm(<5ubd^*oi+)1N%A)s3-Or+* zl6sIuACmeki+)b(i!Azx)R$TGF{!Vz=+~saiBa`L7R6MuC>$)!HBwLMVS5Q-P7)U5 zI#yj-^ZHwDsvRsnEW%;FJ971r!?(_37I_xqEM)m!s(HEp&X(Ec>gXdTMD-wowah)88?79M^TcUA|0N zi{-kd&%$!6wcQEAUZUHuG^Z`s8WN@L>V=|wW@#?xl@q$6-Spns9v30n=a%L=W7kOO z2SvRi>Tj)(hr70|!=P4=0)A&{9yo@;bvA3ewieq>OLH6Ac-^fzjY#pr(wCvw^g=uE zWc)SPgkEcBr`-?<@V%wa!)_~Z{J;s1%?-caYM|Cmw|K8iwq~gc@v!$1Kgs29D07T8U< zR<}iQ82j)HL({4Z=snvGB}#I~HLyOaL436xR=0guh3v~Wp?wrq4})4$(l8SEhf*nD z*L}Cu@IqexQgp~K2R7jMgTj-G$Hy%YuRXh_+G7SpMHWIMN_&38E*)UH*ul1Kmo{vD z5cbsBXJamsXp{p}dDYNB-*yM>Lj<8DrWg;FvY$2OYVA znjViaqb^Y)`2EIjO5H-%V{<5?DEm3#D&RL@B_J6f6**dz9a1PvqR+?rAzEZhaE~Fd zj2q^o^1Xdqid|qdptiKh;M$@&hitdI zau++f|H|ZEiF3nfK<>0jcW(K_SpZhe(`&CxLwKzo6ews88Tb@2l&t?MR%SuIKJHLB zAymzv1rX8&+_jeuJ{~~Sq7NPZ*fBhV-Y6z&ck%iu3nA-Am7?8-ckdKY%JL+K$yQ&M zBm}QNM-s-T=i%95Na3DsIx$NU9wN(^{NKe9wBy^&{-V~8ore~)TBH^ojl6TV~3BS1pTEV^M)<+bV$!s6zZo=d6 z_OE#_OxVuaAhy$LY-1bb{dx0gI$eiMYZJOt=t(NTdO84eTX{Oqczb1fVLmc76Au$C zoVlx6WZGU?WWiLta*GACG}(Kx;nylm2Za!{noW=x`C0(G<}e($DQuc4i|g<1xV2r; z;5tQm;yZB$nXX)fc~K|?3tLFT2V)Md?>FxwtbPGOM&2-uWgKSvSTt60%SI#_n>B9Y zzWY#T>EQbn+!}Ce2kU;1@5|^ A`v3p{ literal 0 HcmV?d00001 diff --git a/Linux_sqlite_version/extractor.py b/Linux_sqlite_version/extractor.py new file mode 100644 index 0000000..bde7be5 --- /dev/null +++ b/Linux_sqlite_version/extractor.py @@ -0,0 +1,439 @@ +#confirm identity of WIPO number +#implement sql +#implement a method to find and convert patent files of all year one by one +# -*- coding: utf-8 -*- +import difflib +from collections import namedtuple +import operator +import re +import universal +import logwriter +import unicodedata +pages_tag="No of Pages" #tags for pages and claims in whole file. +claims_tag="No of Claims"#we are using No not No. so that we can match it with No, no, +Pair = namedtuple("Pair", ["start", "end"]) +Tag = namedtuple("Tag",["tag","start","end"]) +Tags=["(21) Application","Address Applicant","(22) Date filing Application","(19) India","(43) Publication Date","(54) Title Invention","(51) International classification","(31) Priority Document","(32) Priority Date","(33) Name priority country","(86) International Application","(87) International Publication","(61) Patent Addition Application","(62) Divisional Application","(71) Name Applicant","(72) Name Inventor","(57) Abstract",pages_tag, claims_tag] +indexvalues = [] +flag={}#flag[tag]=1 implies value to tag has been assigned used in line 194 main usage +data = {} +probability = 0.85 +reslt={} +#removes spaces and lowers the string + +def burst(patent): + words = patent.split() + w = [] + for word in words: + a = word.split(':') + for b in a: + if(b!=""): + w.append(b.strip()) + return w; + +def modify(string): + string="".join(burst(string)).lower() + return string +def lcs(S,T): + m = len(S) + n = len(T) + counter = [[0]*(n+1) for x in range(m+1)] + for i in range(m): + for j in range(n): + if S[i] == T[j]: + counter[i+1][j+1] = counter[i][j]+1 + else: + counter[i+1][j+1]=max(counter[i+1][j],counter[i][j+1]) + return counter[m][n] +def match(word,tag): + word=modify(word) + tag=modify(tag) + sq=lcs(word,tag) + return(float(float(sq)/float(max(len(word),len(tag))))) +#this function locates expression with MINIMUM LENGTH ,similar to tag in fstring having probability atleast p0 +#no restriction on arguments passed can be with or without spaces (as the match function matches the string after modifng it) +def locate(tag,fstring,p0): #return null for Address of applicant + if(tag.find("Address")!=-1): + return (-1,"") +# if(tag.find("International Application")!=-1): +# return (-1,"") +# return (-1,"") + tag=modify(tag) + string="" + for x in fstring: #for converting fstring(which can be a list ) into string + string+=x+" " + #print(tag+" "+string) + p=0.0 + start=0 + end=0 + i=0 + while i p): + p=arr + start=i + end=j + elif(p==arr): + p=arr + if(end-start>=j-i): + start=i + end=j + j+=1 + i+=1 + #print(tag+" "+string[start:end+1]+" "+str(p)) + if (start==0 and end==0) or (p= probability: + arr.append(index) + index = index+1 + return arr; + +def searchtag(words,tag): #returns pair of starting and ending index of a tag in words + tag = tag.lower() + query = tag.split()#query(list) + arr = matches(words,query[0]) #returns list containing indexes of occurence of query[0] in words + index = -1 #start index variable + index1 = -1 #end index variable +# print(query) +# print(words) +# print(arr) + for a in arr: + i=1 + flag = True + while i0): + if(val[0]==':'): + val = val[1:] + if(len(val)>0): + data[indexvalues[p].tag] = val.strip() + else : + data[indexvalues[p].tag] = "NA" + else : + data[indexvalues[p].tag] = "NA" + flag[indexvalues[p].tag]=1 + p = p+1 + val = ' '.join(words[indexvalues[p].end+1:]) + if(len(val)>0 and val[0]==':'): + val = val[1:] + if(bool(val.lower().find("continued")!=-1)&bool(val.lower().find("to")!=-1)&bool(val.lower().find("part")!=-1)): + position = val.lower().find("continued") + val = val[:position] + data[indexvalues[p].tag] = val.strip() + flag[indexvalues[p].tag] = 1 + if(flag[pages_tag]==0): + data[pages_tag] = "NA" + if(flag[claims_tag]==0): + data[claims_tag] = "NA" + for tag in data: + if(bool(data[tag]=="")|bool(data[tag]=="na")|bool(data[tag]=="n.a.")|bool(data[tag].lower()=="nil")): + data[tag]="NA" + if(is_ascii(data[tag])==False): + data[tag] = transformunicode(data[tag]) + data[tag] = formatval(data[tag]) + #if(flag["(21) Application"]!=1): + data["(21) Application"] = formatdocumentno(data["(21) Application"]) + #if(flag["(31) Priority Document"]!=1): + data["(31) Priority Document"] = formatdocumentno(data["(31) Priority Document"]) + #if(flag["(87) International Publication"]!=1): + data["(87) International Publication"] = formatdocumentno(data["(87) International Publication"]) + #if(flag["(61) Patent Addition Application"]): + data["(61) Patent Addition Application"] = formatfilingno(data["(61) Patent Addition Application"],"(61) Patent Addition Application") + #if(flag["(62) Divisional Application"]!=1): + data["(62) Divisional Application"] = formatfilingno(data["(62) Divisional Application"],"(62) Divisional Application") + #if(flag["(86) International Application"]!=1): + data["(86) International Application"] = formatfilingno(data["(86) International Application"],"(86) International Application") + data["(54) Title Invention"] = formatstring(data["(54) Title Invention"]) + # if(flag["(57) Abstract"]!=1): + data["(57) Abstract"] = formatabstract(data["(57) Abstract"]) + data["(32) Priority Date"] = formatdate(data["(32) Priority Date"]) + data["(43) Publication Date"] = formatdate(data["(43) Publication Date"]) + data["(22) Date filing Application"] = formatdate(data["(22) Date filing Application"]) + #data["(87) WIPO"]=formatdocumentno(data["(87) WIPO"]) + #if(data["(87) International Publication"]=="NA"): #assuming WIPO=International publication + data["(87) International Publication"]=formatdocumentno(data["(87) International Publication"]) + #if(flag["(21) Application"]!=1): + universal.data["Application No."] = data["(21) Application"] + #if(flag["(22) Date filing Application"]!=1): + universal.data["Date of filing of Application"] = data["(22) Date filing Application"] + #if(flag["(43) Publication Date"]!=1): + universal.data["Publication Date"] = data["(43) Publication Date"] + #if(flag["(71) Name Applicant"]!=1): + universal.data["Name of Applicant"] = formatstring(data["(71) Name Applicant"]) +" Address of Applicant : " + formatstring(data["Address Applicant"]) + #if(flag["(54) Title invention"]!=1): + universal.data["Title of the invention"] = data["(54) Title Invention"] + #if(flag["(72) Name Inventor"]!=1): + universal.data["Name of Inventor"] = formatstring(data["(72) Name Inventor"]) + #if(flag["(57) Abstract"]!=1): + universal.data["Abstract"] = data["(57) Abstract"] + #if(flag[pages_tag]!=1): + universal.data["No. of Pages"] = data[pages_tag] + #if(flag[claims_tag]!=1): + universal.data["No. of Claims"] = data[claims_tag] + #if(flag["(51) International classification"]!=1): + universal.data["International classification"] = data["(51) International classification"] + #if(flag["(31) Priority Document"]!=1): + universal.data["Priority Document No"] = data["(31) Priority Document"] + #if(flag["(32) Priority Date"]!=1): + universal.data["Priority Date"] = data["(32) Priority Date"] + #if(flag["(33) Name priority country"]!=1): + universal.data["Name of priority country"] = data["(33) Name priority country"] + #if(flag["(86) International Application"]!=1): + universal.data["International Application No"] = data["(86) International Application"] + # if(flag["(86) International Application Filing Date"]!=1): + universal.data["IAFiling Date"] = data["(86) International Application Filing Date"] + #if(flag["(87) International Publication"]!=1): + universal.data["International Publication No"] = data["(87) International Publication"] + #if(flag["(61) Patent Addition Application"]!=1): + universal.data["Patent of Addition to Application Number"] = data["(61) Patent Addition Application"] + # if(flag["(61) Patent Addition Application Filing Date"]!=1): + universal.data["IBFiling Date"] = data["(61) Patent Addition Application Filing Date"] + #if(flag["(62) Divisional Application"]!=1): + universal.data["Divisional to Application Number"] = data["(62) Divisional Application"] + # if(flag["(62) Divisional Application Filing Date"]!=1): + universal.data["ICFiling Date"] = data["(62) Divisional Application Filing Date"] + +def getdetails(new_patent):#new_patent must have spaces b/w consecutive words + patent="" + data.clear() + flag.clear() + del indexvalues[:] + for j in range (0,len(new_patent)): + if(new_patent[j]=='('): + if(new_patent[j+1].isdigit()): + patent+=" (" + elif(new_patent[j]==')'): + if(new_patent[j-1].isdigit()): + patent+=") " + else: + patent+=new_patent[j] + temp_patent = patent #temp_patent is the original string with capital letters + patent = patent.lower() + words = burst(patent)#word(list) contains lower letter string + if(check(words)==True):#check checks if pdf has patent + tagindex=0 + for tag in Tags: + flag[tag]=0#flag[tag]=1 implies value to tag has been assigned + pages,claims = getnoofpagesandclaims(words) #here we are going to give values to no of pages and no of claims tags and insert the starting and ending index in indexvalues + if(bool(pages.start!=-1) & bool(pages.end!=-1)): + indexvalues.append(Tag(pages_tag,pages.start,pages.end))#flag has been asigned 1 already in getnoofpagesandclaims + if(bool(claims.start!=-1) & bool(claims.end!=-1)): + indexvalues.append(Tag(claims_tag,claims.start,claims.end))#flag has been asigned 1 already in getnoofpagesandclaims + + while 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 WI{aVaKgFIbe6@7uR1<>29)AIF?r7Nn literal 0 HcmV?d00001 diff --git a/Linux_sqlite_version/main.py b/Linux_sqlite_version/main.py new file mode 100644 index 0000000..0bd3a06 --- /dev/null +++ b/Linux_sqlite_version/main.py @@ -0,0 +1,73 @@ +import convert +import universal +import commands +import excelwriter +import Parser +import logwriter +import sqlitewriter +from PyPDF2 import PdfFileWriter, PdfFileReader +import os +import shutil + +def burstpdf(): + file = open("copy"+universal.filename, 'rb') + infile = PdfFileReader(file) + no_of_pages = infile.getNumPages() + for i in range(infile.getNumPages()): + p = infile.getPage(i) + outfile = PdfFileWriter() + outfile.addPage(p) + with open(universal.pdf_folder+'/%d.pdf' % i, 'wb') as f: + outfile.write(f) + file.close() + return no_of_pages +##def run_command(string,flag=0): +## if commands.getstatusoutput(string)[0]==1: +## raise NameError("ERROR IN Commands.getstatusoutput "+string) +## if flag==1: +## return commands.getstatusoutput(string)[1] +def initial(): + #run_command("mkdir "+universal.pdf_folder) + try: + os.mkdir(universal.pdf_folder) + os.mkdir(universal.tag_folder) + except Exception as e: + shutil.rmtree(universal.pdf_folder) + shutil.rmtree(universal.tag_folder) + os.mkdir(universal.pdf_folder) + os.mkdir(universal.tag_folder) + temp=universal.filename #assigning filename to temp + no_of_pages=burstpdf() + logwriter.logwrite("\n********"+"\n"+str(temp)+"\n*************\n") + if no_of_pages==0: + logwriter.logwrite("No pages in this pdf\n") + logwriter.logwrite("********"+"\n"+str(temp)+"\n*************\n") + return 0 + i=0 + excelwriter.init() + while i~MBo`^{ATYP+@1|2~~i`8fFh7R&q! z65^*QA@c8dMZVg|9rB$GUm?G;;j83VH++r!+J>)_Ul-n?WQ)=U`3*{&AP&j_|l5U_4r8=!D za;8dlOAbJ_Msb5yIIl>-7dvWlQcykYA}9F!<$!K*7Md=t>Y_P9Iet97_>M*hBW|%V zwQ|b52eyj9C;8&qa_+_0a7O)4!)J?dDx%AAZ<}*ty?miF+XS=BqMvkOg2Xnko1#)# zkZMn{Vhd!Z?O>S>gPAtS5q5(NA~uab7JFbhGom02Szul8@Od`P6BJlZU2^q>n zJyw@E*rBas7iGe-%Pc?3r)LXs$#Fy|4=jq0d}&3GCDR@V2{B)S>!0VT?$4tn(ZyKn z{;@W5n=ksq;}@rWbCDo~GtM>2vwj*x*)x=ilO8V%V-YYH#~gx?I#kMBoe|K&fvfa z7I2KViFX8USFaeOur>!228ta?(g^0PL3Wqo-8C%H^;`56pY2e*$Fi_N^9mKO#oE4T z*$*gQbHj_*gx?5<*wg`CMGqYP@oq2%H)$9K}6;e$RIxw#2-c3kv)&h z5di5LhUdmgB)!1X&2Wdg8@Vga-m&X-p^E&_@$3Fg=V4TM+;N@^12$!Y*``@J?jNou zdSTHe(wOFaX`@8gBDICq9yhPYeIf%S$!F5th4j*9hf#^dY#}p5!(dV>aRWtJWTl%Y zd4`6xVtg1BrkoaIJ&Q6K4@sUcfH9bo_I+SunglcPc$pXTah}h;9jNu#yo?Ji=dDf` z-X3J$K7Yk}&w0VQbNEq^JOOJ4Y|^Qyjyk}w=*WA3q0v;2F+kd&RaM9E*v0EQuG$Ch zs)lMhB9T3Rch!z+I~}K^dYp&%5fi>8$#IgWX^@4+J7V$2OxU~k8OXYL*BEloWfaTk q_W0Vp$4vO5yr&@d*$ekxBlGJt50{Dlh9M~ox literal 0 HcmV?d00001 diff --git a/Linux_sqlite_version/merge.py b/Linux_sqlite_version/merge.py new file mode 100644 index 0000000..9db0d4a --- /dev/null +++ b/Linux_sqlite_version/merge.py @@ -0,0 +1,123 @@ +#first write before the loop - init() +#then use - readfile() +#after ending of loop write outside the loop - universal.workbook.close() + +import openpyxl +from openpyxl import Workbook +import universal + +def init(): #for initializing the xlsx file + fname = (str)input("Enter year name(without extension) : ") + universal.workbook = xlsxwriter.Workbook(fname+".xlsx") + universal.worksheet = universal.workbook.add_worksheet() + headformat = universal.workbook.add_format() + headformat.set_bold() + headformat.set_text_wrap() + universal.worksheet.set_row(0, 60) + universal.worksheet.set_column(0,3,11) + universal.worksheet.set_column(4,4,30) + universal.worksheet.set_column(5,5,20) + universal.worksheet.set_column(6,6,15) + universal.worksheet.set_column(7,8,7) + universal.worksheet.set_column(9,9,12) + universal.worksheet.set_column(10,10,13) + universal.worksheet.set_column(11,12,9) + universal.worksheet.set_column(13,13,15) + universal.worksheet.set_column(14,14,12) + universal.worksheet.set_column(15,17,14) + universal.worksheet.set_column(18,18,11) + universal.worksheet.set_column(19,19,14) + + universal.worksheet.write('A1',"Application No.",headformat) + universal.worksheet.write('B1',"Date of filling of Application",headformat) + universal.worksheet.write('C1',"Publication Date",headformat) + universal.worksheet.write('D1',"Name of Applicant",headformat) + universal.worksheet.write('E1',"Title of Invention",headformat) + universal.worksheet.write('F1',"Name of Inventor(s)",headformat) + universal.worksheet.write('G1',"Abstract",headformat) + universal.worksheet.write('H1',"No. of pages",headformat) + universal.worksheet.write('I1',"No. of claims",headformat) + universal.worksheet.write('J1',"International classification",headformat) + universal.worksheet.write('K1',"Priority Document No.",headformat) + universal.worksheet.write('L1',"Priority Date",headformat) + universal.worksheet.write('M1',"Name of priority country",headformat) + universal.worksheet.write('N1',"International Application No.",headformat) + universal.worksheet.write('O1',"International Application Filling Date",headformat) + universal.worksheet.write('P1',"International Publication No.",headformat) + universal.worksheet.write('Q1',"Patent of addition to Application No.",headformat) + universal.worksheet.write('R1',"Patent of addition to Application No. Filling Date",headformat) + universal.worksheet.write('S1',"Divisional to Application No.",headformat) + universal.worksheet.write('T1',"Divisional to Application No. Filling Date",headformat) + universal.row = 1 + universal.date_format = universal.workbook.add_format({'num_format':'dd mm yyyy'}) + #universal.workbook.close() + + +#inside for loop +def loop() : + universal.worksheet.write(universal.row, 0, universal.data["Application No."]) + universal.worksheet.write(universal.row, 1, universal.data["Date of filing of Application"], universal.date_format) + universal.worksheet.write(universal.row, 2, universal.data["Publication Date"], universal.date_format) + universal.worksheet.write(universal.row, 3, universal.data["Name of Applicant"]) + universal.worksheet.write(universal.row, 4, universal.data["Title of the invention"]) + universal.worksheet.write(universal.row, 5, universal.data["Name of Inventor"]) + universal.worksheet.write(universal.row, 6, universal.data["Abstract"]) + if(universal.data["No. of Pages"].upper()!="NA"): + universal.worksheet.write(universal.row, 7, int(universal.data["No. of Pages"])) + else: + universal.worksheet.write(universal.row, 7, universal.data["No. of Pages"].upper()) + if(universal.data["No. of Claims"].upper()!="NA"): + universal.worksheet.write(universal.row, 8, int(universal.data["No. of Claims"])) + else: + universal.worksheet.write(universal.row, 8, universal.data["No. of Claims"].upper()) + universal.worksheet.write(universal.row, 9, universal.data["International classification"]) + universal.worksheet.write(universal.row, 10, universal.data["Priority Document No"]) + if(universal.data["Priority Date"] == "NA"): + universal.worksheet.write(universal.row, 11, universal.data["Priority Date"]) + else: + universal.worksheet.write(universal.row, 11, universal.data["Priority Date"],universal.date_format) + universal.worksheet.write(universal.row, 12, universal.data["Name of priority country"]) + universal.worksheet.write(universal.row, 13, universal.data["International Application No"]) + if(universal.data["IAFiling Date"] == "NA"): + universal.worksheet.write(universal.row, 14, universal.data["IAFiling Date"]) + else: + universal.worksheet.write(universal.row, 14, universal.data["IAFiling Date"],universal.date_format) + universal.worksheet.write(universal.row, 15, universal.data["International Publication No"]) + universal.worksheet.write(universal.row, 16, universal.data["Patent of Addition to Application Number"]) + if(universal.data["IBFiling Date"] == "NA"): + universal.worksheet.write(universal.row, 17, universal.data["IBFiling Date"]) + else: + universal.worksheet.write(universal.row, 17, universal.data["IBFiling Date"],universal.date_format) + universal.worksheet.write(universal.row, 18, universal.data["Divisional to Application Number"]) + if(universal.data["ICFiling Date"] == "NA"): + universal.worksheet.write(universal.row, 19, universal.data["ICFiling Date"]) + else: + universal.worksheet.write(universal.row, 19, universal.data["ICFiling Date"],universal.date_format) + universal.row = universal.row + 1 + +def readfile(): + wb = load_workbook(universal.filename) + ws = wb.active + for row in range(1,universal.worksheet.rows): + universal.data["Application No."] = ws['A'+str(row)] + universal.data["Date of filing of Application"] = ws['B'+str(row)] + universal.data["Publication Date"] = ws['C'+str(row)] + universal.data["Name of Applicant" = ws['D'+str(row)] + universal.data["Title of the invention"] = ws['E'+str(row)] + universal.data["Name of Inventor"] = ws['F'+str(row)] + universal.data["Abstract"] = ws['G'+str(row)] + universal.data["No. of Pages"] = ws['H'+str(row)] + universal.data["No. of Claims"] = ws['I'+str(row)] + universal.data["International classification"] = ws['J'+str(row)] + universal.data["Priority Document No"] = ws['K'+str(row)] + universal.data["Priority Date"] = ws['L'+str(row)] + universal.data["Name of priority country"] = ws['M'+str(row)] + universal.data["International Application No"] = ws['N'+str(row)] + universal.data["IAFiling Date"] = ws['O'+str(row)] + universal.data["International Publication No"] = ws['P'+str(row)] + universal.data["Patent of Addition to Application Number"] = ws['Q'+str(row)] + universal.data["IBFiling Date"] = ws['R'+str(row)] + universal.data["Divisional to Application Number"] = ws['S'+str(row)] + universal.data["ICFiling Date"] = ws['T'+str(row)] + loop() + wb.close() diff --git a/Linux_sqlite_version/need.py b/Linux_sqlite_version/need.py new file mode 100644 index 0000000..c113193 --- /dev/null +++ b/Linux_sqlite_version/need.py @@ -0,0 +1,56 @@ +import requests +import os +from urllib import url2pathname + +class LocalFileAdapter(requests.adapters.BaseAdapter): + """Protocol Adapter to allow Requests to GET file:// URLs + + @todo: Properly handle non-empty hostname portions. + """ + + @staticmethod + def _chkpath(method, path): + """Return an HTTP status for the given filesystem path.""" + if method.lower() in ('put', 'delete'): + return 501, "Not Implemented" # TODO + elif method.lower() not in ('get', 'head'): + return 405, "Method Not Allowed" + elif os.path.isdir(path): + return 400, "Path Not A File" + elif not os.path.isfile(path): + return 404, "File Not Found" + elif not os.access(path, os.R_OK): + return 403, "Access Denied" + else: + return 200, "OK" + + def send(self, req, **kwargs): # pylint: disable=unused-argument + """Return the file specified by the given request + + @type req: C{PreparedRequest} + @todo: Should I bother filling `response.headers` and processing + If-Modified-Since and friends using `os.stat`? + """ + path = os.path.normcase(os.path.normpath(url2pathname(req.path_url))) + response = requests.Response() + + response.status_code, response.reason = self._chkpath(req.method, path) + if response.status_code == 200 and req.method.lower() != 'head': + try: + response.raw = open(path, 'rb') + except (OSError, IOError), err: + response.status_code = 500 + response.reason = str(err) + + if isinstance(req.url, bytes): + response.url = req.url.decode('utf-8') + else: + response.url = req.url + + response.request = req + response.connection = self + + return response + + def close(self): + pass diff --git a/Linux_sqlite_version/need.pyc b/Linux_sqlite_version/need.pyc new file mode 100644 index 0000000000000000000000000000000000000000..8278898001efbbdf1a9bbc79d49f2e527433601f GIT binary patch literal 2600 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 literal 0 HcmV?d00001 diff --git a/Linux_sqlite_version/test.py b/Linux_sqlite_version/test.py new file mode 100644 index 0000000..39e184f --- /dev/null +++ b/Linux_sqlite_version/test.py @@ -0,0 +1,55 @@ +import universal +from Tkinter import * +import commands +import os +def run_command(string): + #print(string) + x=commands.getstatusoutput(string) + if x[0]==1: + raise NameError("ERROR IN Commands.getstatusoutput "+string) + return(x[1]) + +def fetch(entries): + for entry in entries: + field = entry[0] + text = entry[1].get() +def makeform(root): + entries = [] + for field in universal.data: + row = Frame(root) + lab = Label(row, text=field, anchor='w',height=10) + ent = Entry(row,) + row.pack(side=TOP, fill=X) + lab.pack(side=LEFT) + ent.pack(side=RIGHT, expand=YES) + try: + ent.insert(0,universal.data[field]) + except : + zzz=1 + entries.append((field, ent)) + return entries +def fopen(tempfile): + _file=open(universal.logfile+".txt","r").readlines() + _page_number=0 + x="" + x=x[:len(x)-3] + x=x+"pdf" + for z in _file: + if(z.find("on page")!=-1): + _page_number=int(z[z.find("page")+5:]) + #run_command("pdftk /media/killerbee/desktop/\"all patent files downloded\"/\"patent 2011\"/\""+x+"\" cat "+str(_page_number)+"-"+str(_page_number)+" output 3/\""+x+"\"") + run_command("evince --page-label="+str(_page_number)+" "+tempfile) + #print("evince --page-label="+str(_page_number)+" "+tempfile) + #print(x) + #x=input("en") +def init(tempfile): + #fopen(tempfile) + root = Tk() + ents = makeform(root) + root.bind('', (lambda event, e=ents: fetch(e))) + b1 = Button(root, text='Show', + command=(lambda e=ents: fetch(e))) + b1.pack(side=LEFT, padx=5, pady=5) + b2 = Button(root, text='Quit', command=root.quit) + b2.pack(side=LEFT, padx=5, pady=5) + root.mainloop() diff --git a/Linux_sqlite_version/test.pyc b/Linux_sqlite_version/test.pyc new file mode 100644 index 0000000000000000000000000000000000000000..f956352e0f4c3b9ecef7fde192a5633b6fa9229b GIT binary patch literal 2791 zcmb_eUr!rH5TCsRgAEkaq;Vo>V?~N&RRSwSs@jU8s{BbKB~E%qf+8X7>|Mjz=R0$| zCI-Pv$)~CM-1mNgewjY@q5aLAUD8&4X)x?~c6VlX{`_Xv{%;GV$1A@dv}yeD@clK0 zZGve0D~gE@bKav^(cXB~qeE{Z;nSf{+NZY=ogzIY%rxm~VG5)R!pxAK5oVUpZB%D* zNAw3i^{N8vn0(r1%4YZ&TNw6B5J%KibV+or=n9PD6CP-fdLCu#m6Iz9*ej| zO#UI}idd_MeY2BgX;x*kT>-?pEJ}{Wp-~lc5@Mf%tDU5MQ|m=>Y_gUywQXa2E*;cf zZ|@$|>}ec1(>ybojnbs%jCE^+b2kUQY?w61rc7gM*);MN)sniSBxdaAUoop;f}0VM z?W4*&5xepxf$1WaL{~nY&d@$`+7OT52~?gFJ`qk!6x|FaCV_9Ti;ZCZT)0kTV(r)j zXGZQ8T;}6D#>}8SCC_PqGT-HAFOr@mR}!i7 zW#WxF(!~j6fx&B!)PAx6Eu~9zRiH%C0U+F+XKSF)@%V0ax5YfV&Qfqy?ntSZ1)gBqP!@(p0g_r=AW4kkNwfYEc)J2Zs({*=SD#?q z19wmPY8j)X$~nk5Dm(;aKY>9Hg6~~`M^PCVLRz~3jX+QP3^+gv1qA@X&m2!c*!@br z21J#?jhbA6+eiBZ+>KEMh@qj)QqQOCCFdOLm8krX(FshWiOz9j0&=iY*7H;b z$hq&S)0c$*eJN(ncinRC*4)TR&N6`myg(=9pi6`Yx??#rX;K-4$41(*WJzZ1zr71$ z&Z4AkDyyr!yoxlL_$xWIQe{wyMv62CcX-AJ#_2K8XasYa33VJL=o)-)jO?;uohZ?= z5G5|)3YQ65XO*v&-s?<%AgAz3Q#kGiO}3($4ErsU1tQFy{WhS&hjrMIhhXf7Af#4+ zl!CeoWGtwU)W=?%FJnP=Q_%4v7{oP)0>Xj>=h@;S7rf+M=PlOJ3*aX<0GYf6@g5#X z*70(vbkUm7dC-OMQlh_g4@c+!x!Ab+I;*3Mr#j)6JjTIGnCTdLHJIPAA{xcP+5z@WSlGGZDh z=o1|E@k1z?;JexMznLvR6#i{C%Lbo=yuYo%7dYlAMs6ebm2utZQ6!jTiwB`Tm*ww< zk&_=hc$Cmad%@$0LW|3Q;s4FhxiksxgAJA^yQk2TQs{?K5~t}viX&KOp~^%EDX?;G z>q-8#{{H@n)lm|;Ros$Sf>)GYxu_OV6U!J<`!^-O*FzxLEw)PamNm82|tP literal 0 HcmV?d00001 diff --git a/Linux_sqlite_version/universal.py b/Linux_sqlite_version/universal.py new file mode 100644 index 0000000..c064946 --- /dev/null +++ b/Linux_sqlite_version/universal.py @@ -0,0 +1,41 @@ +#file containing global variables +import os +def init(): + global tag #records the name of the keys in data dictionary + tag=["Application No.","Date of filing of Application","Publication Date","Name of Applicant","Title of the invention","Name of Inventor","Abstract","No. of Pages","No. of Claims","International classification","Priority Document No","Priority Date","Name of priority country","International Publication No","International Application No","IAFiling Date","Patent of Addition to Application Number","IBFiling Date","Divisional to Application Number","ICFiling Date"] + global dbname + dbname = "patents" + global tablename + tablename = "patent_tables" + global host + host = "127.0.0.1" + global user + user = "root" + global password + password = "123" + global data + data={} + global tree + global con +# global test +# test=[] + global datastring + datastring="" + global filename #filename of pdf file containing patents + filename="15" + global current_dir + current_dir=os.getcwd() #In future use in-built python function which is platform independent. + global pdf_folder #name of folder containing pdf burst files + pdf_folder="3" + global tag_folder #name of folder containing tag-html file + tag_folder="tag_folder" + global workbook + global worksheet + global date_format + global row #row counter + global flag #Flag for process of extraction has started or not + flag=0 + global logfile#filename is set to universal.logfile.txt + logfile="" + global logflag #for knowing whether something was written to log file or not + logflag = 0 diff --git a/Linux_sqlite_version/universal.pyc b/Linux_sqlite_version/universal.pyc new file mode 100644 index 0000000000000000000000000000000000000000..b4e6e979b8e9ec295d1543e88205d950b02a789a GIT binary patch literal 1285 zcmbtU&u-Mood ze5fzst^S3p`+%&$bep)@W2C0fr|eK(b2$JWol0YL5ii_DQUeCKBL$Mgp|YNtDU2(dP<%g&*VxB*1@2 z0uo0gpn^yU!G;#0fEP%z>o&2Trm4}f@Y*I(*EZZCd~M-XWQWmE8=Z{UT8MI6i0I{m z2NXxUZ6*}s0GkCT-tEHsQF{~I{#r#kxm5{k1(th2CwOh<%ZNW6IG>5wyDC%K2Fv%v zNIADLcbprc$IczV(@DI_l2Cv!QEY^BdN`}d@u~DOZ8PmBQQOA(81kqyaLr$E1$)ds zt029H#5PZSHu;OtVh6zYXC@0RyBF-7UQ9b0T2|-Wpp1mL!&2&S2;MGsJL=}+fyzR@ zowG%F1bAEDYKLy3@PEM07hrxBur#PT&kdd0eJ=(EEnb7Cb^N;V5_iilW0zU$JFK99zB`-A;FZFQpuh&E0>cZt9_}nfKKIbmfs~0 zSfCyn6@wlX*B K9m_ags)gUPN<}aL literal 0 HcmV?d00001 diff --git a/download_patents_script/patent_new_links.txt b/download_patents_script/patent_new_links.txt new file mode 100644 index 0000000..3c77eff --- /dev/null +++ b/download_patents_script/patent_new_links.txt @@ -0,0 +1,568 @@ +21 April 2017 +Part1 (7.14 MB) http://www.ipindia.nic.in/writereaddata/Portal/IPOJournal/1_461_1/Part1.pdf +Part2 (4.90 MB) http://www.ipindia.nic.in/writereaddata/Portal/IPOJournal/1_461_1/Part1.pdf +Part3_Designs (4.63 MB) http://www.ipindia.nic.in/writereaddata/Portal/IPOJournal/1_461_1/Part1.pdf +------- +14 April 2017 +part1 (4.94 MB) http://www.ipindia.nic.in/writereaddata/Portal/IPOJournal/1_461_1/Part2.pdf +part2 (3.17 MB) http://www.ipindia.nic.in/writereaddata/Portal/IPOJournal/1_461_1/Part2.pdf +part3 (6.56 MB) http://www.ipindia.nic.in/writereaddata/Portal/IPOJournal/1_461_1/Part2.pdf +------- +7 April 2017 +Part1 (5.16 MB) http://www.ipindia.nic.in/writereaddata/Portal/IPOJournal/1_461_1/Part3_Designs.pdf +Part2 (2.07 MB) http://www.ipindia.nic.in/writereaddata/Portal/IPOJournal/1_461_1/Part3_Designs.pdf +Part3_Designs (7.15 MB) http://www.ipindia.nic.in/writereaddata/Portal/IPOJournal/1_461_1/Part3_Designs.pdf +------- +31 March 2017 +Part-1 (6.47 MB) http://www.ipindia.nic.in/writereaddata/Portal/IPOJournal/1_457_1/Part1.pdf +Part-2 (2.04 MB) http://www.ipindia.nic.in/writereaddata/Portal/IPOJournal/1_457_1/Part1.pdf +Part-3 (8.78 MB) http://www.ipindia.nic.in/writereaddata/Portal/IPOJournal/1_457_1/Part1.pdf +------- +24 March 2017 +Part1 (5.20 MB) http://www.ipindia.nic.in/writereaddata/Portal/IPOJournal/1_457_1/Part2.pdf +Part2 (1.98 MB) http://www.ipindia.nic.in/writereaddata/Portal/IPOJournal/1_457_1/Part2.pdf +Part3_Designs (8.30 MB) http://www.ipindia.nic.in/writereaddata/Portal/IPOJournal/1_457_1/Part2.pdf +------- +17 March 2017 +Part1 (3.61 MB) http://www.ipindia.nic.in/writereaddata/Portal/IPOJournal/1_457_1/Part3_Designs.pdf +Part2 (6.28 MB) http://www.ipindia.nic.in/writereaddata/Portal/IPOJournal/1_457_1/Part3_Designs.pdf +------- +10 March 2017 +Part1 (7.28 MB) http://www.ipindia.nic.in/writereaddata/Portal/IPOJournal/1_454_1/Part-1.pdf +Part2_Designs (5.77 MB) http://www.ipindia.nic.in/writereaddata/Portal/IPOJournal/1_454_1/Part-1.pdf +------- +3 March 2017 +Part1 (7.12 MB) http://www.ipindia.nic.in/writereaddata/Portal/IPOJournal/1_454_1/Part-2.pdf +Part2_Designs (5.58 MB) http://www.ipindia.nic.in/writereaddata/Portal/IPOJournal/1_454_1/Part-2.pdf +------- +24 February 2017 +Part1 (6.10 MB) http://www.ipindia.nic.in/writereaddata/Portal/IPOJournal/1_454_1/Part-3.pdf +Part2_Designs (4.48 MB) http://www.ipindia.nic.in/writereaddata/Portal/IPOJournal/1_454_1/Part-3.pdf +------- +17 February 2017 +Part1 (5.87 MB) http://www.ipindia.nic.in/writereaddata/Portal/IPOJournal/1_452_1/Part1.pdf +Part2 (4.10 MB) http://www.ipindia.nic.in/writereaddata/Portal/IPOJournal/1_452_1/Part1.pdf +------- +10 February 2017 +Part1 (6.17 MB) http://www.ipindia.nic.in/writereaddata/Portal/IPOJournal/1_452_1/Part2.pdf +Part2 (1.27 MB) http://www.ipindia.nic.in/writereaddata/Portal/IPOJournal/1_452_1/Part2.pdf +PART3 (4.06 MB) http://www.ipindia.nic.in/writereaddata/Portal/IPOJournal/1_452_1/Part2.pdf +------- +03 February 2017 +Part1 (5.17 MB) http://www.ipindia.nic.in/writereaddata/Portal/IPOJournal/1_452_1/Part3_Designs.pdf +part2_Designs (4.85 MB) http://www.ipindia.nic.in/writereaddata/Portal/IPOJournal/1_452_1/Part3_Designs.pdf +------- +27 Janurary 2017 +Part1 (4.27 MB) http://www.ipindia.nic.in/writereaddata/Portal/IPOJournal/1_450_1/Part1.pdf +Part2_Designs (3.91 MB) http://www.ipindia.nic.in/writereaddata/Portal/IPOJournal/1_450_1/Part1.pdf +------- +20 January 2017 +Part1 (6.44 MB) http://www.ipindia.nic.in/writereaddata/Portal/IPOJournal/1_450_1/Part2.pdf +Part2_Designs (4.34 MB) http://www.ipindia.nic.in/writereaddata/Portal/IPOJournal/1_450_1/Part2.pdf +------- +13 January 2017 +Part1 (7.18 MB) http://www.ipindia.nic.in/writereaddata/Portal/IPOJournal/1_448_1/Part1.pdf +Part2_Designs (4.16 MB) http://www.ipindia.nic.in/writereaddata/Portal/IPOJournal/1_448_1/Part1.pdf +------- +6 January 2017 +Part1 (5.81 MB) http://www.ipindia.nic.in/writereaddata/Portal/IPOJournal/1_448_1/Part2_Designs.pdf +Part2_Designs (4.62 MB) http://www.ipindia.nic.in/writereaddata/Portal/IPOJournal/1_448_1/Part2_Designs.pdf +------- +30 December 2016 +Part1 (6.04 MB) http://www.ipindia.nic.in/writereaddata/Portal/IPOJournal/1_446_1/Part1.pdf +Part2 (3.46 MB) http://www.ipindia.nic.in/writereaddata/Portal/IPOJournal/1_446_1/Part1.pdf +Part3_Designs (3.94 MB) http://www.ipindia.nic.in/writereaddata/Portal/IPOJournal/1_446_1/Part1.pdf +------- +23 December 2016 +Part1 (4.76 MB) http://www.ipindia.nic.in/writereaddata/Portal/IPOJournal/1_446_1/Part2_Designs.pdf +Part2_Designs (4.19 MB) http://www.ipindia.nic.in/writereaddata/Portal/IPOJournal/1_446_1/Part2_Designs.pdf +------- +16 December 2016 +Part1 (3.94 MB) http://www.ipindia.nic.in/writereaddata/Portal/IPOJournal/1_444_1/Part1.pdf +Part2_Designs (3.67 MB) http://www.ipindia.nic.in/writereaddata/Portal/IPOJournal/1_444_1/Part1.pdf +------- +9 December 2016 +Part1 (5.72 MB) http://www.ipindia.nic.in/writereaddata/Portal/IPOJournal/1_444_1/Part2_Designs.pdf +Part2_Designs (4.07 MB) http://www.ipindia.nic.in/writereaddata/Portal/IPOJournal/1_444_1/Part2_Designs.pdf +------- +2 December 2016 +Part1 (3.72 MB) http://www.ipindia.nic.in/writereaddata/Portal/IPOJournal/1_442_1/Part1.pdf +Part2_Designs (4.40 MB) http://www.ipindia.nic.in/writereaddata/Portal/IPOJournal/1_442_1/Part1.pdf +------- +25 November 2016 +Part1 (8.00 MB) http://www.ipindia.nic.in/writereaddata/Portal/IPOJournal/1_442_1/Part2.pdf +Part2_Designs (4.84 MB) http://www.ipindia.nic.in/writereaddata/Portal/IPOJournal/1_442_1/Part2.pdf +------- +18 November 2016 +Part1 (3.95 MB) http://www.ipindia.nic.in/writereaddata/Portal/IPOJournal/1_440_1/Part1.pdf +Part2_Designs (4.56 MB) http://www.ipindia.nic.in/writereaddata/Portal/IPOJournal/1_440_1/Part1.pdf +------- +11 November 2016 +Part1 (6.85 MB) http://www.ipindia.nic.in/writereaddata/Portal/IPOJournal/1_440_1/Part2.pdf +Part2_Designs (4.46 MB) http://www.ipindia.nic.in/writereaddata/Portal/IPOJournal/1_440_1/Part2.pdf +------- +4 November 2016 +Part1 (4.81 MB) http://www.ipindia.nic.in/writereaddata/Portal/IPOJournal/1_438_1/Part1.pdf +Part2_Designs (4.34 MB) http://www.ipindia.nic.in/writereaddata/Portal/IPOJournal/1_438_1/Part1.pdf +------- +28 October 2016 +Part1 (4.12 MB) http://www.ipindia.nic.in/writereaddata/Portal/IPOJournal/1_435_1/Part1.pdf +Part2_Designs (4.62 MB) http://www.ipindia.nic.in/writereaddata/Portal/IPOJournal/1_435_1/Part1.pdf +------- +21 October 2016 +Part1 (4.21 MB) http://www.ipindia.nic.in/writereaddata/Portal/IPOJournal/1_435_1/Part2_Designs.pdf +Part2_Designs (4.64 MB) http://www.ipindia.nic.in/writereaddata/Portal/IPOJournal/1_435_1/Part2_Designs.pdf +------- +14 October 2016 +Part1 (2.54 MB) http://www.ipindia.nic.in/writereaddata/Portal/IPOJournal/1_433_1/Part1.pdf +Part2_Designs (4.47 MB) http://www.ipindia.nic.in/writereaddata/Portal/IPOJournal/1_433_1/Part1.pdf +------- +07 October 2016 +Part1_1_ (7.11 MB) http://www.ipindia.nic.in/writereaddata/Portal/IPOJournal/1_433_1/Part2_Designs.pdf +Part2Designs (5.12 MB) http://www.ipindia.nic.in/writereaddata/Portal/IPOJournal/1_433_1/Part2_Designs.pdf +------- +30 September 2016 +Part1 (7.35 MB) http://www.ipindia.nic.in/writereaddata/Portal/IPOJournal/1_431_1/Part1.pdf +Part2_Designs (4.41 MB) http://www.ipindia.nic.in/writereaddata/Portal/IPOJournal/1_431_1/Part1.pdf +------- +23rd September 2016 +Part 1 (1.62 MB) http://www.ipindia.nic.in/writereaddata/Portal/IPOJournal/1_431_1/Part2_Designs.pdf +Part 2 (Designs) (4.67 MB) http://www.ipindia.nic.in/writereaddata/Portal/IPOJournal/1_431_1/Part2_Designs.pdf +------- +16 September 2016 +Part 1 (2.52 MB) http://www.ipindia.nic.in/writereaddata/Portal/IPOJournal/1_428_1/Part1.pdf +Part 2 (Designs) (4.26 MB) http://www.ipindia.nic.in/writereaddata/Portal/IPOJournal/1_428_1/Part1.pdf +------- +9 September 2016 +Part1 (2.63 MB) http://www.ipindia.nic.in/writereaddata/Portal/IPOJournal/1_428_1/Part2_Designs.pdf +Part2_Designs (4.08 MB) http://www.ipindia.nic.in/writereaddata/Portal/IPOJournal/1_428_1/Part2_Designs.pdf +------- +02 September, 2016 +Part 1 (5.85 MB) http://www.ipindia.nic.in/writereaddata/Portal/IPOJournal/1_425_1/Part1.pdf +Part 2 (7.30 MB) http://www.ipindia.nic.in/writereaddata/Portal/IPOJournal/1_425_1/Part1.pdf +Part 3 (3.28 MB) http://www.ipindia.nic.in/writereaddata/Portal/IPOJournal/1_425_1/Part1.pdf +Part 4 (Design) (7.56 MB) http://www.ipindia.nic.in/writereaddata/Portal/IPOJournal/1_425_1/Part1.pdf +------- +31 August, 2016 +Part 1 (8.07 MB) http://www.ipindia.nic.in/writereaddata/Portal/IPOJournal/1_425_1/Part2.pdf +Part 2 (4.25 MB) http://www.ipindia.nic.in/writereaddata/Portal/IPOJournal/1_425_1/Part2.pdf +Part 3 (4.66 MB) http://www.ipindia.nic.in/writereaddata/Portal/IPOJournal/1_425_1/Part2.pdf +Part 4 (4.27 MB) http://www.ipindia.nic.in/writereaddata/Portal/IPOJournal/1_425_1/Part2.pdf +Part 5 (5.00 MB) http://www.ipindia.nic.in/writereaddata/Portal/IPOJournal/1_425_1/Part2.pdf +Part 6 (4.42 MB) http://www.ipindia.nic.in/writereaddata/Portal/IPOJournal/1_425_1/Part2.pdf +Part 7 (4.70 MB) http://www.ipindia.nic.in/writereaddata/Portal/IPOJournal/1_425_1/Part2.pdf +Part 8 (4.28 MB) http://www.ipindia.nic.in/writereaddata/Portal/IPOJournal/1_425_1/Part2.pdf +Part 9 (3.32 MB) http://www.ipindia.nic.in/writereaddata/Portal/IPOJournal/1_425_1/Part2.pdf +Part 10 (3.37 MB) http://www.ipindia.nic.in/writereaddata/Portal/IPOJournal/1_425_1/Part2.pdf +Part 11 (2.77 MB) http://www.ipindia.nic.in/writereaddata/Portal/IPOJournal/1_425_1/Part2.pdf +Part 12 (4.30 MB) http://www.ipindia.nic.in/writereaddata/Portal/IPOJournal/1_425_1/Part2.pdf +Part 13 (4.21 MB) http://www.ipindia.nic.in/writereaddata/Portal/IPOJournal/1_425_1/Part2.pdf +Part 14 (4.34 MB) http://www.ipindia.nic.in/writereaddata/Portal/IPOJournal/1_425_1/Part2.pdf +Part 15 (4.90 MB) http://www.ipindia.nic.in/writereaddata/Portal/IPOJournal/1_425_1/Part2.pdf +Part 16 (4.20 MB) http://www.ipindia.nic.in/writereaddata/Portal/IPOJournal/1_425_1/Part2.pdf +Part 17 (4.48 MB) http://www.ipindia.nic.in/writereaddata/Portal/IPOJournal/1_425_1/Part2.pdf +------- +26 August, 2016 +Part 1 (10.83 MB) http://www.ipindia.nic.in/writereaddata/Portal/IPOJournal/1_425_1/Part3_Designs.pdf +Part 2 (8.92 MB) http://www.ipindia.nic.in/writereaddata/Portal/IPOJournal/1_425_1/Part3_Designs.pdf +Part 3 (6.62 MB) http://www.ipindia.nic.in/writereaddata/Portal/IPOJournal/1_425_1/Part3_Designs.pdf +Part 4 (5.00 MB) http://www.ipindia.nic.in/writereaddata/Portal/IPOJournal/1_425_1/Part3_Designs.pdf +Part 5 (5.02 MB) http://www.ipindia.nic.in/writereaddata/Portal/IPOJournal/1_425_1/Part3_Designs.pdf +Part 6 (4.74 MB) http://www.ipindia.nic.in/writereaddata/Portal/IPOJournal/1_425_1/Part3_Designs.pdf +Part 7 (4.75 MB) http://www.ipindia.nic.in/writereaddata/Portal/IPOJournal/1_425_1/Part3_Designs.pdf +Part 8 (4.93 MB) http://www.ipindia.nic.in/writereaddata/Portal/IPOJournal/1_425_1/Part3_Designs.pdf +Part 9 (4.76 MB) http://www.ipindia.nic.in/writereaddata/Portal/IPOJournal/1_425_1/Part3_Designs.pdf +Part 10 (5.14 MB) http://www.ipindia.nic.in/writereaddata/Portal/IPOJournal/1_425_1/Part3_Designs.pdf +Part 11 (Design) (3.13 MB) http://www.ipindia.nic.in/writereaddata/Portal/IPOJournal/1_425_1/Part3_Designs.pdf +------- +19 August, 2016 +Part 1 (11.40 MB) http://www.ipindia.nic.in/writereaddata/Portal/IPOJournal/1_423_1/Part1.pdf +Part 2 (1.64 MB) http://www.ipindia.nic.in/writereaddata/Portal/IPOJournal/1_423_1/Part1.pdf +Part 3 (Design) (2.60 MB) http://www.ipindia.nic.in/writereaddata/Portal/IPOJournal/1_423_1/Part1.pdf +------- +12 August, 2016 +Part 1 (6.54 MB) http://www.ipindia.nic.in/writereaddata/Portal/IPOJournal/1_423_1/Part2_Designs.pdf +Part 2 (3.15 MB) http://www.ipindia.nic.in/writereaddata/Portal/IPOJournal/1_423_1/Part2_Designs.pdf +Part 3 (Design) (4.17 MB) http://www.ipindia.nic.in/writereaddata/Portal/IPOJournal/1_423_1/Part2_Designs.pdf +------- +05 August, 2016 +Part 1 (16.95 MB) http://www.ipindia.nic.in/writereaddata/Portal/IPOJournal/1_421_1/Part1.pdf +Part 2 (8.61 MB) http://www.ipindia.nic.in/writereaddata/Portal/IPOJournal/1_421_1/Part1.pdf +Part 3 (Design) (2.89 MB) http://www.ipindia.nic.in/writereaddata/Portal/IPOJournal/1_421_1/Part1.pdf +------- +29 July, 2016 +Part 1 (7.56 MB) http://www.ipindia.nic.in/writereaddata/Portal/IPOJournal/1_421_1/Part2_Designs.pdf +Part 2 (3.03 MB) http://www.ipindia.nic.in/writereaddata/Portal/IPOJournal/1_421_1/Part2_Designs.pdf +Part 3 (Design) (2.86 MB) http://www.ipindia.nic.in/writereaddata/Portal/IPOJournal/1_421_1/Part2_Designs.pdf +------- +22 July, 2016 +Part 1 (14.37 MB) http://www.ipindia.nic.in/writereaddata/Portal/IPOJournal/1_419_1/Part1.pdf +Part 2 (4.87 MB) http://www.ipindia.nic.in/writereaddata/Portal/IPOJournal/1_419_1/Part1.pdf +Part 3 (Design) (2.46 MB) http://www.ipindia.nic.in/writereaddata/Portal/IPOJournal/1_419_1/Part1.pdf +------- +15 July, 2016 +Part 1 (14.93 MB) http://www.ipindia.nic.in/writereaddata/Portal/IPOJournal/1_419_1/Part2_Designs.pdf +Part 2 (13.82 MB) http://www.ipindia.nic.in/writereaddata/Portal/IPOJournal/1_419_1/Part2_Designs.pdf +Part 3 (Design) (3.47 MB) http://www.ipindia.nic.in/writereaddata/Portal/IPOJournal/1_419_1/Part2_Designs.pdf +------- +08 July 2016 +Part 1 (12.57 MB) http://www.ipindia.nic.in/writereaddata/Portal/IPOJournal/1_417_1/Part1.pdf +Part 2 (7.55 MB) http://www.ipindia.nic.in/writereaddata/Portal/IPOJournal/1_417_1/Part1.pdf +Part 3 (Design) (3.45 MB) http://www.ipindia.nic.in/writereaddata/Portal/IPOJournal/1_417_1/Part1.pdf +------- +01 July, 2016 +Part 1 (4.58 MB) http://www.ipindia.nic.in/writereaddata/Portal/IPOJournal/1_417_1/Part2_Designs.pdf +Part 2 (16.89 MB) http://www.ipindia.nic.in/writereaddata/Portal/IPOJournal/1_417_1/Part2_Designs.pdf +Part 3 (17.41 MB) http://www.ipindia.nic.in/writereaddata/Portal/IPOJournal/1_417_1/Part2_Designs.pdf +Part 4 (14.88 MB) http://www.ipindia.nic.in/writereaddata/Portal/IPOJournal/1_417_1/Part2_Designs.pdf +Part 5 (17.55 MB) http://www.ipindia.nic.in/writereaddata/Portal/IPOJournal/1_417_1/Part2_Designs.pdf +Part 6 (16.13 MB) http://www.ipindia.nic.in/writereaddata/Portal/IPOJournal/1_417_1/Part2_Designs.pdf +Part 7 (17.79 MB) http://www.ipindia.nic.in/writereaddata/Portal/IPOJournal/1_417_1/Part2_Designs.pdf +Part 8 (15.69 MB) http://www.ipindia.nic.in/writereaddata/Portal/IPOJournal/1_417_1/Part2_Designs.pdf +Part 9 (17.58 MB) http://www.ipindia.nic.in/writereaddata/Portal/IPOJournal/1_417_1/Part2_Designs.pdf +Part 9 (Design) (3.42 MB) http://www.ipindia.nic.in/writereaddata/Portal/IPOJournal/1_417_1/Part2_Designs.pdf +Part 10 (7.86 MB) http://www.ipindia.nic.in/writereaddata/Portal/IPOJournal/1_417_1/Part2_Designs.pdf +------- +24 June, 2016 +Part 1 (5.65 MB) http://www.ipindia.nic.in/writereaddata/Portal/IPOJournal/1_413_1/Part1.pdf +Part 2 (13.74 MB) http://www.ipindia.nic.in/writereaddata/Portal/IPOJournal/1_413_1/Part1.pdf +Part 3 (3.49 MB) http://www.ipindia.nic.in/writereaddata/Portal/IPOJournal/1_413_1/Part1.pdf +Part 4 (Design) (7.81 MB) http://www.ipindia.nic.in/writereaddata/Portal/IPOJournal/1_413_1/Part1.pdf +------- +17 June, 2016 +Part 1 (3.97 MB) http://www.ipindia.nic.in/writereaddata/Portal/IPOJournal/1_413_1/Part2_Designs.pdf +Part 2 (7.10 MB) http://www.ipindia.nic.in/writereaddata/Portal/IPOJournal/1_413_1/Part2_Designs.pdf +Part 3 (Design) (6.77 MB) http://www.ipindia.nic.in/writereaddata/Portal/IPOJournal/1_413_1/Part2_Designs.pdf +------- +10 June, 2016 +Part 1 (6.86 MB) http://www.ipindia.nic.in/writereaddata/Portal/IPOJournal/1_410_1/Part1.pdf +Part 2 (7.67 MB) http://www.ipindia.nic.in/writereaddata/Portal/IPOJournal/1_410_1/Part1.pdf +Part 3 (Design) (7.55 MB) http://www.ipindia.nic.in/writereaddata/Portal/IPOJournal/1_410_1/Part1.pdf +------- +03 June, 2016 +Part 1 (9.37 MB) http://www.ipindia.nic.in/writereaddata/Portal/IPOJournal/1_410_1/Part2_Designs.pdf +Part 2 (8.24 MB) http://www.ipindia.nic.in/writereaddata/Portal/IPOJournal/1_410_1/Part2_Designs.pdf +Part 3 (Design) (5.39 MB) http://www.ipindia.nic.in/writereaddata/Portal/IPOJournal/1_410_1/Part2_Designs.pdf +------- +27 May, 2016 +Part 1 (7.85 MB) http://www.ipindia.nic.in/writereaddata/Portal/IPOJournal/1_408_1/Part1.pdf +Part 2 (11.78 MB) http://www.ipindia.nic.in/writereaddata/Portal/IPOJournal/1_408_1/Part1.pdf +Part 3 (Design) (5.03 MB) http://www.ipindia.nic.in/writereaddata/Portal/IPOJournal/1_408_1/Part1.pdf +------- +20 May, 2016 +Part 1 (4.87 MB) http://www.ipindia.nic.in/writereaddata/Portal/IPOJournal/1_408_1/Part2_Designs.pdf +Part 2 (6.50 MB) http://www.ipindia.nic.in/writereaddata/Portal/IPOJournal/1_408_1/Part2_Designs.pdf +Part 3 (Design) (4.02 MB) http://www.ipindia.nic.in/writereaddata/Portal/IPOJournal/1_408_1/Part2_Designs.pdf +------- +13 May, 2016 +Part 1 (6.51 MB) http://www.ipindia.nic.in/writereaddata/Portal/IPOJournal/1_405_1/Part1.pdf +Part 2 (3.54 MB) http://www.ipindia.nic.in/writereaddata/Portal/IPOJournal/1_405_1/Part1.pdf +Part 3 (Design) (3.42 MB) http://www.ipindia.nic.in/writereaddata/Portal/IPOJournal/1_405_1/Part1.pdf +------- +06 May, 2016 +Part 1 (6.85 MB) http://www.ipindia.nic.in/writereaddata/Portal/IPOJournal/1_405_1/Part2_Designs.pdf +Patr 2 (6.48 MB) http://www.ipindia.nic.in/writereaddata/Portal/IPOJournal/1_405_1/Part2_Designs.pdf +Part 3 (Design) (2.98 MB) http://www.ipindia.nic.in/writereaddata/Portal/IPOJournal/1_405_1/Part2_Designs.pdf +------- +29 April, 2016 +Part 1 (7.74 MB) http://www.ipindia.nic.in/writereaddata/Portal/IPOJournal/1_403_1/Part1.pdf +Patr 2 (4.29 MB) http://www.ipindia.nic.in/writereaddata/Portal/IPOJournal/1_403_1/Part1.pdf +Part 3 (Design) (4.00 MB) http://www.ipindia.nic.in/writereaddata/Portal/IPOJournal/1_403_1/Part1.pdf +------- +22 April, 2016 +Part 1 (9.11 MB) http://www.ipindia.nic.in/writereaddata/Portal/IPOJournal/1_403_1/Part2_Designs.pdf +Part 2 (Design) (3.82 MB) http://www.ipindia.nic.in/writereaddata/Portal/IPOJournal/1_403_1/Part2_Designs.pdf +------- +15 April, 2016 +Part 1 (7.59 MB) http://www.ipindia.nic.in/writereaddata/Portal/IPOJournal/1_401_1/Part1.pdf +Part 2 (Design) (3.18 MB) http://www.ipindia.nic.in/writereaddata/Portal/IPOJournal/1_401_1/Part1.pdf +------- +08 April, 2016 +Part 1 (5.49 MB) http://www.ipindia.nic.in/writereaddata/Portal/IPOJournal/1_401_1/Part2_Designs.pdf +Part 2 (6.84 MB) http://www.ipindia.nic.in/writereaddata/Portal/IPOJournal/1_401_1/Part2_Designs.pdf +Part 3 (Design) (3.92 MB) http://www.ipindia.nic.in/writereaddata/Portal/IPOJournal/1_401_1/Part2_Designs.pdf +------- +01 April, 2016 +Part 1 (5.96 MB) http://www.ipindia.nic.in/writereaddata/Portal/IPOJournal/1_399_1/Part1.pdf +Part 2 (Design) (3.67 MB) http://www.ipindia.nic.in/writereaddata/Portal/IPOJournal/1_399_1/Part1.pdf +------- +26 February, 2016 +Part 1 (6.91 MB) http://www.ipindia.nic.in/writereaddata/Portal/IPOJournal/1_399_1/Part2_Designs.pdf +Part 2 (Design) (4.00 MB) http://www.ipindia.nic.in/writereaddata/Portal/IPOJournal/1_399_1/Part2_Designs.pdf +------- +25 March, 2016 +Part 1 (7.85 MB) http://www.ipindia.nic.in/writereaddata/Portal/IPOJournal/1_388_1/Part1_1_.pdf +Part 2 (Design) (3.00 MB) http://www.ipindia.nic.in/writereaddata/Portal/IPOJournal/1_388_1/Part1_1_.pdf +------- +19 February, 2016 +Part 1 (3.48 MB) http://www.ipindia.nic.in/writereaddata/Portal/IPOJournal/1_388_1/Part2Designs.pdf +Part 2 (4.07 MB) http://www.ipindia.nic.in/writereaddata/Portal/IPOJournal/1_388_1/Part2Designs.pdf +Part 3 (Design) (5.21 MB) http://www.ipindia.nic.in/writereaddata/Portal/IPOJournal/1_388_1/Part2Designs.pdf +------- +18 March, 2016 +Part 1 (6.57 MB) http://www.ipindia.nic.in/writereaddata/Portal/IPOJournal/1_383_1/Part1.pdf +Part 2 (Design) (4.08 MB) http://www.ipindia.nic.in/writereaddata/Portal/IPOJournal/1_383_1/Part1.pdf +------- +12 February, 2016 +Part 1 (4.04 MB) http://www.ipindia.nic.in/writereaddata/Portal/IPOJournal/1_383_1/Part2_Designs.pdf +Part 2 (6.17 MB) http://www.ipindia.nic.in/writereaddata/Portal/IPOJournal/1_383_1/Part2_Designs.pdf +Part 3 (Design) (4.70 MB) http://www.ipindia.nic.in/writereaddata/Portal/IPOJournal/1_383_1/Part2_Designs.pdf +------- +11 March, 2016 +Part 1 (4.61 MB) http://www.ipindia.nic.in/writereaddata/Portal/IPOJournal/1_373_1/part1.pdf +Part 2 (Design) (3.70 MB) http://www.ipindia.nic.in/writereaddata/Portal/IPOJournal/1_373_1/part1.pdf +------- +05 February, 2016 +Part 1 (4.89 MB) http://www.ipindia.nic.in/writereaddata/Portal/IPOJournal/1_373_1/part2.pdf +Part 2 (5.04 MB) http://www.ipindia.nic.in/writereaddata/Portal/IPOJournal/1_373_1/part2.pdf +Part 3 (Design) (3.62 MB) http://www.ipindia.nic.in/writereaddata/Portal/IPOJournal/1_373_1/part2.pdf +------- +04 March, 2016 +Part 1 (6.30 MB) http://www.ipindia.nic.in/writereaddata/Portal/IPOJournal/1_371_1/Part1.pdf +Part 2 (Design) (4.00 MB) http://www.ipindia.nic.in/writereaddata/Portal/IPOJournal/1_371_1/Part1.pdf +------- +29 January, 2016 +Part 1 (3.77 MB) http://www.ipindia.nic.in/writereaddata/Portal/IPOJournal/1_371_1/Part2Designs.pdf +Part 2 (5.12 MB) http://www.ipindia.nic.in/writereaddata/Portal/IPOJournal/1_371_1/Part2Designs.pdf +Part 3 (Design) (3.11 MB) http://www.ipindia.nic.in/writereaddata/Portal/IPOJournal/1_371_1/Part2Designs.pdf +------- +22 January, 2016 +Part 1 (5.93 MB) http://www.ipindia.nic.in/writereaddata/Portal/IPOJournal/1_378_1/Part1.pdf +Part 2 (7.02 MB) http://www.ipindia.nic.in/writereaddata/Portal/IPOJournal/1_378_1/Part1.pdf +Part 3 (Design) (4.38 MB) http://www.ipindia.nic.in/writereaddata/Portal/IPOJournal/1_378_1/Part1.pdf +------- +08 January, 2016 +Part 1 (7.71 MB) http://www.ipindia.nic.in/writereaddata/Portal/IPOJournal/1_378_1/Part2_Designs.pdf +Part 2 (Design) (4.08 MB) http://www.ipindia.nic.in/writereaddata/Portal/IPOJournal/1_378_1/Part2_Designs.pdf +------- +15 January, 2016 +Part 1 (5.53 MB) http://www.ipindia.nic.in/writereaddata/Portal/IPOJournal/1_361_1/part1.pdf +Part 2 (6.22 MB) http://www.ipindia.nic.in/writereaddata/Portal/IPOJournal/1_361_1/part1.pdf +Part 3 (Design) (3.58 MB) http://www.ipindia.nic.in/writereaddata/Portal/IPOJournal/1_361_1/part1.pdf +------- +01 January, 2016 +Part 1 (5.61 MB) http://www.ipindia.nic.in/writereaddata/Portal/IPOJournal/1_361_1/part2.pdf +Part 2 (8.44 MB) http://www.ipindia.nic.in/writereaddata/Portal/IPOJournal/1_361_1/part2.pdf +Part 3 (Design) (5.41 MB) http://www.ipindia.nic.in/writereaddata/Portal/IPOJournal/1_361_1/part2.pdf +------- +25 December, 2015 +Part 1 (4.60 MB) http://www.ipindia.nic.in/writereaddata/Portal/IPOJournal/1_361_1/part3.pdf +Part 2 (Design) (4.16 MB) http://www.ipindia.nic.in/writereaddata/Portal/IPOJournal/1_361_1/part3.pdf +------- +18 December, 2015 +Part 1 (5.29 MB) http://www.ipindia.nic.in/writereaddata/Portal/IPOJournal/1_361_1/part4design.pdf +Part 2 (4.62 MB) http://www.ipindia.nic.in/writereaddata/Portal/IPOJournal/1_361_1/part4design.pdf +Part 3 (Design) (5.35 MB) http://www.ipindia.nic.in/writereaddata/Portal/IPOJournal/1_361_1/part4design.pdf +------- +11 December, 2015 +Part 1 (3.31 MB) http://www.ipindia.nic.in/writereaddata/Portal/IPOJournal/1_360_1/part1.pdf +Part 2 (Design) (4.45 MB) http://www.ipindia.nic.in/writereaddata/Portal/IPOJournal/1_360_1/part1.pdf +------- +04 December, 2015 +Part 1 (9.00 MB) http://www.ipindia.nic.in/writereaddata/Portal/IPOJournal/1_360_1/part2.pdf +Part 2 (Design) (4.75 MB) http://www.ipindia.nic.in/writereaddata/Portal/IPOJournal/1_360_1/part2.pdf +------- +27 November, 2015 +Part 1 (8.62 MB) http://www.ipindia.nic.in/writereaddata/Portal/IPOJournal/1_360_1/part3.pdf +Part 2 (Design) (5.00 MB) http://www.ipindia.nic.in/writereaddata/Portal/IPOJournal/1_360_1/part3.pdf +------- +20 November, 2015 +Part 1 (6.61 MB) http://www.ipindia.nic.in/writereaddata/Portal/IPOJournal/1_360_1/part4.pdf +Part 2 (Design) (4.40 MB) http://www.ipindia.nic.in/writereaddata/Portal/IPOJournal/1_360_1/part4.pdf +------- +13 November, 2015 +Part 1 (6.96 MB) http://www.ipindia.nic.in/writereaddata/Portal/IPOJournal/1_360_1/part5.pdf +Part 2 (Design) (4.16 MB) http://www.ipindia.nic.in/writereaddata/Portal/IPOJournal/1_360_1/part5.pdf +------- +06 November, 2015 +Part 1 (7.08 MB) http://www.ipindia.nic.in/writereaddata/Portal/IPOJournal/1_360_1/part6.pdf +Part 2 (Design) (1.91 MB) http://www.ipindia.nic.in/writereaddata/Portal/IPOJournal/1_360_1/part6.pdf +------- +30 October, 2015 +Part 1 (7.04 MB) http://www.ipindia.nic.in/writereaddata/Portal/IPOJournal/1_360_1/part7.pdf +Part 2 (Design) (4.81 MB) http://www.ipindia.nic.in/writereaddata/Portal/IPOJournal/1_360_1/part7.pdf +------- +23 October, 2015 +Part 1 (5.33 MB) http://www.ipindia.nic.in/writereaddata/Portal/IPOJournal/1_360_1/part8.pdf +Part 2 (Design) (3.67 MB) http://www.ipindia.nic.in/writereaddata/Portal/IPOJournal/1_360_1/part8.pdf +------- +16 October, 2015 +Part 1 (7.72 MB) http://www.ipindia.nic.in/writereaddata/Portal/IPOJournal/1_360_1/part9.pdf +Part 2 (Design) (4.08 MB) http://www.ipindia.nic.in/writereaddata/Portal/IPOJournal/1_360_1/part9.pdf +------- +09 October, 2015 +Part 1 (5.94 MB) http://www.ipindia.nic.in/writereaddata/Portal/IPOJournal/1_360_1/part10.pdf +Part 2 (Design) (4.30 MB) http://www.ipindia.nic.in/writereaddata/Portal/IPOJournal/1_360_1/part10.pdf +------- +02 October, 2015 +Part 1 (4.76 MB) http://www.ipindia.nic.in/writereaddata/Portal/IPOJournal/1_360_1/part11.pdf +Part 2 (4.79 MB) http://www.ipindia.nic.in/writereaddata/Portal/IPOJournal/1_360_1/part11.pdf +Part 3 (Design) (2.08 MB) http://www.ipindia.nic.in/writereaddata/Portal/IPOJournal/1_360_1/part11.pdf +------- +25 September, 2015 +Part 1 (7.06 MB) http://www.ipindia.nic.in/writereaddata/Portal/IPOJournal/1_360_1/part12.pdf +Part 2 (Design) (4.96 MB) http://www.ipindia.nic.in/writereaddata/Portal/IPOJournal/1_360_1/part12.pdf +------- +18 September, 2015 +part 1 (7.28 MB) http://www.ipindia.nic.in/writereaddata/Portal/IPOJournal/1_360_1/part13.pdf +Part 2 (Design) (5.19 MB) http://www.ipindia.nic.in/writereaddata/Portal/IPOJournal/1_360_1/part13.pdf +------- +11 September, 2015 +Part 1 (9.15 MB) http://www.ipindia.nic.in/writereaddata/Portal/IPOJournal/1_360_1/part14.pdf +Part 2 (Design) (5.32 MB) http://www.ipindia.nic.in/writereaddata/Portal/IPOJournal/1_360_1/part14.pdf +------- +04 September, 2015 +part1 (6.31 MB) http://www.ipindia.nic.in/writereaddata/Portal/IPOJournal/1_360_1/part15.pdf +Part 2 (7.03 MB) http://www.ipindia.nic.in/writereaddata/Portal/IPOJournal/1_360_1/part15.pdf +Part 3 (Design) (1.79 MB) http://www.ipindia.nic.in/writereaddata/Portal/IPOJournal/1_360_1/part15.pdf +------- +28 August, 2015 +Part 1 (8.41 MB) http://www.ipindia.nic.in/writereaddata/Portal/IPOJournal/1_360_1/part16.pdf +Part 2 (Design) (4.79 MB) http://www.ipindia.nic.in/writereaddata/Portal/IPOJournal/1_360_1/part16.pdf +------- +21 August, 2015 +Part 1 (6.70 MB) http://www.ipindia.nic.in/writereaddata/Portal/IPOJournal/1_360_1/part17.pdf +Part 2 (6.14 MB) http://www.ipindia.nic.in/writereaddata/Portal/IPOJournal/1_360_1/part17.pdf +Part 3 (Design) (4.85 MB) http://www.ipindia.nic.in/writereaddata/Portal/IPOJournal/1_360_1/part17.pdf +------- +14 August, 2015 +Part 1 (8.43 MB) http://www.ipindia.nic.in/writereaddata/Portal/IPOJournal/1_359_1/part1.pdf +Part 2 (Design) (4.10 MB) http://www.ipindia.nic.in/writereaddata/Portal/IPOJournal/1_359_1/part1.pdf +------- +07 August, 2015 +Part 1 (6.25 MB) http://www.ipindia.nic.in/writereaddata/Portal/IPOJournal/1_359_1/part2.pdf +Part 2 (Design) (4.48 MB) http://www.ipindia.nic.in/writereaddata/Portal/IPOJournal/1_359_1/part2.pdf +------- +31 July, 2015 +Part 1 (6.17 MB) http://www.ipindia.nic.in/writereaddata/Portal/IPOJournal/1_359_1/part3.pdf +Part 2 (Design) (4.90 MB) http://www.ipindia.nic.in/writereaddata/Portal/IPOJournal/1_359_1/part3.pdf +------- +24 July, 2015 +Part 1 (4.15 MB) http://www.ipindia.nic.in/writereaddata/Portal/IPOJournal/1_359_1/part4.pdf +Part 2 (Design) (3.70 MB) http://www.ipindia.nic.in/writereaddata/Portal/IPOJournal/1_359_1/part4.pdf +------- +17 July, 2015 +Part 1 (6.20 MB) http://www.ipindia.nic.in/writereaddata/Portal/IPOJournal/1_359_1/part5.pdf +Part 2 (Design) (4.10 MB) http://www.ipindia.nic.in/writereaddata/Portal/IPOJournal/1_359_1/part5.pdf +------- +10 July, 2015 +Part 1 (6.84 MB) http://www.ipindia.nic.in/writereaddata/Portal/IPOJournal/1_359_1/part6.pdf +Part 2 (1.97 MB) http://www.ipindia.nic.in/writereaddata/Portal/IPOJournal/1_359_1/part6.pdf +Part 3 (Design) (4.53 MB) http://www.ipindia.nic.in/writereaddata/Portal/IPOJournal/1_359_1/part6.pdf +------- +03 July, 2015 +Part 1 (8.15 MB) http://www.ipindia.nic.in/writereaddata/Portal/IPOJournal/1_359_1/part7.pdf +Part 2 (6.98 MB) http://www.ipindia.nic.in/writereaddata/Portal/IPOJournal/1_359_1/part7.pdf +Part 3 (Design) (3.73 MB) http://www.ipindia.nic.in/writereaddata/Portal/IPOJournal/1_359_1/part7.pdf +------- +26 June, 2015 +part 1 (6.64 MB) http://www.ipindia.nic.in/writereaddata/Portal/IPOJournal/1_359_1/part8.pdf +Part 2 (1.76 MB) http://www.ipindia.nic.in/writereaddata/Portal/IPOJournal/1_359_1/part8.pdf +Part 3 (Design) (3.41 MB) http://www.ipindia.nic.in/writereaddata/Portal/IPOJournal/1_359_1/part8.pdf +------- +19 June, 2015 +Part 1 (6.31 MB) http://www.ipindia.nic.in/writereaddata/Portal/IPOJournal/1_359_1/part9.pdf +Part 2 (Design) (3.43 MB) http://www.ipindia.nic.in/writereaddata/Portal/IPOJournal/1_359_1/part9.pdf +------- +12 June, 2015 +Part 1 (5.63 MB) http://www.ipindia.nic.in/writereaddata/Portal/IPOJournal/1_359_1/part10.pdf +Part 2 (3.57 MB) http://www.ipindia.nic.in/writereaddata/Portal/IPOJournal/1_359_1/part10.pdf +Part 3 (Design) (3.45 MB) http://www.ipindia.nic.in/writereaddata/Portal/IPOJournal/1_359_1/part10.pdf +------- +05 June, 2015 +Part 1 (6.48 MB) http://www.ipindia.nic.in/writereaddata/Portal/IPOJournal/1_359_1/part11design.pdf +Part 2 (Design) (5.18 MB) http://www.ipindia.nic.in/writereaddata/Portal/IPOJournal/1_359_1/part11design.pdf +------- +29 May, 2015 +Part 1 (4.42 MB) http://www.ipindia.nic.in/writereaddata/Portal/IPOJournal/1_358_1/part1.pdf +Part 2 (Design) (4.32 MB) http://www.ipindia.nic.in/writereaddata/Portal/IPOJournal/1_358_1/part1.pdf +------- +22 May, 2015 +Part 1 (4.10 MB) http://www.ipindia.nic.in/writereaddata/Portal/IPOJournal/1_358_1/part2.pdf +Part 2 (3.03 MB) http://www.ipindia.nic.in/writereaddata/Portal/IPOJournal/1_358_1/part2.pdf +Part 3 (Design) (3.49 MB) http://www.ipindia.nic.in/writereaddata/Portal/IPOJournal/1_358_1/part2.pdf +------- +15 May, 2015 +Part 1 (5.39 MB) http://www.ipindia.nic.in/writereaddata/Portal/IPOJournal/1_358_1/part3design.pdf +Part 2 (Design) (4.15 MB) http://www.ipindia.nic.in/writereaddata/Portal/IPOJournal/1_358_1/part3design.pdf +------- +08 May, 2015 +Part 1 (3.30 MB) http://www.ipindia.nic.in/writereaddata/Portal/IPOJournal/1_357_1/part1.pdf +Part 2 (2.08 MB) http://www.ipindia.nic.in/writereaddata/Portal/IPOJournal/1_357_1/part1.pdf +Part 3 (Design) (3.21 MB) http://www.ipindia.nic.in/writereaddata/Portal/IPOJournal/1_357_1/part1.pdf +------- +01 May, 2015 +Part 1 (3.37 MB) http://www.ipindia.nic.in/writereaddata/Portal/IPOJournal/1_357_1/part2.pdf +Part 2 (Design) (3.70 MB) http://www.ipindia.nic.in/writereaddata/Portal/IPOJournal/1_357_1/part2.pdf +------- +24 April, 2015 +Part 1 (6.33 MB) http://www.ipindia.nic.in/writereaddata/Portal/IPOJournal/1_357_1/part3design.pdf +Part 2 (Design) (2.66 MB) http://www.ipindia.nic.in/writereaddata/Portal/IPOJournal/1_357_1/part3design.pdf +------- +17 April, 2015 +part 1 (1.18 MB) http://www.ipindia.nic.in/writereaddata/Portal/IPOJournal/1_356_1/part1.pdf +Part 2 (Design) (1.29 MB) http://www.ipindia.nic.in/writereaddata/Portal/IPOJournal/1_356_1/part1.pdf +------- +10 April, 2015 +Part 1 (2.64 MB) http://www.ipindia.nic.in/writereaddata/Portal/IPOJournal/1_356_1/part2.pdf +Part 2 (Design) (1.28 MB) http://www.ipindia.nic.in/writereaddata/Portal/IPOJournal/1_356_1/part2.pdf +------- +27 March, 2015 +Part 1 (2.23 MB) http://www.ipindia.nic.in/writereaddata/Portal/IPOJournal/1_356_1/part3design.pdf +Part 2 (Design) (2.43 MB) http://www.ipindia.nic.in/writereaddata/Portal/IPOJournal/1_356_1/part3design.pdf +------- +20 March, 2015 +Part 1 (1.51 MB) http://www.ipindia.nic.in/writereaddata/Portal/IPOJournal/1_355_1/part1.pdf +Part 2 (Design) (1.23 MB) http://www.ipindia.nic.in/writereaddata/Portal/IPOJournal/1_355_1/part1.pdf +------- +13 March, 2015 +Part 1 (2.35 MB) http://www.ipindia.nic.in/writereaddata/Portal/IPOJournal/1_355_1/part2.pdf +Part 2 (1.49 MB) http://www.ipindia.nic.in/writereaddata/Portal/IPOJournal/1_355_1/part2.pdf +Part 3 (Design) (977 KB) http://www.ipindia.nic.in/writereaddata/Portal/IPOJournal/1_355_1/part2.pdf +------- +06 March, 2015 +Part 1 (1.82 MB) http://www.ipindia.nic.in/writereaddata/Portal/IPOJournal/1_355_1/part3design.pdf +Part 2 (Design) (1.22 MB) http://www.ipindia.nic.in/writereaddata/Portal/IPOJournal/1_355_1/part3design.pdf +------- +03 April, 2015 +Part 1 (1.99 MB) http://www.ipindia.nic.in/writereaddata/Portal/IPOJournal/1_354_1/part1.pdf +Part 2 (Design) (1.38 MB) http://www.ipindia.nic.in/writereaddata/Portal/IPOJournal/1_354_1/part1.pdf +------- +27 February, 2015 +Part 1 (2.37 MB) http://www.ipindia.nic.in/writereaddata/Portal/IPOJournal/1_354_1/part2.pdf +Part 2 (Design) (1.15 MB) http://www.ipindia.nic.in/writereaddata/Portal/IPOJournal/1_354_1/part2.pdf +------- +20 February, 2015 +Part 1 (3.31 MB) http://www.ipindia.nic.in/writereaddata/Portal/IPOJournal/1_354_1/part3design.pdf +Part 2 (Design) (1.38 MB) http://www.ipindia.nic.in/writereaddata/Portal/IPOJournal/1_354_1/part3design.pdf +------- +13 February, 2015 +Part 1 (2.63 MB) http://www.ipindia.nic.in/writereaddata/Portal/IPOJournal/1_353_1/part1.pdf +Part 2 (2.19 MB) http://www.ipindia.nic.in/writereaddata/Portal/IPOJournal/1_353_1/part1.pdf +Part 3 (Design) (1.36 MB) http://www.ipindia.nic.in/writereaddata/Portal/IPOJournal/1_353_1/part1.pdf +------- +06 February, 2015 +Part 1 (3.02 MB) http://www.ipindia.nic.in/writereaddata/Portal/IPOJournal/1_353_1/part2.pdf +Part 2 (Design) (876 KB) http://www.ipindia.nic.in/writereaddata/Portal/IPOJournal/1_353_1/part2.pdf +------- +30 January, 2015 +Part 1 (3.11 MB) http://www.ipindia.nic.in/writereaddata/Portal/IPOJournal/1_353_1/part3design.pdf +Part 2 (Design) (1.07 MB) http://www.ipindia.nic.in/writereaddata/Portal/IPOJournal/1_353_1/part3design.pdf +------- +23 January, 2015 +Part 1 (2.48 MB) http://www.ipindia.nic.in/writereaddata/Portal/IPOJournal/1_352_1/part1.pdf +Part 2 (Design) (1.13 MB) http://www.ipindia.nic.in/writereaddata/Portal/IPOJournal/1_352_1/part1.pdf +------- +16 January, 2015 +Part 1 (1.83 MB) http://www.ipindia.nic.in/writereaddata/Portal/IPOJournal/1_352_1/part2.pdf +Part 2 (Design) (1.13 MB) http://www.ipindia.nic.in/writereaddata/Portal/IPOJournal/1_352_1/part2.pdf +------- +09 January, 2015 +Part 1 (3.26 MB) http://www.ipindia.nic.in/writereaddata/Portal/IPOJournal/1_352_1/part3design.pdf +Part 2 (Design) (1.22 MB) http://www.ipindia.nic.in/writereaddata/Portal/IPOJournal/1_352_1/part3design.pdf +------- +02 January, 2015 +Part 1 (3.15 MB) http://www.ipindia.nic.in/writereaddata/Portal/IPOJournal/1_351_1/part1.pdf +Part 2 (3.07 MB) http://www.ipindia.nic.in/writereaddata/Portal/IPOJournal/1_351_1/part1.pdf +Part 3 (Design) (1.41 MB) http://www.ipindia.nic.in/writereaddata/Portal/IPOJournal/1_351_1/part1.pdf +------- diff --git a/download_patents_script/script_for_downloading_patents.py b/download_patents_script/script_for_downloading_patents.py new file mode 100644 index 0000000..181ef45 --- /dev/null +++ b/download_patents_script/script_for_downloading_patents.py @@ -0,0 +1,29 @@ +from selenium import webdriver +from selenium.common.exceptions import TimeoutException +from selenium.webdriver.support.ui import WebDriverWait # available since 2.4.0 +from selenium.webdriver.support import expected_conditions as EC # available since 2.26.0 +from selenium.webdriver.common.by import By + +driver= webdriver.Chrome("/home/killerbee/Desktop/automate/chromedriver") +#driver[l].set_window_size(10,10 , 'current') +driver.get("http://www.ipindia.nic.in/journal-patents.htm") +i=0 +out=open("1.txt","w") +link1 =driver.find_elements_by_partial_link_text("Part") +while i<150: + month =driver.find_elements_by_xpath("//table/tbody/tr["+str(i+1)+"]/td[2]") + t_size=driver.find_elements_by_xpath("//table/tbody/tr["+str(i+1)+"]/td[5]") + s=str(t_size[0].text) + list_s=s.split("\n") + out.write(month[0].text+"\n") + j=0 + while j abcdaaa +# tag ---------> axabcydaa +#Approach A1 +#now what we know is that the tag is complete and a subsequence of tag will be the data from html file ....but if we use s.get_matching_blocks() it returns the longest common subsequence which will be wrong consider +#Approach A2 +# data from html file--> international_total_publication +# tag ---------> international publication +#this will match while they are two different tags so...we cant use this approach +#my approach:- +#remove all the whitespaces from the universal.datastring and then we will use the approach A1 to extract tags from universal.datastring +def begin(): #return 1 if string is not present + universal.datastring="" + reopen(universal.filename+universal.filename+".html") #html-tag filename converted from pdf + #page = requests_session.get('file:///home/killerbee/Desktop/test2/'+filename) #file name + #universal.tree = html.fromstring(page.content) + s = universal.tree.itertext() +# universal.test=["(21) Application No","Date of filing of Application","Publication Date","Title of the invention","International classification","Priority Document","Priority Date","Name of priority country","International Application","Fil","International Publication","Patent of Addition to Application","Fil","Divisional to Application","Fil","Name of Applicant","(72)Name of Inventor","Abstract"] + for a in s: + universal.datastring += a + try: + return(extractor.getdetails(universal.datastring)) + except Exception as e: + logwriter.logwrite("Extracter: "+str(e)+" on page "+str(int(universal.filename)+1)) + universal.logflag = 1 + return -1 + return 0 +# write code for case when tayal returns -1 and you have to run your extraction function +# implement ur extraction function and then call it + + + + + + + + + + #extractor.getdetails(universal.datastring) +# for tag in universal.test: +# tempi=i +# # i=extractor(i,tag) +# if i==-1: +# if(extractor.mycheck(universal.datastring)==0): +# fappend=open("log.txt",'a') +# fappend.write("-->"+str(universal.filename)+"->"+tag+"--->"+universal.datastring[tempi:tempi+len(tag)]+'\n') +# fappend.close() +# return -1 +# i+=1 diff --git a/sqlite_version/Parser.pyc b/sqlite_version/Parser.pyc new file mode 100644 index 0000000000000000000000000000000000000000..def38d3aa38b0168bbd47f92837876f68c757682 GIT binary patch literal 1523 zcmb_b&1w@-6h3z*Nt-mWRjUzE2!b%Hjub=?5yk3CYDpI@gA%4QH|eA|GwHpz8lhd) zh4?;hd;y=q=WyvlzjM;q2hgEH8MIlIDW9C}~k%qfbQ1 z3gvYnZ4S8`HIPp68^1__`5NHRPt5k*Y{NXUW^y;IlWA$Xheg$zDeU2b(x+L zbsHm98{suKBQWYtOO{TkToDof2P1bUvQQ?IS(8CTA8OGnyg zA96Wt_0*)9_8b>(q>G-G#d~dCYJ3ZpPe+4cWpZu%utqy9=Iv$Orw8(m}$e4p-fO2k{j&#HU1l&Wg_^_Jj_^2>O+XJoRE$xncHH~++UhT*3 z*c4t5I8hWI@1)jgyD|MJ1zKHAb-98&9G5_9RozsPx~DR>I4n2o1s?YeFjvC>(}D~j z08CM^3t8}36`M60*F{4_v%7?WZ@s(0g2Gx20)ws|1-Rn)5$%0kC!_%#@j1mZ*xf7N zPz|#?YLWd)3Q|&Y`9Nxr3>1Z3U5Ks=%eOBQfDa!8ryyy7|-yE5>RrBf}tQ$2p literal 0 HcmV?d00001 diff --git a/sqlite_version/browser.py b/sqlite_version/browser.py new file mode 100644 index 0000000..26bd41c --- /dev/null +++ b/sqlite_version/browser.py @@ -0,0 +1,6 @@ +import Tkinter,tkFileDialog +def browse(): + root = Tkinter.Tk() + root.withdraw() + filez = tkFileDialog.askopenfilenames(parent=root,title='Choose a file',filetypes = (("pdf files","*.pdf"),("all files","*.*"))) + return root.tk.splitlist(filez) diff --git a/sqlite_version/browser.pyc b/sqlite_version/browser.pyc new file mode 100644 index 0000000000000000000000000000000000000000..fd48f813817feb2e85cb811e8322622ae52e9000 GIT binary patch literal 670 zcmbtRJ5K^Z5T4}_6)~~2w9tfDaGjMgCK3t@VvvH+ki#2fx#jk}86_C3^dFnp>dZ={ zFjj7EXTN!U^SJ1JzrGlK4DMikD)L^+r4tdUdoC!X=q0#jTQIA^O7gYT zp3rr< z)20sbSIWluJ8xU^SVcdxIb+F6)X#WFo`vOUS|$r_Xi(OX9@{o?{+ znInZv&cYN_IGNEBhtgb?@Y4J5={4cGDHaHV&IH9%KgT$;&S5!5jN3>V`y#$+cLp&% z2pNu^uq5mAcwG7gVc9B{VXxn67+-q^(=c^&Y{F0O>2`X${hp4nDf;iqTIzi6(?^FF KMlfjuhvo}48kCj* literal 0 HcmV?d00001 diff --git a/sqlite_version/controller.py b/sqlite_version/controller.py new file mode 100644 index 0000000..2f9c4a4 --- /dev/null +++ b/sqlite_version/controller.py @@ -0,0 +1,46 @@ +import main +import universal +import browser +import sqlitewriter +from shutil import copyfile +import os +#import test +universal.init() +sqlitewriter.init() +files=browser.browse() +for _file in files : + #main.run_command("cp "+str(_file)+" "+universal.current_dir) + src=str(_file) + universal.filename="" + temp=len(_file)-1 + while _file[temp]!="/": + universal.filename=_file[temp]+universal.filename + temp-=1 + tempfile = "copy"+universal.filename + dst=str(universal.current_dir+'/'+str("copy"+universal.filename)) + copyfile(src,dst) + universal.logfile = universal.filename.replace('.pdf','') #as univeral.filename changes in main + sqlitewriter.createconnection() + main.initial() + sqlitewriter.closeconnection() + + if(universal.logflag==0): + os.remove(universal.logfile+".txt") +# else: +# test.init(tempfile) + os.remove(tempfile) + os.remove(_file) + #main.run_command("rm "+universal.logfile) +#year=input("year\n") +#s=main.run_command("ls "+str(year),1).split("\n") +#fappend.close() +#for x in s: +# universal.filename=x +# main.run_command("mv "+str(year)+"/"+str(x)+" "+universal.current_dir) +# main.initial() +# main.run_command("mv "+universal.current_dir+"/"+str(x)+" "+str(year)) + +#fappend=open("log.txt",'a') +#fappend.write("\n********"+"\n"+str(year)+"\n*************\n\n\n") +#fappend.close() +#i=input("Filename\n") diff --git a/sqlite_version/convert.py b/sqlite_version/convert.py new file mode 100644 index 0000000..6dcb64a --- /dev/null +++ b/sqlite_version/convert.py @@ -0,0 +1,15 @@ +import commands +import universal +import logwriter +def run_command(string): + if commands.getstatusoutput(string)[0]!=0: + logwriter.logwrite("ERROR IN Commands.getstatusoutput "+string) +def convert(): + # run_command("pdf2txt.py -t html -Y exact "+"-o "+universal.filename+".html "+universal.current_dir+"/"+universal.year+"/"+universal.filename+".pdf") + run_command("pdf2txt.py -t tag -Y exact "+"-o "+universal.current_dir+"/"+universal.tag_folder+"/"+universal.filename+universal.filename+".html "+universal.current_dir +"/"+ universal.pdf_folder+"/"+universal.filename+".pdf") +#universal.init(); +#for i in range(8,622): +# #print(i) +# universal.filename=str(i); +# convert() #for initializing conversion of files + diff --git a/sqlite_version/convert.pyc b/sqlite_version/convert.pyc new file mode 100644 index 0000000000000000000000000000000000000000..f1282c9f02637d7471927b1936b6c28c50692cf1 GIT binary patch literal 898 zcmb_a&2G~`5T3PDXiE{ts^YTZNXId#hkrZ+Y3HPCxXr<^Q(I=EsbOKqY)QyP~TA^4XzGFC5 z8_zz^Bz;;#QMd>7tSDX<`o&bA`lcyc6DCW`flKa#?|IX+jy>=`Vyhv9?_l#+7$3mq z{PKNQv+ZK|c9%)ld;=Cb!XU|{f;hjUh z`IYTL?c2QaEg(-eANUqhyS|+dO$kv!6sZ%nyM`TCZ{Pq|pa+y3v!WFiP#qzbEgb!{ zU@-&yEpG3RID@SaYY6uw(@n!&=#5!C;A?47k6ClM)Z+_nugi*ckaosi<9Li6BxiET zjnlF52{L1yVh@hUXW!N`dFkS`Ro`{C<+-UlK9rDhIbV2Z2D%ruvu)Yf=tHf+_lxa+ yru-%j9d1Bike{5AOxi637Gf>L8b>IOfd1q0`zZIg@uqk7i7*(%aHQltNPhrWVZ*!t literal 0 HcmV?d00001 diff --git a/sqlite_version/excelwriter.py b/sqlite_version/excelwriter.py new file mode 100644 index 0000000..d4eef3a --- /dev/null +++ b/sqlite_version/excelwriter.py @@ -0,0 +1,97 @@ +import xlsxwriter +import universal +import logwriter +def init(): #for initializing the xlsx file + universal.workbook = xlsxwriter.Workbook(universal.filename.replace(".pdf","")+".xlsx") + universal.worksheet = universal.workbook.add_worksheet() + headformat = universal.workbook.add_format() + headformat.set_bold() + headformat.set_text_wrap() + universal.worksheet.set_row(0, 60) + universal.worksheet.set_column(0,3,11) + universal.worksheet.set_column(4,4,30) + universal.worksheet.set_column(5,5,20) + universal.worksheet.set_column(6,6,15) + universal.worksheet.set_column(7,8,7) + universal.worksheet.set_column(9,9,12) + universal.worksheet.set_column(10,10,13) + universal.worksheet.set_column(11,12,9) + universal.worksheet.set_column(13,13,15) + universal.worksheet.set_column(14,14,12) + universal.worksheet.set_column(15,17,14) + universal.worksheet.set_column(18,18,11) + universal.worksheet.set_column(19,19,14) + + universal.worksheet.write('A1',"Application No.",headformat) + universal.worksheet.write('B1',"Date of filling of Application",headformat) + universal.worksheet.write('C1',"Publication Date",headformat) + universal.worksheet.write('D1',"Name of Applicant",headformat) + universal.worksheet.write('E1',"Title of Invention",headformat) + universal.worksheet.write('F1',"Name of Inventor(s)",headformat) + universal.worksheet.write('G1',"Abstract",headformat) + universal.worksheet.write('H1',"No. of pages",headformat) + universal.worksheet.write('I1',"No. of claims",headformat) + universal.worksheet.write('J1',"International classification",headformat) + universal.worksheet.write('K1',"Priority Document No.",headformat) + universal.worksheet.write('L1',"Priority Date",headformat) + universal.worksheet.write('M1',"Name of priority country",headformat) + universal.worksheet.write('N1',"International Application No.",headformat) + universal.worksheet.write('O1',"International Application Filling Date",headformat) + universal.worksheet.write('P1',"International Publication No.",headformat) + universal.worksheet.write('Q1',"Patent of addition to Application No.",headformat) + universal.worksheet.write('R1',"Patent of addition to Application No. Filling Date",headformat) + universal.worksheet.write('S1',"Divisional to Application No.",headformat) + universal.worksheet.write('T1',"Divisional to Application No. Filling Date",headformat) + universal.row = 1 + universal.date_format = universal.workbook.add_format({'num_format':'dd mm yyyy'}) + #universal.workbook.close() + + +#inside for loop +def loop() : + try: + universal.worksheet.write(universal.row, 0, universal.data["Application No."]) + universal.worksheet.write(universal.row, 1, universal.data["Date of filing of Application"], universal.date_format) + universal.worksheet.write(universal.row, 2, universal.data["Publication Date"], universal.date_format) + universal.worksheet.write(universal.row, 3, universal.data["Name of Applicant"]) + universal.worksheet.write(universal.row, 4, universal.data["Title of the invention"]) + universal.worksheet.write(universal.row, 5, universal.data["Name of Inventor"]) + universal.worksheet.write(universal.row, 6, universal.data["Abstract"]) + if(universal.data["No. of Pages"].upper()!="NA"): + universal.worksheet.write(universal.row, 7, int(universal.data["No. of Pages"])) + else: + universal.worksheet.write(universal.row, 7, universal.data["No. of Pages"].upper()) + if(universal.data["No. of Claims"].upper()!="NA"): + universal.worksheet.write(universal.row, 8, int(universal.data["No. of Claims"])) + else: + universal.worksheet.write(universal.row, 8, universal.data["No. of Claims"].upper()) + universal.worksheet.write(universal.row, 9, universal.data["International classification"]) + universal.worksheet.write(universal.row, 10, universal.data["Priority Document No"]) + if(universal.data["Priority Date"] == "NA"): + universal.worksheet.write(universal.row, 11, universal.data["Priority Date"]) + else: + universal.worksheet.write(universal.row, 11, universal.data["Priority Date"],universal.date_format) + universal.worksheet.write(universal.row, 12, universal.data["Name of priority country"]) + universal.worksheet.write(universal.row, 13, universal.data["International Application No"]) + if(universal.data["IAFiling Date"] == "NA"): + universal.worksheet.write(universal.row, 14, universal.data["IAFiling Date"]) + else: + universal.worksheet.write(universal.row, 14, universal.data["IAFiling Date"],universal.date_format) + universal.worksheet.write(universal.row, 15, universal.data["International Publication No"]) + universal.worksheet.write(universal.row, 16, universal.data["Patent of Addition to Application Number"]) + if(universal.data["IBFiling Date"] == "NA"): + universal.worksheet.write(universal.row, 17, universal.data["IBFiling Date"]) + else: + universal.worksheet.write(universal.row, 17, universal.data["IBFiling Date"],universal.date_format) + universal.worksheet.write(universal.row, 18, universal.data["Divisional to Application Number"]) + if(universal.data["ICFiling Date"] == "NA"): + universal.worksheet.write(universal.row, 19, universal.data["ICFiling Date"]) + else: + universal.worksheet.write(universal.row, 19, universal.data["ICFiling Date"],universal.date_format) + + universal.row = universal.row + 1 + except Exception as e: + universal.logflag=1 + logwriter.logwrite("Excelfile : "+str(e)+" on page "+str(int(universal.filename)+1)) + + diff --git a/sqlite_version/excelwriter.pyc b/sqlite_version/excelwriter.pyc new file mode 100644 index 0000000000000000000000000000000000000000..50a9bd708a397367b441a8d648182d4d83e475da GIT binary patch literal 4543 zcmb_f+fv(B6y35RfVm|=AmplCASO+5l{9Iarfmo$EotjgCo{?9#bbN~2xQ6Ckps-M zPxL4HS^bPY_q8+W+FO<-TQ==OEU}T+zMidfbe8gePZr+a|L0Ae+P@tBKf#}V1fg&m zK z)4up1&rr`{Se#c9>%t zZD>NEGo(i7B%ek{N#R7GF0?=j=Xei_AUG#`&?!>Wq^5e%v!rmI>p^Eo;hgP3N7xYN z-8IazVJ6!gDV)7=CrO=WMR$aGQaF1@yg&+Pmo3~ckXq!PrXm2nNa|7+y-ey#7QIU9 zS{5})UC*L7NZrh$w@58z(PdJ%vuKgjN*29C>Z2@rm(<5ubd^*oi+)1N%A)s3-Or+* zl6sIuACmeki+)b(i!Azx)R$TGF{!Vz=+~saiBa`L7R6MuC>$)!HBwLMVS5Q-P7)U5 zI#yj-^ZHwDsvRsnEW%;FJ971r!?(_37I_xqEM)m!s(HEp&X(Ec>gXdTMD-wowah)88?79M^TcUA|0N zi{-kd&%$!6wcQEAUZUHuG^Z`s8WN@L>V=|wW@#?xl@q$6-Spns9v30n=a%L=W7kOO z2SvRi>Tj)(hr70|!=P4=0)A&{9yo@;bvA3ewieq>OLH6Ac-^fzjY#pr(wCvw^g=uE zWc)SPgkEcBr`-?<@V%wa!)_~Z{J;s1%?-caYM|Cmw|K8iwq~gc@v!$1Kgs29D07T8U< zR<}iQ82j)HL({4Z=snvGB}#I~HLyOaL436xR=0guh3v~Wp?wrq4})4$(l8SEhf*nD z*L}Cu@IqexQgp~K2R7jMgTj-G$Hy%YuRXh_+G7SpMHWIMN_&38E*)UH*ul1Kmo{vD z5cbsBXJamsXp{p}dDYNB-*yM>Lj<8DrWg;FvY$2OYVA znjViaqb^Y)`2EIjO5H-%V{<5?DEm3#D&RL@B_J6f6**dz9a1PvqR+?rAzEZhaE~Fd zj2q^o^1Xdqid|qdptiKh;M$@&hitdI zau++f|H|ZEiF3nfK<>0jcW(K_SpZhe(`&CxLwKzo6ews88Tb@2l&t?MR%SuIKJHLB zAymzv1rX8&+_jeuJ{~~Sq7NPZ*fBhV-Y6z&ck%iu3nA-Am7?8-ckdKY%JL+K$yQ&M zBm}QNM-s-T=i%95Na3DsIx$NU9wN(^{NKe9wBy^&{-V~8ore~)TBH^ojl6TV~3BS1pTEV^M)<+bV$!s6zZo=d6 z_OE#_OxVuaAhy$LY-1bb{dx0gI$eiMYZJOt=t(NTdO84eTX{Oqczb1fVLmc76Au$C zoVlx6WZGU?WWiLta*GACG}(Kx;nylm2Za!{noW=x`C0(G<}e($DQuc4i|g<1xV2r; z;5tQm;yZB$nXX)fc~K|?3tLFT2V)Md?>FxwtbPGOM&2-uWgKSvSTt60%SI#_n>B9Y zzWY#T>EQbn+!}Ce2kU;1@5|^ A`v3p{ literal 0 HcmV?d00001 diff --git a/sqlite_version/extractor.py b/sqlite_version/extractor.py new file mode 100644 index 0000000..bde7be5 --- /dev/null +++ b/sqlite_version/extractor.py @@ -0,0 +1,439 @@ +#confirm identity of WIPO number +#implement sql +#implement a method to find and convert patent files of all year one by one +# -*- coding: utf-8 -*- +import difflib +from collections import namedtuple +import operator +import re +import universal +import logwriter +import unicodedata +pages_tag="No of Pages" #tags for pages and claims in whole file. +claims_tag="No of Claims"#we are using No not No. so that we can match it with No, no, +Pair = namedtuple("Pair", ["start", "end"]) +Tag = namedtuple("Tag",["tag","start","end"]) +Tags=["(21) Application","Address Applicant","(22) Date filing Application","(19) India","(43) Publication Date","(54) Title Invention","(51) International classification","(31) Priority Document","(32) Priority Date","(33) Name priority country","(86) International Application","(87) International Publication","(61) Patent Addition Application","(62) Divisional Application","(71) Name Applicant","(72) Name Inventor","(57) Abstract",pages_tag, claims_tag] +indexvalues = [] +flag={}#flag[tag]=1 implies value to tag has been assigned used in line 194 main usage +data = {} +probability = 0.85 +reslt={} +#removes spaces and lowers the string + +def burst(patent): + words = patent.split() + w = [] + for word in words: + a = word.split(':') + for b in a: + if(b!=""): + w.append(b.strip()) + return w; + +def modify(string): + string="".join(burst(string)).lower() + return string +def lcs(S,T): + m = len(S) + n = len(T) + counter = [[0]*(n+1) for x in range(m+1)] + for i in range(m): + for j in range(n): + if S[i] == T[j]: + counter[i+1][j+1] = counter[i][j]+1 + else: + counter[i+1][j+1]=max(counter[i+1][j],counter[i][j+1]) + return counter[m][n] +def match(word,tag): + word=modify(word) + tag=modify(tag) + sq=lcs(word,tag) + return(float(float(sq)/float(max(len(word),len(tag))))) +#this function locates expression with MINIMUM LENGTH ,similar to tag in fstring having probability atleast p0 +#no restriction on arguments passed can be with or without spaces (as the match function matches the string after modifng it) +def locate(tag,fstring,p0): #return null for Address of applicant + if(tag.find("Address")!=-1): + return (-1,"") +# if(tag.find("International Application")!=-1): +# return (-1,"") +# return (-1,"") + tag=modify(tag) + string="" + for x in fstring: #for converting fstring(which can be a list ) into string + string+=x+" " + #print(tag+" "+string) + p=0.0 + start=0 + end=0 + i=0 + while i p): + p=arr + start=i + end=j + elif(p==arr): + p=arr + if(end-start>=j-i): + start=i + end=j + j+=1 + i+=1 + #print(tag+" "+string[start:end+1]+" "+str(p)) + if (start==0 and end==0) or (p= probability: + arr.append(index) + index = index+1 + return arr; + +def searchtag(words,tag): #returns pair of starting and ending index of a tag in words + tag = tag.lower() + query = tag.split()#query(list) + arr = matches(words,query[0]) #returns list containing indexes of occurence of query[0] in words + index = -1 #start index variable + index1 = -1 #end index variable +# print(query) +# print(words) +# print(arr) + for a in arr: + i=1 + flag = True + while i0): + if(val[0]==':'): + val = val[1:] + if(len(val)>0): + data[indexvalues[p].tag] = val.strip() + else : + data[indexvalues[p].tag] = "NA" + else : + data[indexvalues[p].tag] = "NA" + flag[indexvalues[p].tag]=1 + p = p+1 + val = ' '.join(words[indexvalues[p].end+1:]) + if(len(val)>0 and val[0]==':'): + val = val[1:] + if(bool(val.lower().find("continued")!=-1)&bool(val.lower().find("to")!=-1)&bool(val.lower().find("part")!=-1)): + position = val.lower().find("continued") + val = val[:position] + data[indexvalues[p].tag] = val.strip() + flag[indexvalues[p].tag] = 1 + if(flag[pages_tag]==0): + data[pages_tag] = "NA" + if(flag[claims_tag]==0): + data[claims_tag] = "NA" + for tag in data: + if(bool(data[tag]=="")|bool(data[tag]=="na")|bool(data[tag]=="n.a.")|bool(data[tag].lower()=="nil")): + data[tag]="NA" + if(is_ascii(data[tag])==False): + data[tag] = transformunicode(data[tag]) + data[tag] = formatval(data[tag]) + #if(flag["(21) Application"]!=1): + data["(21) Application"] = formatdocumentno(data["(21) Application"]) + #if(flag["(31) Priority Document"]!=1): + data["(31) Priority Document"] = formatdocumentno(data["(31) Priority Document"]) + #if(flag["(87) International Publication"]!=1): + data["(87) International Publication"] = formatdocumentno(data["(87) International Publication"]) + #if(flag["(61) Patent Addition Application"]): + data["(61) Patent Addition Application"] = formatfilingno(data["(61) Patent Addition Application"],"(61) Patent Addition Application") + #if(flag["(62) Divisional Application"]!=1): + data["(62) Divisional Application"] = formatfilingno(data["(62) Divisional Application"],"(62) Divisional Application") + #if(flag["(86) International Application"]!=1): + data["(86) International Application"] = formatfilingno(data["(86) International Application"],"(86) International Application") + data["(54) Title Invention"] = formatstring(data["(54) Title Invention"]) + # if(flag["(57) Abstract"]!=1): + data["(57) Abstract"] = formatabstract(data["(57) Abstract"]) + data["(32) Priority Date"] = formatdate(data["(32) Priority Date"]) + data["(43) Publication Date"] = formatdate(data["(43) Publication Date"]) + data["(22) Date filing Application"] = formatdate(data["(22) Date filing Application"]) + #data["(87) WIPO"]=formatdocumentno(data["(87) WIPO"]) + #if(data["(87) International Publication"]=="NA"): #assuming WIPO=International publication + data["(87) International Publication"]=formatdocumentno(data["(87) International Publication"]) + #if(flag["(21) Application"]!=1): + universal.data["Application No."] = data["(21) Application"] + #if(flag["(22) Date filing Application"]!=1): + universal.data["Date of filing of Application"] = data["(22) Date filing Application"] + #if(flag["(43) Publication Date"]!=1): + universal.data["Publication Date"] = data["(43) Publication Date"] + #if(flag["(71) Name Applicant"]!=1): + universal.data["Name of Applicant"] = formatstring(data["(71) Name Applicant"]) +" Address of Applicant : " + formatstring(data["Address Applicant"]) + #if(flag["(54) Title invention"]!=1): + universal.data["Title of the invention"] = data["(54) Title Invention"] + #if(flag["(72) Name Inventor"]!=1): + universal.data["Name of Inventor"] = formatstring(data["(72) Name Inventor"]) + #if(flag["(57) Abstract"]!=1): + universal.data["Abstract"] = data["(57) Abstract"] + #if(flag[pages_tag]!=1): + universal.data["No. of Pages"] = data[pages_tag] + #if(flag[claims_tag]!=1): + universal.data["No. of Claims"] = data[claims_tag] + #if(flag["(51) International classification"]!=1): + universal.data["International classification"] = data["(51) International classification"] + #if(flag["(31) Priority Document"]!=1): + universal.data["Priority Document No"] = data["(31) Priority Document"] + #if(flag["(32) Priority Date"]!=1): + universal.data["Priority Date"] = data["(32) Priority Date"] + #if(flag["(33) Name priority country"]!=1): + universal.data["Name of priority country"] = data["(33) Name priority country"] + #if(flag["(86) International Application"]!=1): + universal.data["International Application No"] = data["(86) International Application"] + # if(flag["(86) International Application Filing Date"]!=1): + universal.data["IAFiling Date"] = data["(86) International Application Filing Date"] + #if(flag["(87) International Publication"]!=1): + universal.data["International Publication No"] = data["(87) International Publication"] + #if(flag["(61) Patent Addition Application"]!=1): + universal.data["Patent of Addition to Application Number"] = data["(61) Patent Addition Application"] + # if(flag["(61) Patent Addition Application Filing Date"]!=1): + universal.data["IBFiling Date"] = data["(61) Patent Addition Application Filing Date"] + #if(flag["(62) Divisional Application"]!=1): + universal.data["Divisional to Application Number"] = data["(62) Divisional Application"] + # if(flag["(62) Divisional Application Filing Date"]!=1): + universal.data["ICFiling Date"] = data["(62) Divisional Application Filing Date"] + +def getdetails(new_patent):#new_patent must have spaces b/w consecutive words + patent="" + data.clear() + flag.clear() + del indexvalues[:] + for j in range (0,len(new_patent)): + if(new_patent[j]=='('): + if(new_patent[j+1].isdigit()): + patent+=" (" + elif(new_patent[j]==')'): + if(new_patent[j-1].isdigit()): + patent+=") " + else: + patent+=new_patent[j] + temp_patent = patent #temp_patent is the original string with capital letters + patent = patent.lower() + words = burst(patent)#word(list) contains lower letter string + if(check(words)==True):#check checks if pdf has patent + tagindex=0 + for tag in Tags: + flag[tag]=0#flag[tag]=1 implies value to tag has been assigned + pages,claims = getnoofpagesandclaims(words) #here we are going to give values to no of pages and no of claims tags and insert the starting and ending index in indexvalues + if(bool(pages.start!=-1) & bool(pages.end!=-1)): + indexvalues.append(Tag(pages_tag,pages.start,pages.end))#flag has been asigned 1 already in getnoofpagesandclaims + if(bool(claims.start!=-1) & bool(claims.end!=-1)): + indexvalues.append(Tag(claims_tag,claims.start,claims.end))#flag has been asigned 1 already in getnoofpagesandclaims + + while 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 WI{aVaKgFIbe6@7uR1<>29)AIF?r7Nn literal 0 HcmV?d00001 diff --git a/sqlite_version/main.py b/sqlite_version/main.py new file mode 100644 index 0000000..0bd3a06 --- /dev/null +++ b/sqlite_version/main.py @@ -0,0 +1,73 @@ +import convert +import universal +import commands +import excelwriter +import Parser +import logwriter +import sqlitewriter +from PyPDF2 import PdfFileWriter, PdfFileReader +import os +import shutil + +def burstpdf(): + file = open("copy"+universal.filename, 'rb') + infile = PdfFileReader(file) + no_of_pages = infile.getNumPages() + for i in range(infile.getNumPages()): + p = infile.getPage(i) + outfile = PdfFileWriter() + outfile.addPage(p) + with open(universal.pdf_folder+'/%d.pdf' % i, 'wb') as f: + outfile.write(f) + file.close() + return no_of_pages +##def run_command(string,flag=0): +## if commands.getstatusoutput(string)[0]==1: +## raise NameError("ERROR IN Commands.getstatusoutput "+string) +## if flag==1: +## return commands.getstatusoutput(string)[1] +def initial(): + #run_command("mkdir "+universal.pdf_folder) + try: + os.mkdir(universal.pdf_folder) + os.mkdir(universal.tag_folder) + except Exception as e: + shutil.rmtree(universal.pdf_folder) + shutil.rmtree(universal.tag_folder) + os.mkdir(universal.pdf_folder) + os.mkdir(universal.tag_folder) + temp=universal.filename #assigning filename to temp + no_of_pages=burstpdf() + logwriter.logwrite("\n********"+"\n"+str(temp)+"\n*************\n") + if no_of_pages==0: + logwriter.logwrite("No pages in this pdf\n") + logwriter.logwrite("********"+"\n"+str(temp)+"\n*************\n") + return 0 + i=0 + excelwriter.init() + while i~MBo`^{ATYP+@1|2~~i`8fFh7R&q! z65^*QA@c8dMZVg|9rB$GUm?G;;j83VH++r!+J>)_Ul-n?WQ)=U`3*{&AP&j_|l5U_4r8=!D za;8dlOAbJ_Msb5yIIl>-7dvWlQcykYA}9F!<$!K*7Md=t>Y_P9Iet97_>M*hBW|%V zwQ|b52eyj9C;8&qa_+_0a7O)4!)J?dDx%AAZ<}*ty?miF+XS=BqMvkOg2Xnko1#)# zkZMn{Vhd!Z?O>S>gPAtS5q5(NA~uab7JFbhGom02Szul8@Od`P6BJlZU2^q>n zJyw@E*rBas7iGe-%Pc?3r)LXs$#Fy|4=jq0d}&3GCDR@V2{B)S>!0VT?$4tn(ZyKn z{;@W5n=ksq;}@rWbCDo~GtM>2vwj*x*)x=ilO8V%V-YYH#~gx?I#kMBoe|K&fvfa z7I2KViFX8USFaeOur>!228ta?(g^0PL3Wqo-8C%H^;`56pY2e*$Fi_N^9mKO#oE4T z*$*gQbHj_*gx?5<*wg`CMGqYP@oq2%H)$9K}6;e$RIxw#2-c3kv)&h z5di5LhUdmgB)!1X&2Wdg8@Vga-m&X-p^E&_@$3Fg=V4TM+;N@^12$!Y*``@J?jNou zdSTHe(wOFaX`@8gBDICq9yhPYeIf%S$!F5th4j*9hf#^dY#}p5!(dV>aRWtJWTl%Y zd4`6xVtg1BrkoaIJ&Q6K4@sUcfH9bo_I+SunglcPc$pXTah}h;9jNu#yo?Ji=dDf` z-X3J$K7Yk}&w0VQbNEq^JOOJ4Y|^Qyjyk}w=*WA3q0v;2F+kd&RaM9E*v0EQuG$Ch zs)lMhB9T3Rch!z+I~}K^dYp&%5fi>8$#IgWX^@4+J7V$2OxU~k8OXYL*BEloWfaTk q_W0Vp$4vO5yr&@d*$ekxBlGJt50{Dlh9M~ox literal 0 HcmV?d00001 diff --git a/sqlite_version/merge.py b/sqlite_version/merge.py new file mode 100644 index 0000000..9db0d4a --- /dev/null +++ b/sqlite_version/merge.py @@ -0,0 +1,123 @@ +#first write before the loop - init() +#then use - readfile() +#after ending of loop write outside the loop - universal.workbook.close() + +import openpyxl +from openpyxl import Workbook +import universal + +def init(): #for initializing the xlsx file + fname = (str)input("Enter year name(without extension) : ") + universal.workbook = xlsxwriter.Workbook(fname+".xlsx") + universal.worksheet = universal.workbook.add_worksheet() + headformat = universal.workbook.add_format() + headformat.set_bold() + headformat.set_text_wrap() + universal.worksheet.set_row(0, 60) + universal.worksheet.set_column(0,3,11) + universal.worksheet.set_column(4,4,30) + universal.worksheet.set_column(5,5,20) + universal.worksheet.set_column(6,6,15) + universal.worksheet.set_column(7,8,7) + universal.worksheet.set_column(9,9,12) + universal.worksheet.set_column(10,10,13) + universal.worksheet.set_column(11,12,9) + universal.worksheet.set_column(13,13,15) + universal.worksheet.set_column(14,14,12) + universal.worksheet.set_column(15,17,14) + universal.worksheet.set_column(18,18,11) + universal.worksheet.set_column(19,19,14) + + universal.worksheet.write('A1',"Application No.",headformat) + universal.worksheet.write('B1',"Date of filling of Application",headformat) + universal.worksheet.write('C1',"Publication Date",headformat) + universal.worksheet.write('D1',"Name of Applicant",headformat) + universal.worksheet.write('E1',"Title of Invention",headformat) + universal.worksheet.write('F1',"Name of Inventor(s)",headformat) + universal.worksheet.write('G1',"Abstract",headformat) + universal.worksheet.write('H1',"No. of pages",headformat) + universal.worksheet.write('I1',"No. of claims",headformat) + universal.worksheet.write('J1',"International classification",headformat) + universal.worksheet.write('K1',"Priority Document No.",headformat) + universal.worksheet.write('L1',"Priority Date",headformat) + universal.worksheet.write('M1',"Name of priority country",headformat) + universal.worksheet.write('N1',"International Application No.",headformat) + universal.worksheet.write('O1',"International Application Filling Date",headformat) + universal.worksheet.write('P1',"International Publication No.",headformat) + universal.worksheet.write('Q1',"Patent of addition to Application No.",headformat) + universal.worksheet.write('R1',"Patent of addition to Application No. Filling Date",headformat) + universal.worksheet.write('S1',"Divisional to Application No.",headformat) + universal.worksheet.write('T1',"Divisional to Application No. Filling Date",headformat) + universal.row = 1 + universal.date_format = universal.workbook.add_format({'num_format':'dd mm yyyy'}) + #universal.workbook.close() + + +#inside for loop +def loop() : + universal.worksheet.write(universal.row, 0, universal.data["Application No."]) + universal.worksheet.write(universal.row, 1, universal.data["Date of filing of Application"], universal.date_format) + universal.worksheet.write(universal.row, 2, universal.data["Publication Date"], universal.date_format) + universal.worksheet.write(universal.row, 3, universal.data["Name of Applicant"]) + universal.worksheet.write(universal.row, 4, universal.data["Title of the invention"]) + universal.worksheet.write(universal.row, 5, universal.data["Name of Inventor"]) + universal.worksheet.write(universal.row, 6, universal.data["Abstract"]) + if(universal.data["No. of Pages"].upper()!="NA"): + universal.worksheet.write(universal.row, 7, int(universal.data["No. of Pages"])) + else: + universal.worksheet.write(universal.row, 7, universal.data["No. of Pages"].upper()) + if(universal.data["No. of Claims"].upper()!="NA"): + universal.worksheet.write(universal.row, 8, int(universal.data["No. of Claims"])) + else: + universal.worksheet.write(universal.row, 8, universal.data["No. of Claims"].upper()) + universal.worksheet.write(universal.row, 9, universal.data["International classification"]) + universal.worksheet.write(universal.row, 10, universal.data["Priority Document No"]) + if(universal.data["Priority Date"] == "NA"): + universal.worksheet.write(universal.row, 11, universal.data["Priority Date"]) + else: + universal.worksheet.write(universal.row, 11, universal.data["Priority Date"],universal.date_format) + universal.worksheet.write(universal.row, 12, universal.data["Name of priority country"]) + universal.worksheet.write(universal.row, 13, universal.data["International Application No"]) + if(universal.data["IAFiling Date"] == "NA"): + universal.worksheet.write(universal.row, 14, universal.data["IAFiling Date"]) + else: + universal.worksheet.write(universal.row, 14, universal.data["IAFiling Date"],universal.date_format) + universal.worksheet.write(universal.row, 15, universal.data["International Publication No"]) + universal.worksheet.write(universal.row, 16, universal.data["Patent of Addition to Application Number"]) + if(universal.data["IBFiling Date"] == "NA"): + universal.worksheet.write(universal.row, 17, universal.data["IBFiling Date"]) + else: + universal.worksheet.write(universal.row, 17, universal.data["IBFiling Date"],universal.date_format) + universal.worksheet.write(universal.row, 18, universal.data["Divisional to Application Number"]) + if(universal.data["ICFiling Date"] == "NA"): + universal.worksheet.write(universal.row, 19, universal.data["ICFiling Date"]) + else: + universal.worksheet.write(universal.row, 19, universal.data["ICFiling Date"],universal.date_format) + universal.row = universal.row + 1 + +def readfile(): + wb = load_workbook(universal.filename) + ws = wb.active + for row in range(1,universal.worksheet.rows): + universal.data["Application No."] = ws['A'+str(row)] + universal.data["Date of filing of Application"] = ws['B'+str(row)] + universal.data["Publication Date"] = ws['C'+str(row)] + universal.data["Name of Applicant" = ws['D'+str(row)] + universal.data["Title of the invention"] = ws['E'+str(row)] + universal.data["Name of Inventor"] = ws['F'+str(row)] + universal.data["Abstract"] = ws['G'+str(row)] + universal.data["No. of Pages"] = ws['H'+str(row)] + universal.data["No. of Claims"] = ws['I'+str(row)] + universal.data["International classification"] = ws['J'+str(row)] + universal.data["Priority Document No"] = ws['K'+str(row)] + universal.data["Priority Date"] = ws['L'+str(row)] + universal.data["Name of priority country"] = ws['M'+str(row)] + universal.data["International Application No"] = ws['N'+str(row)] + universal.data["IAFiling Date"] = ws['O'+str(row)] + universal.data["International Publication No"] = ws['P'+str(row)] + universal.data["Patent of Addition to Application Number"] = ws['Q'+str(row)] + universal.data["IBFiling Date"] = ws['R'+str(row)] + universal.data["Divisional to Application Number"] = ws['S'+str(row)] + universal.data["ICFiling Date"] = ws['T'+str(row)] + loop() + wb.close() diff --git a/sqlite_version/need.py b/sqlite_version/need.py new file mode 100644 index 0000000..c113193 --- /dev/null +++ b/sqlite_version/need.py @@ -0,0 +1,56 @@ +import requests +import os +from urllib import url2pathname + +class LocalFileAdapter(requests.adapters.BaseAdapter): + """Protocol Adapter to allow Requests to GET file:// URLs + + @todo: Properly handle non-empty hostname portions. + """ + + @staticmethod + def _chkpath(method, path): + """Return an HTTP status for the given filesystem path.""" + if method.lower() in ('put', 'delete'): + return 501, "Not Implemented" # TODO + elif method.lower() not in ('get', 'head'): + return 405, "Method Not Allowed" + elif os.path.isdir(path): + return 400, "Path Not A File" + elif not os.path.isfile(path): + return 404, "File Not Found" + elif not os.access(path, os.R_OK): + return 403, "Access Denied" + else: + return 200, "OK" + + def send(self, req, **kwargs): # pylint: disable=unused-argument + """Return the file specified by the given request + + @type req: C{PreparedRequest} + @todo: Should I bother filling `response.headers` and processing + If-Modified-Since and friends using `os.stat`? + """ + path = os.path.normcase(os.path.normpath(url2pathname(req.path_url))) + response = requests.Response() + + response.status_code, response.reason = self._chkpath(req.method, path) + if response.status_code == 200 and req.method.lower() != 'head': + try: + response.raw = open(path, 'rb') + except (OSError, IOError), err: + response.status_code = 500 + response.reason = str(err) + + if isinstance(req.url, bytes): + response.url = req.url.decode('utf-8') + else: + response.url = req.url + + response.request = req + response.connection = self + + return response + + def close(self): + pass diff --git a/sqlite_version/need.pyc b/sqlite_version/need.pyc new file mode 100644 index 0000000000000000000000000000000000000000..8278898001efbbdf1a9bbc79d49f2e527433601f GIT binary patch literal 2600 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 literal 0 HcmV?d00001 diff --git a/sqlite_version/test.py b/sqlite_version/test.py new file mode 100644 index 0000000..39e184f --- /dev/null +++ b/sqlite_version/test.py @@ -0,0 +1,55 @@ +import universal +from Tkinter import * +import commands +import os +def run_command(string): + #print(string) + x=commands.getstatusoutput(string) + if x[0]==1: + raise NameError("ERROR IN Commands.getstatusoutput "+string) + return(x[1]) + +def fetch(entries): + for entry in entries: + field = entry[0] + text = entry[1].get() +def makeform(root): + entries = [] + for field in universal.data: + row = Frame(root) + lab = Label(row, text=field, anchor='w',height=10) + ent = Entry(row,) + row.pack(side=TOP, fill=X) + lab.pack(side=LEFT) + ent.pack(side=RIGHT, expand=YES) + try: + ent.insert(0,universal.data[field]) + except : + zzz=1 + entries.append((field, ent)) + return entries +def fopen(tempfile): + _file=open(universal.logfile+".txt","r").readlines() + _page_number=0 + x="" + x=x[:len(x)-3] + x=x+"pdf" + for z in _file: + if(z.find("on page")!=-1): + _page_number=int(z[z.find("page")+5:]) + #run_command("pdftk /media/killerbee/desktop/\"all patent files downloded\"/\"patent 2011\"/\""+x+"\" cat "+str(_page_number)+"-"+str(_page_number)+" output 3/\""+x+"\"") + run_command("evince --page-label="+str(_page_number)+" "+tempfile) + #print("evince --page-label="+str(_page_number)+" "+tempfile) + #print(x) + #x=input("en") +def init(tempfile): + #fopen(tempfile) + root = Tk() + ents = makeform(root) + root.bind('', (lambda event, e=ents: fetch(e))) + b1 = Button(root, text='Show', + command=(lambda e=ents: fetch(e))) + b1.pack(side=LEFT, padx=5, pady=5) + b2 = Button(root, text='Quit', command=root.quit) + b2.pack(side=LEFT, padx=5, pady=5) + root.mainloop() diff --git a/sqlite_version/test.pyc b/sqlite_version/test.pyc new file mode 100644 index 0000000000000000000000000000000000000000..f956352e0f4c3b9ecef7fde192a5633b6fa9229b GIT binary patch literal 2791 zcmb_eUr!rH5TCsRgAEkaq;Vo>V?~N&RRSwSs@jU8s{BbKB~E%qf+8X7>|Mjz=R0$| zCI-Pv$)~CM-1mNgewjY@q5aLAUD8&4X)x?~c6VlX{`_Xv{%;GV$1A@dv}yeD@clK0 zZGve0D~gE@bKav^(cXB~qeE{Z;nSf{+NZY=ogzIY%rxm~VG5)R!pxAK5oVUpZB%D* zNAw3i^{N8vn0(r1%4YZ&TNw6B5J%KibV+or=n9PD6CP-fdLCu#m6Iz9*ej| zO#UI}idd_MeY2BgX;x*kT>-?pEJ}{Wp-~lc5@Mf%tDU5MQ|m=>Y_gUywQXa2E*;cf zZ|@$|>}ec1(>ybojnbs%jCE^+b2kUQY?w61rc7gM*);MN)sniSBxdaAUoop;f}0VM z?W4*&5xepxf$1WaL{~nY&d@$`+7OT52~?gFJ`qk!6x|FaCV_9Ti;ZCZT)0kTV(r)j zXGZQ8T;}6D#>}8SCC_PqGT-HAFOr@mR}!i7 zW#WxF(!~j6fx&B!)PAx6Eu~9zRiH%C0U+F+XKSF)@%V0ax5YfV&Qfqy?ntSZ1)gBqP!@(p0g_r=AW4kkNwfYEc)J2Zs({*=SD#?q z19wmPY8j)X$~nk5Dm(;aKY>9Hg6~~`M^PCVLRz~3jX+QP3^+gv1qA@X&m2!c*!@br z21J#?jhbA6+eiBZ+>KEMh@qj)QqQOCCFdOLm8krX(FshWiOz9j0&=iY*7H;b z$hq&S)0c$*eJN(ncinRC*4)TR&N6`myg(=9pi6`Yx??#rX;K-4$41(*WJzZ1zr71$ z&Z4AkDyyr!yoxlL_$xWIQe{wyMv62CcX-AJ#_2K8XasYa33VJL=o)-)jO?;uohZ?= z5G5|)3YQ65XO*v&-s?<%AgAz3Q#kGiO}3($4ErsU1tQFy{WhS&hjrMIhhXf7Af#4+ zl!CeoWGtwU)W=?%FJnP=Q_%4v7{oP)0>Xj>=h@;S7rf+M=PlOJ3*aX<0GYf6@g5#X z*70(vbkUm7dC-OMQlh_g4@c+!x!Ab+I;*3Mr#j)6JjTIGnCTdLHJIPAA{xcP+5z@WSlGGZDh z=o1|E@k1z?;JexMznLvR6#i{C%Lbo=yuYo%7dYlAMs6ebm2utZQ6!jTiwB`Tm*ww< zk&_=hc$Cmad%@$0LW|3Q;s4FhxiksxgAJA^yQk2TQs{?K5~t}viX&KOp~^%EDX?;G z>q-8#{{H@n)lm|;Ros$Sf>)GYxu_OV6U!J<`!^-O*FzxLEw)PamNm82|tP literal 0 HcmV?d00001 diff --git a/sqlite_version/universal.py b/sqlite_version/universal.py new file mode 100644 index 0000000..c064946 --- /dev/null +++ b/sqlite_version/universal.py @@ -0,0 +1,41 @@ +#file containing global variables +import os +def init(): + global tag #records the name of the keys in data dictionary + tag=["Application No.","Date of filing of Application","Publication Date","Name of Applicant","Title of the invention","Name of Inventor","Abstract","No. of Pages","No. of Claims","International classification","Priority Document No","Priority Date","Name of priority country","International Publication No","International Application No","IAFiling Date","Patent of Addition to Application Number","IBFiling Date","Divisional to Application Number","ICFiling Date"] + global dbname + dbname = "patents" + global tablename + tablename = "patent_tables" + global host + host = "127.0.0.1" + global user + user = "root" + global password + password = "123" + global data + data={} + global tree + global con +# global test +# test=[] + global datastring + datastring="" + global filename #filename of pdf file containing patents + filename="15" + global current_dir + current_dir=os.getcwd() #In future use in-built python function which is platform independent. + global pdf_folder #name of folder containing pdf burst files + pdf_folder="3" + global tag_folder #name of folder containing tag-html file + tag_folder="tag_folder" + global workbook + global worksheet + global date_format + global row #row counter + global flag #Flag for process of extraction has started or not + flag=0 + global logfile#filename is set to universal.logfile.txt + logfile="" + global logflag #for knowing whether something was written to log file or not + logflag = 0 diff --git a/sqlite_version/universal.pyc b/sqlite_version/universal.pyc new file mode 100644 index 0000000000000000000000000000000000000000..b4e6e979b8e9ec295d1543e88205d950b02a789a GIT binary patch literal 1285 zcmbtU&u-Mood ze5fzst^S3p`+%&$bep)@W2C0fr|eK(b2$JWol0YL5ii_DQUeCKBL$Mgp|YNtDU2(dP<%g&*VxB*1@2 z0uo0gpn^yU!G;#0fEP%z>o&2Trm4}f@Y*I(*EZZCd~M-XWQWmE8=Z{UT8MI6i0I{m z2NXxUZ6*}s0GkCT-tEHsQF{~I{#r#kxm5{k1(th2CwOh<%ZNW6IG>5wyDC%K2Fv%v zNIADLcbprc$IczV(@DI_l2Cv!QEY^BdN`}d@u~DOZ8PmBQQOA(81kqyaLr$E1$)ds zt029H#5PZSHu;OtVh6zYXC@0RyBF-7UQ9b0T2|-Wpp1mL!&2&S2;MGsJL=}+fyzR@ zowG%F1bAEDYKLy3@PEM07hrxBur#PT&kdd0eJ=(EEnb7Cb^N;V5_iilW0zU$JFK99zB`-A;FZFQpuh&E0>cZt9_}nfKKIbmfs~0 zSfCyn6@wlX*B K9m_ags)gUPN<}aL literal 0 HcmV?d00001 diff --git a/xlsx_meger/browser.py b/xlsx_meger/browser.py new file mode 100644 index 0000000..6796140 --- /dev/null +++ b/xlsx_meger/browser.py @@ -0,0 +1,6 @@ +import Tkinter,tkFileDialog +def browse(): + root = Tkinter.Tk() + root.withdraw() + filez = tkFileDialog.askopenfilenames(parent=root,title='Choose a file',filetypes = (("excel files","*.xlsx"),("all files","*.*"))) + return root.tk.splitlist(filez) diff --git a/xlsx_meger/browser.pyc b/xlsx_meger/browser.pyc new file mode 100644 index 0000000000000000000000000000000000000000..6392a84f3ba13d630446959cd243b9ac92f00adf GIT binary patch literal 668 zcmbtRJ5R$v4E8mp&;k-8BLhfP2ZERpLZV_|K&UVP3rZW)UUKP0XQLJb6Z~U-0N7U^ z3u56E`+T;)&yOT;>z(tx*7XQJPebk_5!w-z%V)p=+x(uhaAX z$yKU@-&Q!rkPd^N5r*CRA#Qf@jMHnsVAf2>Y@7I-2fCbru5O_1{}lXJRV{N+`TXAD Lp%I(3_@?;)OJI_< literal 0 HcmV?d00001 diff --git a/xlsx_meger/controller.py b/xlsx_meger/controller.py new file mode 100644 index 0000000..57628f0 --- /dev/null +++ b/xlsx_meger/controller.py @@ -0,0 +1,28 @@ +import universal +import browser +import merger +from shutil import copyfile +import os +#import test +universal.init() +merger.init() +files=browser.browse() +for _file in files : + #main.run_command("cp "+str(_file)+" "+universal.current_dir) + src=str(_file) + universal.filename="" + temp=len(_file)-1 + while _file[temp]!="/": + universal.filename=_file[temp]+universal.filename + temp-=1 + universal.filename = "copy"+universal.filename + dst=str(universal.current_dir+'/'+str(universal.filename)) + try: + copyfile(src,dst) + except e as Exception: + print(str(e)+" for file "+str(universal.filename)) + merger.readfile() + os.remove(tempfile) + os.remove(_file) +universal.workbook.close() + diff --git a/xlsx_meger/copyapr 1.xlsx b/xlsx_meger/copyapr 1.xlsx new file mode 100644 index 0000000000000000000000000000000000000000..9fa5075697d2f70310ab07831f0702c1a88934bf GIT binary patch literal 110003 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

04x!FJ{ITBaOF~SmBG0*nmc%VhGYc2E3!4e7s?3 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

m3aR6(4UNu>juSxjOi8r;C@78o6qFz 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 z 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 S*TTK6es9r&U-lL@fd2uOn~Dnn literal 0 HcmV?d00001 diff --git a/xlsx_meger/copycopyapr 1.xlsx b/xlsx_meger/copycopyapr 1.xlsx new file mode 100644 index 0000000000000000000000000000000000000000..9fa5075697d2f70310ab07831f0702c1a88934bf GIT binary patch literal 110003 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

04x!FJ{ITBaOF~SmBG0*nmc%VhGYc2E3!4e7s?3 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

m3aR6(4UNu>juSxjOi8r;C@78o6qFz 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 z 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 S*TTK6es9r&U-lL@fd2uOn~Dnn literal 0 HcmV?d00001 diff --git a/xlsx_meger/main.pyc b/xlsx_meger/main.pyc new file mode 100644 index 0000000000000000000000000000000000000000..d6feea3807eeca776f524fd0ec0cf4ad9b1c1f61 GIT binary patch literal 2107 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 LQ!bP~EG_>ZLrBAl literal 0 HcmV?d00001 diff --git a/xlsx_meger/universal.py b/xlsx_meger/universal.py new file mode 100644 index 0000000..c064946 --- /dev/null +++ b/xlsx_meger/universal.py @@ -0,0 +1,41 @@ +#file containing global variables +import os +def init(): + global tag #records the name of the keys in data dictionary + tag=["Application No.","Date of filing of Application","Publication Date","Name of Applicant","Title of the invention","Name of Inventor","Abstract","No. of Pages","No. of Claims","International classification","Priority Document No","Priority Date","Name of priority country","International Publication No","International Application No","IAFiling Date","Patent of Addition to Application Number","IBFiling Date","Divisional to Application Number","ICFiling Date"] + global dbname + dbname = "patents" + global tablename + tablename = "patent_tables" + global host + host = "127.0.0.1" + global user + user = "root" + global password + password = "123" + global data + data={} + global tree + global con +# global test +# test=[] + global datastring + datastring="" + global filename #filename of pdf file containing patents + filename="15" + global current_dir + current_dir=os.getcwd() #In future use in-built python function which is platform independent. + global pdf_folder #name of folder containing pdf burst files + pdf_folder="3" + global tag_folder #name of folder containing tag-html file + tag_folder="tag_folder" + global workbook + global worksheet + global date_format + global row #row counter + global flag #Flag for process of extraction has started or not + flag=0 + global logfile#filename is set to universal.logfile.txt + logfile="" + global logflag #for knowing whether something was written to log file or not + logflag = 0 diff --git a/xlsx_meger/universal.pyc b/xlsx_meger/universal.pyc new file mode 100644 index 0000000000000000000000000000000000000000..5e2262dbc185a6aaf07650e86ffd74cfd50b5c11 GIT binary patch literal 1277 zcmbVMO>Yx15S^rLnx-lJpp+Kcvd5ef(t@}kMB4}{mnbS6DlU<;cDAO@dbRfU;|xE9 z|A@pD-Z*I!3B-Zj#5QXE|6R#xkR!;a+ze6!FcWJl3R8=WR>%|*ElMD&Z{ z1B#>FCKHNrfK7u_?{?t*q`e7lf2ks!UaOR~0?R$18@x96Rm7hRozF$=U7aayljZv& zQO>Q+9A`%8v2*+IbW^YLG!!6A6dU239!)E9d@B81+g$s*sAJ<|40+TUxMnZ7f?Z~x zR*>C8Vq2s>zx#{Odc!Cyvd*^!$gJhla%FZ`*sk+FSPd@ce2W+U`