示例#1
0
def switch_visibility(widget: QtWidgets.QWidget):
    if widget.isVisible():
        widget.hide()
    else:
        widget.show()
示例#2
0
class Scraper(QWidget):
    def __init__(self):
        super().__init__()

        self.setup()
    
    def setup(self):
        #self.setGeometry(200, 200,  400, 300)
        self.setWindowTitle('Quizlet Scraper')

        layout = QHBoxLayout()
        layout.setSpacing(20)
        self.setLayout(layout)

        left = QWidget()        
        left_layout = QVBoxLayout()
        left.setLayout(left_layout)
        layout.addWidget(left)

        right = QWidget()
        right_layout = QVBoxLayout()
        right.setLayout(right_layout)
        layout.addWidget(right)

        url_text = QLabel('URL:')
        left_layout.addWidget(url_text)

        self.urlbox = QLineEdit(self)
        left_layout.addWidget(self.urlbox)

        self.add_deck = QWidget()
        add_deck_layout = QVBoxLayout()
        self.add_deck.setLayout(add_deck_layout)
        right_layout.addWidget(self.add_deck)
        self.add_deck.hide()

        add_deck_label = QLabel('Deck name:')
        add_deck_layout.addWidget(add_deck_label)

        self.add_deck_box = QLineEdit(self)
        add_deck_layout.addWidget(self.add_deck_box)

        self.combo = QComboBox()
        self.combo.addItems([
            '.csv (Comma separated)',
            '.txt (Tab separated)',
            '.xls (Excel)',
            '.apkg (Anki package)'
        ])
        self.combo.currentIndexChanged.connect(self.index_changed)
        right_layout.addWidget(self.combo)

        spreadsheet_button = QPushButton('Get Spreadsheet', self)
        spreadsheet_button.clicked.connect(self.get_spreadsheet)
        spreadsheet_button.resize(spreadsheet_button.sizeHint())
        right_layout.addWidget(spreadsheet_button)
    
    def index_changed(self, i):
        self.add_deck.show() if i == 3 else self.add_deck.hide()

    def get_spreadsheet(self):
        try:
            page = q.start_session(self.urlbox.text())
            print('got page')
            term_list = q.get_terms(page)
        except:
            print('Not a valid Quizlet URL.')
            term_list = []
        self.save_file(term_list)
    
    def save_file(self, term_list):
        filename = QFileDialog.getSaveFileName(
            self,
            'Save file',
            '',
            'All Files (*)'
        )[0]
        i = self.combo.currentIndex()
        if i == 0:
            s.write_csv(term_list, filename + '.csv')
        elif i == 1:
            s.write_txt(term_list, filename + '.txt')
        elif i == 2:
            s.write_xls(term_list, filename + '.xls')
        elif i == 3:
            s.write_anki(term_list, self.add_deck_box.text(), filename + '.apkg')