Exemplo n.º 1
0
    def updateBerita(self,beginDate,endDate):
        """
        Tambah data entri berita

        Input:
        beginDate -- integer
        Awal tanggal pencarian berita dengan format
        beginDate = beginyear * 10000 + beginMonth * 100 + beginDay
        
        endDate -- integer
        Akhir tanggal pencarian berita dengan format
        beginDate = endyear * 10000 + endMonth * 100 + endDay
        
        Output:
        Sebuah integer menunjukan berapa banyak data berita yang ditambah
        """
        if beginDate > endDate:
            raise ValueError("beginDate (%d) harus secara kronologis sebelum endDate (%d)"
                %(beginDate,endDate))

        beginDate = datetime.datetime(beginDate//10000,beginDate//100%100,beginDate%100)
        endDate = datetime.datetime(endDate//10000,endDate//100%100,endDate%100)

        for I in FileParser.FileParser.parserList:
            parser = FileParser.FileParser(I)
            print(I)
            date = beginDate
            worker = Worker()
            while date <= endDate:
                newsList = parser.extractPublikasi(date.year*10000+date.month*100+date.day)
                print(date.year*10000+date.month*100+date.day)
                for J in newsList:
                    #Cek apakah artikel sudah pernah di-crawl?
                    self.c.execute("SELECT * FROM berita where Url = ?",(J['url'],))
                    d = self.c.fetchall()
                    #Kalau belum, masukan
                    if len(d) == 0:
                        worker.addOrder(J['url'])
                result = worker.getData()
                print(len(result))
                for J in newsList:
                    if J['url'] in result:
                        r = result[J['url']]
                        nextTwoSession = self.cariSesi(J['tanggal'],J['jam'])
                        # Sentimen positif = 1
                        # Sentimen netral = 0
                        # Sentimen negatif = -1

                        # Untuk awal, diasumsikan semua berita ketika harga naik adalah sentimen
                        # positif dan diasumsikan semua berita ketika harga turun adalah
                        # sentimen negatif
                        sentiment = int(self.bandingIndeks(nextTwoSession)>0)*2 + -1
                        d = parser.extractData(r)
                        if d != None:
                            self.c.execute("INSERT INTO berita VALUES (?,?,?,?,?,?,?,?)",
                                (J['sumber'],J['judul'],J['url'],d,'',J['tanggal'],J['jam'],sentiment))
                date += datetime.timedelta(1)
                worker.reset()
                self.conn.commit()