Advertisement
Oleksii2019

Untitled

Aug 21st, 2019
107
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 4.57 KB | None | 0 0
  1. import csv
  2. import os
  3. import wx
  4. from tika import parser
  5.  
  6. content = []
  7. numbers = []
  8.  
  9. res_path = ''
  10.  
  11.  
  12. class MyFrame(wx.Frame):
  13.  
  14.     def __init__(self):
  15.  
  16.         super().__init__(parent=None, title='PDF-CSV(compare app)', size=(1000, 175),
  17.                          style=wx.DEFAULT_FRAME_STYLE & ~(wx.RESIZE_BORDER | wx.MAXIMIZE_BOX))
  18.         self.statusbar = self.CreateStatusBar(1)
  19.         panel = wx.Panel(self)
  20.         self.Centre()
  21.  
  22.         my_sizer = wx.BoxSizer(wx.VERTICAL)
  23.  
  24.         btnLoadIssue = wx.Button(panel, label='Load Issue')
  25.         btnLoadIssue.Bind(wx.EVT_BUTTON, self.OnOpen_PDF)
  26.         my_sizer.Add(btnLoadIssue, 0, wx.ALL | wx.CENTER, 7)
  27.  
  28.         btnLoadSerials = wx.Button(panel, label='Load Serials')
  29.         btnLoadSerials.Bind(wx.EVT_BUTTON, self.OnOpen_CSV)
  30.         my_sizer.Add(btnLoadSerials, 0, wx.ALL | wx.CENTER, 7)
  31.  
  32.         btnCompare = wx.Button(panel, label='Compare')
  33.         btnCompare.Bind(wx.EVT_BUTTON, self.On_Compare)
  34.         my_sizer.Add(btnCompare, 0, wx.ALL | wx.CENTER, 7)
  35.  
  36.         btnExit = wx.Button(panel, label='Exit')
  37.         btnExit.Bind(wx.EVT_BUTTON, self.onClose)
  38.         my_sizer.Add(btnExit, 0, wx.ALL | wx.CENTER, 7)
  39.  
  40.         panel.SetSizer(my_sizer)
  41.         self.Show()
  42.  
  43.     def OnOpen_PDF(self, event):
  44.         global content
  45.         # otherwise ask the user what new file to open
  46.         with wx.FileDialog(self, "Open PDF file", wildcard="PDF files (*.pdf)|*.pdf",
  47.                            style=wx.FD_OPEN | wx.FD_FILE_MUST_EXIST) as fileDialog:
  48.  
  49.             if fileDialog.ShowModal() == wx.ID_CANCEL:
  50.                 return  # the user changed their mind
  51.  
  52.             # Proceed loading the file chosen by the user
  53.             global res_path
  54.             pdf_filename = fileDialog.GetPath()
  55.             res_path = os.path.dirname(pdf_filename)
  56.             try:
  57.                 content = get_text_from_pdf(pdf_filename)
  58.                 self.statusbar.SetStatusText('PDF file loaded successfully.')
  59.             except Exception as e:
  60.                 # self.statusbar.SetStatusText('Can not load PDF file!')
  61.                 self.statusbar.SetStatusText('Error 1:', e)
  62.                 content = []
  63.  
  64.     def OnOpen_CSV(self, event):
  65.         global numbers
  66.         # otherwise ask the user what new file to open
  67.         with wx.FileDialog(self, "Open CSV file", wildcard="CSV files (*.csv)|*.csv",
  68.                            style=wx.FD_OPEN | wx.FD_FILE_MUST_EXIST) as fileDialog:
  69.  
  70.             if fileDialog.ShowModal() == wx.ID_CANCEL:
  71.                 return  # the user changed their mind
  72.  
  73.             # Proceed loading the file chosen by the user
  74.             csv_filename = fileDialog.GetPath()
  75.             try:
  76.                 numbers = get_numbers(csv_filename)
  77.                 self.statusbar.SetStatusText('CSV file loaded successfully.')
  78.             except:
  79.                 self.statusbar.SetStatusText('Can not load CSV file!')
  80.                 numbers = []
  81.  
  82.     def On_Compare(self, event):
  83.         try:
  84.             if len(numbers) > 0 and len(content) > 0:
  85.                 compare(numbers, content)
  86.                 self.statusbar.SetStatusText('Files been processed successfully!')
  87.         except Exception as e:
  88.             self.statusbar.SetStatusText('Can not compare files now!')
  89.             print(e)
  90.  
  91.     def onClose(self, event):
  92.         self.Close()
  93.  
  94.  
  95. def get_numbers(csv_filename):
  96.     numbers = []
  97.     with open(csv_filename, newline='') as csvfile:
  98.         spamreader = csv.reader(csvfile, delimiter=' ', quotechar='|')
  99.         for row in spamreader:
  100.             numbers.append(row[0].replace('"', ''))
  101.     return numbers
  102.  
  103.  
  104. def get_text_from_pdf(pdf_filename):
  105.     try:
  106.         raw = parser.from_file(pdf_filename)
  107.     except Exception as e:
  108.         pass
  109.         content = raw['content']
  110.     return content
  111.  
  112.  
  113. def compare(numbers, content):
  114.     global res_path
  115.     res_path = res_path + "//"
  116.     if os.path.exists(res_path + "Confirmed_ads.txt"):
  117.         os.remove(res_path + "Confirmed_ads.txt")
  118.  
  119.     if os.path.exists(res_path + "Missing.txt"):
  120.         os.remove(res_path + "Missing.txt")
  121.  
  122.     for number in numbers:
  123.         if number in content:
  124.             # print(number, 'YES')
  125.             with open(str(res_path + "Confirmed_ads.txt"), "a") as myfile:
  126.                 myfile.write(number + '\n')
  127.         else:
  128.             # print(number, 'NO')
  129.             with open(str(res_path + "Missing.txt"), "a") as myfile:
  130.                 myfile.write(number + '\n')
  131.  
  132.  
  133. if __name__ == '__main__':
  134.     app = wx.App()
  135.     frame = MyFrame()
  136.     frame.Show()
  137.     app.MainLoop()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement