def btnMembersAction(self):
     #        self.linkedInMember = MyLinkedInMembers(self.spiderObj,
     #            self.combo.itemData(self.combo.currentIndex()).toString(), '2-5')
     self.browserMember.clear()
     self.linkedInMember = MyLinkedInMembers(
         self.spiderObj,
         self.combo.itemData(self.combo.currentIndex()).toString(),
         self.inputPageRange.text())
     self.linkedInMember.notifyLinkedIn.connect(self.notifyInfo)
     self.linkedInMember.notifyMembers.connect(self.appendMembers)
     self.linkedInMember.start()
 def btnMembersAction(self):
     #        self.linkedInMember = MyLinkedInMembers(self.spiderObj,
     #            self.combo.itemData(self.combo.currentIndex()).toString(), '2-5')
     self.browserMember.clear()
     self.linkedInMember = MyLinkedInMembers(
         self.spiderObj, self.combo.itemData(self.combo.currentIndex()).toString(), self.inputPageRange.text()
     )
     self.linkedInMember.notifyLinkedIn.connect(self.notifyInfo)
     self.linkedInMember.notifyMembers.connect(self.appendMembers)
     self.linkedInMember.start()
class Form(QMainWindow):
    def __init__(self, parent=None):
        super(Form, self).__init__(parent)
        self.createGui()
        self.memberDic = {}
        self.excludedMember = None
        dupCsvReader = Csv()
        self.dupCsvRows = dupCsvReader.readCsvRow("linkedIn.csv", 0)
        self.csvWriter = Csv("linkedIn.csv")
        self.allMembers = []

    def createGui(self):
        self.labelUser = QLabel("<b>Username: </b>")
        self.inputUser = QLineEdit()

        self.labelPass = QLabel("<b>Password:</b>")
        self.inputPass = QLineEdit()

        self.labelPageRange = QLabel("<b>Select Your Page Range:<br />Example: 2-5 or 1 </b>")
        self.inputPageRange = QLineEdit()

        self.btnGroup = QPushButton("&Scrap Groups")
        self.btnGroup.clicked.connect(self.btnOkAction)

        self.labelCombo = QLabel("<b>Select Your Group: </b>")
        self.combo = QComboBox()
        self.combo.currentIndexChanged.connect(self.groupChangeEvent)

        self.labelExcludeMember = QLabel("<b>Write Your Excluded Member Name: <br />(ex_member1,ex_member2)</b>")
        self.inputExcludeMember = QLineEdit()

        self.btnMember = QPushButton("&Scrap Members")
        self.btnMember.clicked.connect(self.btnMembersAction)
        self.labelMember = QLabel("<b>Scraped Members: </b>")
        self.browserMember = QTextBrowser()
        self.browserMember.setReadOnly(False)

        self.btnExcludeAll = QPushButton("&Exclude All Member")
        self.btnExcludeAll.clicked.connect(self.excludeAllAction)

        self.labelSubject = QLabel("<b>Message Subject: </b>")
        self.inputSubject = QLineEdit()

        self.labelMessage = QLabel("<b>Write Message: </b>")
        self.browserMessage = QTextBrowser()
        self.browserMessage.setReadOnly(False)

        self.btnSendMessage = QPushButton("&Send Message")
        self.btnSendMessage.clicked.connect(self.sendMessageAction)

        self.browser = QTextBrowser()

        layout = QGridLayout()
        layout.addWidget(self.labelUser, 0, 0)
        layout.addWidget(self.inputUser, 0, 1)
        layout.addWidget(self.labelPass, 1, 0)
        layout.addWidget(self.inputPass, 1, 1)
        layout.addWidget(self.labelPageRange, 2, 0)
        layout.addWidget(self.inputPageRange, 2, 1)

        layout.addWidget(self.btnGroup, 3, 1, Qt.AlignLeft)
        layout.addWidget(self.labelCombo, 4, 0)
        layout.addWidget(self.combo, 4, 1)
        layout.addWidget(self.labelExcludeMember, 5, 0)
        layout.addWidget(self.inputExcludeMember, 5, 1)

        layout.addWidget(self.btnExcludeAll, 6, 0, Qt.AlignLeft)
        layout.addWidget(self.btnMember, 6, 1, Qt.AlignLeft)
        layout.addWidget(self.labelMember, 7, 0)
        layout.addWidget(self.browserMember, 7, 1)

        layout.addWidget(self.labelSubject, 8, 0)
        layout.addWidget(self.inputSubject, 8, 1)

        layout.addWidget(self.labelMessage, 9, 0)
        layout.addWidget(self.browserMessage, 9, 1)

        layout.addWidget(self.btnSendMessage, 10, 1)

        layoutMain = QVBoxLayout()
        layoutMain.addLayout(layout)
        layoutMain.addWidget(self.browser)
        widget = QWidget()
        widget.setLayout(layoutMain)

        self.setCentralWidget(widget)
        self.resize(600, 600)
        self.setWindowTitle("LinkedIn Scrapper.")

    def groupChangeEvent(self):
        self.browserMember.clear()

    def btnOkAction(self):
        self.linkedIn = MyLinkedIn(self.inputUser.text(), self.inputPass.text())
        #        self.linkedIn = MyLinkedIn('*****@*****.**', 'ubuntu36')
        self.linkedIn.notifyLinkedIn.connect(self.notifyInfo)
        self.linkedIn.cookieL.connect(self.setSpiderObj)
        self.linkedIn.notifyMember.connect(self.addGroups)
        self.linkedIn.start()

    def sendMessageAction(self):
        messageMembers = []
        members = self.browserMember.toPlainText().split("\n")
        for member in members:
            messageMembers.append((member, self.memberDic[member]))
        self.linkedInMessage = MyLinkedInMessage(
            self.spiderObj, messageMembers, self.inputSubject.text(), self.browserMessage.toPlainText()
        )
        self.linkedInMessage.notifyLinkedIn.connect(self.notifyInfo)
        self.linkedInMessage.start()

    def btnMembersAction(self):
        #        self.linkedInMember = MyLinkedInMembers(self.spiderObj,
        #            self.combo.itemData(self.combo.currentIndex()).toString(), '2-5')
        self.browserMember.clear()
        self.linkedInMember = MyLinkedInMembers(
            self.spiderObj, self.combo.itemData(self.combo.currentIndex()).toString(), self.inputPageRange.text()
        )
        self.linkedInMember.notifyLinkedIn.connect(self.notifyInfo)
        self.linkedInMember.notifyMembers.connect(self.appendMembers)
        self.linkedInMember.start()

    def excludeAllAction(self):
        if self.allMembers is not None and len(self.allMembers) > 0:
            for member in self.allMembers:
                if member[0] not in self.dupCsvRows:
                    self.dupCsvRows.append([member[0], unicode(member[1]), unicode(member[2])])
                    self.csvWriter.writeCsvRow([member[0], unicode(member[1]), unicode(member[2])])
            self.browserMember.clear()
            self.allMembers = None

    def appendMembers(self, members):
        print self.dupCsvRows
        try:
            self.excludedMember = unicode(self.inputExcludeMember.text()).split(",")
        except Exception, x:
            print x
        for member in members:
            if member[0] is None or len(member[0]) == 0 or member[1] is None or len(member[1]) == 0:
                continue
            if member not in self.allMembers:
                print member
                self.allMembers.append(member)
            if (
                self.excludedMember is not None
                and unicode(member[1]) is not None
                and len(unicode(member[1])) > 0
                and unicode(member[1]) in self.excludedMember
                and member[0] not in self.dupCsvRows
            ):
                self.dupCsvRows.append([member[0], unicode(member[1]), unicode(member[2])])
                self.csvWriter.writeCsvRow([member[0], unicode(member[1]), unicode(member[2])])

            if self.excludedMember is None or (
                unicode(member[1]) not in self.excludedMember and member[0] not in self.dupCsvRows
            ):
                if unicode(member[1]) is not None and len(unicode(member[1])) > 0:
                    self.browserMember.append(member[1])
                    self.memberDic[QString(member[1])] = member[0]
