Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import csv
- import os
- import wx
- from tika import parser
- content = []
- numbers = []
- res_path = ''
- class MyFrame(wx.Frame):
- def __init__(self):
- super().__init__(parent=None, title='PDF-CSV(compare app)', size=(1000, 175),
- style=wx.DEFAULT_FRAME_STYLE & ~(wx.RESIZE_BORDER | wx.MAXIMIZE_BOX))
- self.statusbar = self.CreateStatusBar(1)
- panel = wx.Panel(self)
- self.Centre()
- my_sizer = wx.BoxSizer(wx.VERTICAL)
- btnLoadIssue = wx.Button(panel, label='Load Issue')
- btnLoadIssue.Bind(wx.EVT_BUTTON, self.OnOpen_PDF)
- my_sizer.Add(btnLoadIssue, 0, wx.ALL | wx.CENTER, 7)
- btnLoadSerials = wx.Button(panel, label='Load Serials')
- btnLoadSerials.Bind(wx.EVT_BUTTON, self.OnOpen_CSV)
- my_sizer.Add(btnLoadSerials, 0, wx.ALL | wx.CENTER, 7)
- btnCompare = wx.Button(panel, label='Compare')
- btnCompare.Bind(wx.EVT_BUTTON, self.On_Compare)
- my_sizer.Add(btnCompare, 0, wx.ALL | wx.CENTER, 7)
- btnExit = wx.Button(panel, label='Exit')
- btnExit.Bind(wx.EVT_BUTTON, self.onClose)
- my_sizer.Add(btnExit, 0, wx.ALL | wx.CENTER, 7)
- panel.SetSizer(my_sizer)
- self.Show()
- def OnOpen_PDF(self, event):
- global content
- # otherwise ask the user what new file to open
- with wx.FileDialog(self, "Open PDF file", wildcard="PDF files (*.pdf)|*.pdf",
- style=wx.FD_OPEN | wx.FD_FILE_MUST_EXIST) as fileDialog:
- if fileDialog.ShowModal() == wx.ID_CANCEL:
- return # the user changed their mind
- # Proceed loading the file chosen by the user
- global res_path
- pdf_filename = fileDialog.GetPath()
- res_path = os.path.dirname(pdf_filename)
- try:
- content = get_text_from_pdf(pdf_filename)
- self.statusbar.SetStatusText('PDF file loaded successfully.')
- except Exception as e:
- # self.statusbar.SetStatusText('Can not load PDF file!')
- self.statusbar.SetStatusText('Error 1:', e)
- content = []
- def OnOpen_CSV(self, event):
- global numbers
- # otherwise ask the user what new file to open
- with wx.FileDialog(self, "Open CSV file", wildcard="CSV files (*.csv)|*.csv",
- style=wx.FD_OPEN | wx.FD_FILE_MUST_EXIST) as fileDialog:
- if fileDialog.ShowModal() == wx.ID_CANCEL:
- return # the user changed their mind
- # Proceed loading the file chosen by the user
- csv_filename = fileDialog.GetPath()
- try:
- numbers = get_numbers(csv_filename)
- self.statusbar.SetStatusText('CSV file loaded successfully.')
- except:
- self.statusbar.SetStatusText('Can not load CSV file!')
- numbers = []
- def On_Compare(self, event):
- try:
- if len(numbers) > 0 and len(content) > 0:
- compare(numbers, content)
- self.statusbar.SetStatusText('Files been processed successfully!')
- except Exception as e:
- self.statusbar.SetStatusText('Can not compare files now!')
- print(e)
- def onClose(self, event):
- self.Close()
- def get_numbers(csv_filename):
- numbers = []
- with open(csv_filename, newline='') as csvfile:
- spamreader = csv.reader(csvfile, delimiter=' ', quotechar='|')
- for row in spamreader:
- numbers.append(row[0].replace('"', ''))
- return numbers
- def get_text_from_pdf(pdf_filename):
- try:
- raw = parser.from_file(pdf_filename)
- except Exception as e:
- pass
- content = raw['content']
- return content
- def compare(numbers, content):
- global res_path
- res_path = res_path + "//"
- if os.path.exists(res_path + "Confirmed_ads.txt"):
- os.remove(res_path + "Confirmed_ads.txt")
- if os.path.exists(res_path + "Missing.txt"):
- os.remove(res_path + "Missing.txt")
- for number in numbers:
- if number in content:
- # print(number, 'YES')
- with open(str(res_path + "Confirmed_ads.txt"), "a") as myfile:
- myfile.write(number + '\n')
- else:
- # print(number, 'NO')
- with open(str(res_path + "Missing.txt"), "a") as myfile:
- myfile.write(number + '\n')
- if __name__ == '__main__':
- app = wx.App()
- frame = MyFrame()
- frame.Show()
- app.MainLoop()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement