예제 #1
0
    def makeRecommendationInfo(self):
        self.recommendations = self.__generateRecommendation()

        pictures = (self.RecommendationPicture1, self.RecommendationPicture2,
                    self.RecommendationPicture3)
        titles = (self.RecommendationTitle1, self.RecommendationTitle2,
                  self.RecommendationTitle3)

        posterFetcher = FilmInterface(False)

        for i in range(3):
            posterFetcher.selectFilm(self.recommendations[i])
            result = posterFetcher.fetchResult()

            if len(result) == 0:
                raise RuntimeError(
                    'the recommendation algorithm has suggested a ghost film')

            name = getColumn(result[0], FILM_TABLE.chineseName)
            url = getColumn(result[0], FILM_TABLE.picture)
            titles[i].setText(name)
            pictures[i].clear()

            if url is not None:
                try:
                    res = getURL(url, timeout=20)
                    if res.status_code != 200:
                        raise RequestException()

                    image = QImage.fromData(res.content)
                    pictures[i].setPixmap(QPixmap.fromImage(image))
                except RequestException:
                    pictures[i].setText('海报加载失败')
            else:
                pictures[i].setText('暂无海报')
예제 #2
0
    def __showInformationImage(self, url=None):
        self.Picture.clear()

        if url is not None:
            try:
                res = getURL(url, timeout=20)
                if res.status_code != 200:
                    raise RequestException()

                image = QImage.fromData(res.content)
                self.Picture.setPixmap(QPixmap.fromImage(image))
            except RequestException:
                self.Picture.setText('海报加载失败')
        else:
            self.Picture.setText('暂无海报')
예제 #3
0
    def __init__(self, filmID, parent=None, flags=Qt.WindowFlags()):
        super().__init__(parent=parent, flags=flags)
        self.setupUi(self)

        directorFetcher = FilmInterface(False)
        directorFetcher.selectFilmDirectingInfo(filmID)
        result = directorFetcher.fetchResult()
        self.tableWidget.setRowCount(len(result))

        self.alts = {}

        for index, row in enumerate(result):
            avatar = getColumn(row, DIRECTOR_TABLE.avatar)
            name = getColumn(row, DIRECTOR_TABLE.name)
            role = getColumn(row, DIRECTING_TABLE.role)
            alt = getColumn(row, DIRECTOR_TABLE.alt)

            if avatar is not None:
                try:
                    avatarResponse = getURL(avatar, timeout=20)
                    if avatarResponse.status_code != 200:
                        raise RequestException()

                    avatarImage = QImage.fromData(avatarResponse.content)
                    avatarItem = QTableWidgetItem(
                        QIcon(QPixmap.fromImage(avatarImage)), '')
                except RequestException:
                    avatarItem = QTableWidgetItem('海报加载失败')
            else:
                avatarItem = QTableWidgetItem('暂无海报')

            self.tableWidget.setItem(index, 0, avatarItem)
            self.tableWidget.setItem(
                index, 1, QTableWidgetItem('--' if name is None else name))
            self.tableWidget.setItem(
                index, 2, QTableWidgetItem('--' if role is None else role))

            if alt is None:
                self.tableWidget.setItem(index, 3, QTableWidgetItem('--'))
            else:
                self.tableWidget.setItem(index, 3, QTableWidgetItem(alt))
                self.alts[index] = alt

        self.tableWidget.setIconSize(QSize(90, 127))
        self.tableWidget.horizontalHeader().setSectionResizeMode(
            QHeaderView.ResizeToContents)
        self.tableWidget.verticalHeader().setSectionResizeMode(
            QHeaderView.ResizeToContents)
예제 #4
0
def getSymbol(sym,yStart,yEnd):
    """
        Retrieve financial symbol (SYM) over period of time (YSTART-YEND).
        Yahoo Finance stores values as
        Date[0], Open[1], High[2], Low[3], Close[4], Volume[5], Adj Close[6].
    """
    # Ensure input is sensible
    assert yStart==int(yStart) and yEnd==int(yEnd), "yStart, yEnd should be integers"
    assert 1990 < yStart < yEnd < 2016, "yStart, yEnd should be an interval of 1990-2016"
    #
    try:
        # Links for Yahoo Finance
        base  = "http://ichart.finance.yahoo.com/table.csv?d=6&e=1&f="
        link  = base + str(yEnd) + "&g=d&a=7&b=19&c="
        link += str(yStart) + "&ignore=.csv&s=" + sym.upper()
        # read content of link (raw text)
        t = getURL(link)
        # file name to save content
        nfile = nFile(sym,yStart,yEnd)
        # write to file
        with open(nfile,'w') as f: f.write(t.text)
    except:
        raise Exception("..invalid link.. did you enter a valid symbol?")