class Form(QMainWindow):
    def __init__(self, parent=None):
        super(Form, self).__init__(parent)
        self.createGui()
        self.memberDic = {}
        self.excludedMember = None
        dupCsvReader = Csv()
        self.dupCsvRows = dupCsvReader.readCsvRow('linkedIn.csv', 0)
        self.csvWriter = Csv('linkedIn.csv')
        self.allMembers = []

    def createGui(self):
        self.labelUser = QLabel('<b>Username: </b>')
        self.inputUser = QLineEdit()

        self.labelPass = QLabel('<b>Password:</b>')
        self.inputPass = QLineEdit()

        self.labelPageRange = QLabel(
            '<b>Select Your Page Range:<br />Example: 2-5 or 1 </b>')
        self.inputPageRange = QLineEdit()

        self.btnGroup = QPushButton('&Scrap Groups')
        self.btnGroup.clicked.connect(self.btnOkAction)

        self.labelCombo = QLabel('<b>Select Your Group: </b>')
        self.combo = QComboBox()
        self.combo.currentIndexChanged.connect(self.groupChangeEvent)

        self.labelExcludeMember = QLabel(
            '<b>Write Your Excluded Member Name: <br />(ex_member1,ex_member2)</b>'
        )
        self.inputExcludeMember = QLineEdit()

        self.btnMember = QPushButton('&Scrap Members')
        self.btnMember.clicked.connect(self.btnMembersAction)
        self.labelMember = QLabel('<b>Scraped Members: </b>')
        self.browserMember = QTextBrowser()
        self.browserMember.setReadOnly(False)

        self.btnExcludeAll = QPushButton('&Exclude All Member')
        self.btnExcludeAll.clicked.connect(self.excludeAllAction)

        self.labelSubject = QLabel('<b>Message Subject: </b>')
        self.inputSubject = QLineEdit()

        self.labelMessage = QLabel('<b>Write Message: </b>')
        self.browserMessage = QTextBrowser()
        self.browserMessage.setReadOnly(False)

        self.btnSendMessage = QPushButton('&Send Message')
        self.btnSendMessage.clicked.connect(self.sendMessageAction)

        self.browser = QTextBrowser()

        layout = QGridLayout()
        layout.addWidget(self.labelUser, 0, 0)
        layout.addWidget(self.inputUser, 0, 1)
        layout.addWidget(self.labelPass, 1, 0)
        layout.addWidget(self.inputPass, 1, 1)
        layout.addWidget(self.labelPageRange, 2, 0)
        layout.addWidget(self.inputPageRange, 2, 1)

        layout.addWidget(self.btnGroup, 3, 1, Qt.AlignLeft)
        layout.addWidget(self.labelCombo, 4, 0)
        layout.addWidget(self.combo, 4, 1)
        layout.addWidget(self.labelExcludeMember, 5, 0)
        layout.addWidget(self.inputExcludeMember, 5, 1)

        layout.addWidget(self.btnExcludeAll, 6, 0, Qt.AlignLeft)
        layout.addWidget(self.btnMember, 6, 1, Qt.AlignLeft)
        layout.addWidget(self.labelMember, 7, 0)
        layout.addWidget(self.browserMember, 7, 1)

        layout.addWidget(self.labelSubject, 8, 0)
        layout.addWidget(self.inputSubject, 8, 1)

        layout.addWidget(self.labelMessage, 9, 0)
        layout.addWidget(self.browserMessage, 9, 1)

        layout.addWidget(self.btnSendMessage, 10, 1)

        layoutMain = QVBoxLayout()
        layoutMain.addLayout(layout)
        layoutMain.addWidget(self.browser)
        widget = QWidget()
        widget.setLayout(layoutMain)

        self.setCentralWidget(widget)
        self.resize(600, 600)
        self.setWindowTitle('LinkedIn Scrapper.')

    def groupChangeEvent(self):
        self.browserMember.clear()

    def btnOkAction(self):
        self.linkedIn = MyLinkedIn(self.inputUser.text(),
                                   self.inputPass.text())
        #        self.linkedIn = MyLinkedIn('*****@*****.**', 'ubuntu36')
        self.linkedIn.notifyLinkedIn.connect(self.notifyInfo)
        self.linkedIn.cookieL.connect(self.setSpiderObj)
        self.linkedIn.notifyMember.connect(self.addGroups)
        self.linkedIn.start()

    def sendMessageAction(self):
        messageMembers = []
        members = self.browserMember.toPlainText().split('\n')
        for member in members:
            messageMembers.append((member, self.memberDic[member]))
        self.linkedInMessage = MyLinkedInMessage(
            self.spiderObj, messageMembers, self.inputSubject.text(),
            self.browserMessage.toPlainText())
        self.linkedInMessage.notifyLinkedIn.connect(self.notifyInfo)
        self.linkedInMessage.start()

    def btnMembersAction(self):
        #        self.linkedInMember = MyLinkedInMembers(self.spiderObj,
        #            self.combo.itemData(self.combo.currentIndex()).toString(), '2-5')
        self.browserMember.clear()
        self.linkedInMember = MyLinkedInMembers(
            self.spiderObj,
            self.combo.itemData(self.combo.currentIndex()).toString(),
            self.inputPageRange.text())
        self.linkedInMember.notifyLinkedIn.connect(self.notifyInfo)
        self.linkedInMember.notifyMembers.connect(self.appendMembers)
        self.linkedInMember.start()

    def excludeAllAction(self):
        if self.allMembers is not None and len(self.allMembers) > 0:
            for member in self.allMembers:
                if member[0] not in self.dupCsvRows:
                    self.dupCsvRows.append(
                        [member[0],
                         unicode(member[1]),
                         unicode(member[2])])
                    self.csvWriter.writeCsvRow(
                        [member[0],
                         unicode(member[1]),
                         unicode(member[2])])
            self.browserMember.clear()
            self.allMembers = None

    def appendMembers(self, members):
        print self.dupCsvRows
        try:
            self.excludedMember = unicode(
                self.inputExcludeMember.text()).split(',')
        except Exception, x:
            print x
        for member in members:
            if member[0] is None or len(
                    member[0]) == 0 or member[1] is None or len(
                        member[1]) == 0:
                continue
            if member not in self.allMembers:
                print member
                self.allMembers.append(member)
            if self.excludedMember is not None and unicode(
                    member[1]
            ) is not None and len(unicode(member[1])) > 0 and unicode(
                    member[1]
            ) in self.excludedMember and member[0] not in self.dupCsvRows:
                self.dupCsvRows.append(
                    [member[0],
                     unicode(member[1]),
                     unicode(member[2])])
                self.csvWriter.writeCsvRow(
                    [member[0],
                     unicode(member[1]),
                     unicode(member[2])])

            if self.excludedMember is None or (
                    unicode(member[1]) not in self.excludedMember
                    and member[0] not in self.dupCsvRows):
                if unicode(
                        member[1]) is not None and len(unicode(member[1])) > 0:
                    self.browserMember.append(member[1])
                    self.memberDic[QString(member[1])] = member[0]