Exemple #1
0
    def download(self):
        """
        Download tile
        :return: Nothing
        """
        grab = None

        rx = range(self._tiles_rectangle.width())
        ry = range(self._tiles_rectangle.height())

        for x, y in product(rx, ry):
            tp = Point(self._tiles_rectangle.topLeft() + QPoint(x, y))
            if tp not in self._tile_pixmaps:
                grab = QPoint(tp)
                break

        if grab is None:
            self._url = QUrl()
            return

        path = 'http://tile.openstreetmap.org/%d/%d/%d.png' % (
            self.zoom, grab.x(), grab.y())
        self._url = QUrl(path)
        self.request = QNetworkRequest()
        self.request.setUrl(self._url)
        self.request.setRawHeader(b'User-Agent',
                                  b'Nokia (PyQt) Graphics Dojo 1.0')
        self.request.setAttribute(QNetworkRequest.User, grab)
        self._manager.get(self.request)

        print('downloading z:', self.zoom, 'x:', grab.x(), 'y:', grab.y())
Exemple #2
0
    def __init__(self, *args, **kargs):

        super().__init__(*args, **kargs)

        # lazy creation of the NetworkManager
        global _manager
        if _manager is None:
            _manager = QNetworkAccessManager()

        # open the destination file for writing
        if self.dest and self.dest != '::mem::':
            try:
                self._dest_fp = open(self.dest, 'wb')
            except OSError:
                self._notify_done(False)
                return
        else:
            self._dest_fp = None

        # build and send the GET request
        request = QNetworkRequest(self.url)
        if self._headers is not None:
            for key in self._headers:
                request.setHeader(key, self._headers[key])
        self._reply = _manager.get(request)
        self._reply.finished.connect(self._finished_cb)
        self._reply.downloadProgress.connect(self._progress_cb)
        if self.dest != '::mem::':
            self._reply.readyRead.connect(self._data_ready_cb)
Exemple #3
0
    def CreateRequest(search_string, batch_size, page):
        # url = "http://doi.org/" + search_string
        url = "https://api.crossref.org/works/" + search_string + "/transform/application/x-bibtex"
        request = QNetworkRequest(QUrl(url))
        request.setRawHeader(b"Accept", b"application/x-bibtex")

        return request
Exemple #4
0
    def __init__(self, parent=None):
        """

        :param parent:
        """
        super(SlippyMap, self).__init__(parent)

        self._offset = QPoint()

        self._tiles_rectangle = QRect()

        self._tile_pixmaps = {}  # Point(x, y) to QPixmap mapping

        self._manager = QNetworkAccessManager()

        self._url = QUrl()

        # public vars
        self.width = 400
        self.height = 300
        self.zoom = 4
        self.latitude = 59.9138204
        self.longitude = 10.7387413

        self._emptyTile = QPixmap(TDIM, TDIM)
        self._emptyTile.fill(Qt.lightGray)

        self.request = QNetworkRequest()
        self.cache = QNetworkDiskCache()
        self.cache.setCacheDirectory(
            QStandardPaths.writableLocation(QStandardPaths.CacheLocation))
        self._manager.setCache(self.cache)
        self._manager.finished.connect(self.handle_network_data)
 def build_request(self, query_items):
     query = QUrlQuery()
     for k, v in query_items.items():
         query.addQueryItem(k, v)
     url = QUrl(self.base_url)
     url.setQuery(query)
     request = QNetworkRequest(self.base_request)
     request.setUrl(url)
     return request
Exemple #6
0
    def save_rank_server(self, source_df):
        """ 保存日持仓排名到服务器 """
        self.parser_finished.emit("开始保存上期所{}日持仓排名数据到服务器数据库...".format(self.date.strftime("%Y-%m-%d")), False)
        data_body = source_df.to_dict(orient="records")
        app = QApplication.instance()
        network_manager = getattr(app, "_network")
        url = SERVER + "exchange/shfe/rank/?date=" + self.date.strftime("%Y-%m-%d")
        request = QNetworkRequest(url=url)
        request.setHeader(QNetworkRequest.ContentTypeHeader, "application/json;charset=utf-8")

        reply = network_manager.post(request, json.dumps(data_body).encode("utf-8"))
        reply.finished.connect(self.save_rank_server_reply)
Exemple #7
0
 def ask_login_status(self):
     app_setting_file = os.path.join(BASE_DIR, "classini/app.ini")
     app_settings = QSettings(app_setting_file, QSettings.IniFormat)
     token = "Bearer " + app_settings.value("TOKEN/token")
     print(token)
     app = QApplication.instance()
     network_manager = getattr(app, "_network")
     url = SERVER + "token_login/"
     request = QNetworkRequest(QUrl(url))
     request.setRawHeader("Authorization".encode("utf-8"),
                          token.encode("utf-8"))
     reply = network_manager.get(request)
     reply.finished.connect(self.is_logged_reply)
Exemple #8
0
    def get_rank_source_file(self):
        """ 获取日排名数据 """
        if self.date is None:
            raise DateValueError("请先使用`set_date`设置`SHFESpider`日期.")
        url = "http://www.shfe.com.cn/data/dailydata/kx/pm{}.dat".format(self.date.strftime('%Y%m%d'))

        app = QApplication.instance()
        network_manager = getattr(app, "_network")

        request = QNetworkRequest(url=url)
        request.setHeader(QNetworkRequest.UserAgentHeader, random.choice(USER_AGENTS))
        reply = network_manager.get(request)
        reply.finished.connect(self.rank_source_file_reply)
Exemple #9
0
    def commit_spot_data(self):
        """ 提交数据 """
        self.tip_label.setText("正在上传数据到服务器...")
        app = QApplication.instance()
        network_manager = getattr(app, "_network")
        url = SERVER + "spot/price/?date=" + self.today_str
        request = QNetworkRequest(QUrl(url))
        request.setHeader(QNetworkRequest.ContentTypeHeader,
                          "application/json;charset=utf-8")

        reply = network_manager.post(
            request,
            json.dumps(self.final_data).encode("utf-8"))
        reply.finished.connect(self.save_spot_price_reply)
Exemple #10
0
    def get_rank_source_file(self):
        """ 获取日持仓排名数据源文件保存至本地 """
        if self.date is None:
            raise DateValueError("请先使用`set_date`设置`CZCESpider`日期.")
        url = "http://www.czce.com.cn/cn/DFSStaticFiles/Future/{}/{}/FutureDataHolding.xls".format(
            self.date.year, self.date.strftime('%Y%m%d'))

        app = QApplication.instance()
        network_manager = getattr(app, "_network")

        request = QNetworkRequest(url=url)
        request.setHeader(QNetworkRequest.UserAgentHeader,
                          random.choice(USER_AGENTS))
        reply = network_manager.get(request)
        reply.finished.connect(self.rank_source_file_reply)
Exemple #11
0
    def get_daily_source_file(self):
        """ 获取每日行情数据源文件保存至本地 """
        if self.date is None:
            raise DateValueError("请先使用`set_date`设置`CZCESpider`日期.")
        url = "http://www.cffex.com.cn/sj/hqsj/rtj/{}/{}/{}_1.csv".format(
            self.date.strftime('%Y%m'), self.date.strftime('%d'),
            self.date.strftime('%Y%m%d'))
        app = QApplication.instance()
        network_manager = getattr(app, "_network")

        request = QNetworkRequest(url=url)
        request.setHeader(QNetworkRequest.UserAgentHeader,
                          random.choice(USER_AGENTS))
        reply = network_manager.get(request)
        reply.finished.connect(self.daily_source_file_reply)
Exemple #12
0
 def CreateRequest(search_string, batch_size, page):
     url = ("https://export.arxiv.org/api/query?" + "id_list=" +
            urllib.parse.quote(search_string) + "&start=" + str(
                (page - 1) * batch_size) + "&max_results=" +
            str(batch_size))
     request = QNetworkRequest(QUrl(url))
     return request
Exemple #13
0
    def commit_new_variety(self):
        """ 确认提交新品种信息 """
        belong_group = self.opts_widget.belong_group.currentText()
        belong_exchange = self.opts_widget.belong_exchange.currentText()
        variety_name = self.opts_widget.zh_name.text().strip()
        variety_en = self.opts_widget.en_name.text().strip()
        if not re.match(r'^[A-Z]{1,2}$', variety_en):
            QMessageBox.information(self, "错误", "交易代码为1~2个A-Z大写英文字母组成!")
            return

        new_variety = {
            "variety_name": variety_name,
            "variety_en": variety_en,
            "exchange_lib": belong_exchange,
            "group_name": belong_group
        }

        app = QApplication.instance()
        network_manager = getattr(app, "_network")

        url = SERVER + 'variety/'
        request = QNetworkRequest(QUrl(url))
        reply = network_manager.post(request,
                                     json.dumps(new_variety).encode('utf-8'))
        reply.finished.connect(self.commit_variety_reply)
Exemple #14
0
    def query_contract_basis(self):
        """ 获取合约的基差数据 """
        self.chart_data_table.clearContents()  # 清空表格数据内容
        self.chart_data_table.setRowCount(0)  # 行数清空

        app = QApplication.instance()
        network_manager = getattr(app, "_network")
        contract = self.contract_combobox.currentText()
        query_month = self.query_month_combobox.currentData()
        if not contract:
            self.tip_label.setText("选择对应品种和合约后查询数据. ")
            return
        self.tips_animation_timer.start(400)  # 开启文字提示
        self.chart_view.setUpdatesEnabled(False)

        if contract == "主力合约":
            self.basis_chart_title = self.current_variety + "主力合约基差"
            url = SERVER + "trend/contract-basis/{}/{}/main-contract/?query_month={}".format(
                self.current_exchange, self.current_variety, query_month)
        else:
            self.basis_chart_title = self.contract_combobox.currentText(
            ) + "基差"
            url = SERVER + "trend/contract-basis/{}/{}/?query_month={}".format(
                self.current_exchange, contract, query_month)
        reply = network_manager.get(QNetworkRequest(QUrl(url)))
        reply.finished.connect(self.basis_data_reply)
Exemple #15
0
 def __init__(
     self, index: int, request: QtNetwork.QNetworkRequest, track_progress: bool
 ):
     self.index = index
     self.request = request
     self.original_url = request.url()
     self.track_progress = track_progress
Exemple #16
0
    def prepareRequest(self):
        request = QNetworkRequest()
        request.setUrl(self.urlServer)
        request.setRawHeader(QByteArray(b"content-type"),
                             QByteArray(b"application/json"))
        request.setRawHeader(QByteArray(b"charset"), QByteArray(b"utf-8"))
        if self.mpid != "open@":
            tokenStr = self.usuario + ":" + str(int(
                self.token[0])) + ":" + str(
                    self.token[1]) if self.token != [] else ""
            tokenByte = QByteArray(tokenStr.encode())
            tokenByteComplete = QByteArray(b"Session ") + tokenByte.toBase64()
            request.setRawHeader(QByteArray(b"authorization"),
                                 tokenByteComplete)

        return request
Exemple #17
0
    def user_commit_login(self):
        """ 用户提交登录 """
        self.login_button.clicked.disconnect()  # 关闭登录点击链接
        # 改变登录按钮文字显示状态
        self.text_animation_timer.start(800)

        md5_hash = md5()
        md5_hash.update(self.login_password.text().encode("utf-8"))

        app = QApplication.instance()
        network_manager = getattr(app, "_network")

        text_dict = {
            "phone": self.login_phone.text(),
            "password": md5_hash.hexdigest(),
            "input_code": self.login_code.text(),
            "code_uuid": self._code_uuid
        }
        multi_data = generate_multipart_data(text_dict)

        url = SERVER + "login/"
        request = QNetworkRequest(url=QUrl(url))
        # request.setHeader(QNetworkRequest.ContentTypeHeader, "multipart/form-data; boundary=%s" % multi_data.boundary())  # 设置后服务器无法找到边界报400
        reply = network_manager.post(request, multi_data)
        reply.finished.connect(self.user_login_back)
        multi_data.setParent(reply)
Exemple #18
0
    def user_commit_register(self):
        """ 用户提交注册 """
        if self.register_password_1.text() != self.register_password_2.text():
            QMessageBox.information(self, "错误", "两次输入密码不一致!")
            return
        self.register_button.clicked.disconnect()  # 关闭注册点击链接
        self.text_animation_timer.start(500)  # 按钮文字显示状态
        md5_hash = md5()
        md5_hash.update(self.register_password_1.text().encode("utf-8"))
        register_dict = {
            "phone": self.register_phone.text(),
            "nickname": self.register_nickname.text(),
            "password": md5_hash.hexdigest(),
            "input_code": self.register_code.text(),
            "code_uuid": self._code_uuid
        }

        print(register_dict)
        multi_data = generate_multipart_data(register_dict)
        app = QApplication.instance()
        network_manager = getattr(app, "_network")

        url = SERVER + "register/"
        request = QNetworkRequest(url=QUrl(url))
        # request.setHeader(QNetworkRequest.ContentTypeHeader, "multipart/form-data; boundary=%s" % multi_data.boundary())  # 设置后服务器无法找到边界报400
        reply = network_manager.post(request, multi_data)
        reply.finished.connect(self.user_register_back)
        multi_data.setParent(reply)
Exemple #19
0
    def CreateRequest(search_string, batch_size, page):
        url = ("https://export.arxiv.org/api/query?" + "search_query=" +
               urllib.parse.quote(search_string) + "&start=" + str(
                   (page - 1) * batch_size) + "&max_results=" +
               str(batch_size) + "&sortBy=submittedDate&sortOrder=descending")
        request = QNetworkRequest(QUrl(url))

        return request
    def __init__(self, main_controller: "MainController",
                 camera_description: CamDesc, mdi_area: QtWidgets.QMdiArea):
        self.main_controller = main_controller
        self.camera_description = camera_description
        self.address_str = camera_description.host.toString()

        self.sub_window = sub_window = MdiSubWindowCloser()
        sub_window.setWindowTitle(self.address_str)
        sub_window.setAttribute(Qt.WA_DeleteOnClose)
        sub_window.closed.connect(self.window_closed)
        camera_control = CameraControl(parent=sub_window)

        self.status = camera_control.status

        for cmd in ZOOM_COMMANDS:
            control = getattr(camera_control, cmd)
            cmd_name = cmd.replace("_", "-")
            control.pressed.connect(
                partial(self.zoom_command_pressed, cmd_name))
            control.released.connect(self.zoom_command_released)

        sub_window.setWidget(camera_control)
        mdi_area.addSubWindow(sub_window)
        sub_window.show()

        self.base_url = QUrl(f"http://{self.address_str}/cam.cgi")
        self.base_request = QNetworkRequest()
        self.base_request.setRawHeader(QByteArray(b"Connection"),
                                       QByteArray(b"Keep-Alive"))
        self.base_request.setRawHeader(QByteArray(b"User-Agent"),
                                       QByteArray(b"Apache-HttpClient"))

        self.status_query_request = self.build_request({"mode": "getstate"})
        self.stop_zoom_request = self.build_request({
            "mode": "camcmd",
            "value": "zoomstop"
        })

        self.ping_timer = QTimer(self.sub_window)
        self.ping_timer.timeout.connect(self.request_device_state)

        self.initial_requests = Queue()
        self.build_initial_request_list()

        request = self.get_next_request()
        self.query(request)
Exemple #21
0
 def get_net_position(self):
     """ 获取净持仓数据 """
     self.tips_animation_timer.start(400)
     app = QApplication.instance()
     net_work = getattr(app, '_network')
     url = SERVER + "position/all-variety/?interval_days=" + str(
         self.interval_days.value())
     reply = net_work.get(QNetworkRequest(QUrl(url)))
     reply.finished.connect(self.all_variety_position_reply)
Exemple #22
0
    def get_rank_source_file(self):
        """ 获取日排名数据源文件 """
        base_url = "http://www.cffex.com.cn/sj/ccpm/{}/{}/{}_1.csv"
        app = QApplication.instance()
        network_manager = getattr(app, "_network")

        for variety in VARIETY_LIST:
            url = base_url.format(self.date.strftime("%Y%m"),
                                  self.date.strftime("%d"), variety)
            self.spider_finished.emit("准备获取{}的日排名数据文件...".format(variety),
                                      False)
            request = QNetworkRequest(url=url)
            request.setHeader(QNetworkRequest.UserAgentHeader,
                              random.choice(USER_AGENTS))
            reply = network_manager.get(request)
            reply.finished.connect(self.rank_source_file_reply)
            time.sleep(1)
            self.event_loop.exec_()
Exemple #23
0
    def get_image_code(self):
        app = QApplication.instance()
        network_manager = getattr(app, "_network")
        self._code_uuid = ''.join(str(uuid.uuid4()).split("-"))
        # 保存code_uuid方便登录使用
        url = SERVER + 'image_code/?code_uuid=' + self._code_uuid
        request = QNetworkRequest(url=QUrl(url))
        reply = network_manager.get(request)

        reply.finished.connect(self.image_code_back)
Exemple #24
0
    def query_spot_data(self):
        """ 查询指定日期现货数据用于修改 """
        query_date = self.modify_date_edit.text()
        query_date_str = datetime.strptime(query_date,
                                           "%Y-%m-%d").strftime("%Y%m%d")
        app = QApplication.instance()
        network_manager = getattr(app, "_network")
        url = SERVER + "spot/price/?date=" + query_date_str

        reply = network_manager.get(QNetworkRequest(QUrl(url)))
        reply.finished.connect(self.query_spot_price_reply)
Exemple #25
0
 def click_variety(self, variety_en, exchange_lib):
     """ 左侧选择品种 """
     self.current_variety = variety_en  # 赋值类属性
     self.current_exchange = exchange_lib
     self.contract_combobox.clear()  # 清空合约下拉选项,并请求当前品种的所有合约
     app = QApplication.instance()
     network_manager = getattr(app, "_network")
     url = SERVER + "{}/{}/contracts/".format(self.current_exchange,
                                              self.current_variety)
     reply = network_manager.get(QNetworkRequest(QUrl(url)))
     reply.finished.connect(self.variety_contracts_reply)
Exemple #26
0
 def click_variety(self, variety_en, exchange_lib):
     """ 点击选择品种 """
     # 赋值类属性
     self.current_variety = variety_en
     self.current_exchange = exchange_lib
     self.contract_combobox.clear()  # 清空合约选择下拉项
     # 发送请求获取当前品种所有交割月份合约
     app = QApplication.instance()
     network_manager = getattr(app, "_network")
     url = SERVER + "{}/{}/contracts/".format(exchange_lib, variety_en)
     reply = network_manager.get(QNetworkRequest(QUrl(url)))
     reply.finished.connect(self.variety_contracts_reply)
Exemple #27
0
    def download(self):
        grab = None
        for x in range(self._tilesRect.width()):
            for y in range(self._tilesRect.height()):
                tp = Point(self._tilesRect.topLeft() + QPoint(x, y))
                if tp not in self._tilePixmaps:
                    grab = QPoint(tp)
                    break

        if grab is None:
            self._url = QUrl()
            return

        path = 'http://tile.openstreetmap.org/%d/%d/%d.png' % (
            self.zoom, grab.x(), grab.y())
        self._url = QUrl(path)
        self.request = QNetworkRequest()
        self.request.setUrl(self._url)
        self.request.setRawHeader(b'User-Agent',
                                  b'Nokia (PyQt) Graphics Dojo 1.0')
        self.request.setAttribute(QNetworkRequest.User, grab)
        self._manager.get(self.request)
Exemple #28
0
    def modify_row_data(self):
        """ 修改数据表的单元格点击 """
        btn = self.sender()
        row = getattr(btn, 'row_index')
        # 获取组织数据
        item = {
            "id": int(self.modify_table.item(row, 0).text()),
            "date": self.modify_table.item(row, 1).text(),
            "variety_en": self.modify_table.item(row, 2).text(),
            "spot_price": float(self.modify_table.item(row, 3).text()),
            "price_increase": float(self.modify_table.item(row, 4).text())
        }
        app = QApplication.instance()
        network_manager = getattr(app, "_network")
        url = SERVER + "spot/price/{}/".format(item["id"])

        request = QNetworkRequest(QUrl(url))
        request.setHeader(QNetworkRequest.ContentTypeHeader,
                          "application/json;charset=utf-8")

        reply = network_manager.put(request, json.dumps(item).encode("utf-8"))
        reply.finished.connect(self.modify_spot_price_reply)
    def start(self):
        """ Start downloading the file specify by set_source 
        """
        filepath = self.destination.absoluteFilePath(self.source.fileName())

        if QFile(filepath).exists():
            QFile.remove(filepath)

        self._file = QFile(filepath)

        # open the file to write in
        if self._file.open(QIODevice.WriteOnly):
            print("open file", filepath)
            # Create a Qt Request
            request = QNetworkRequest()
            request.setUrl(self.source)
            self.time = QTime.currentTime()
            self.reply = self.net.get(request)

            # Connect reply to different slots
            self.reply.downloadProgress.connect(self.on_update_progress)
            self.reply.finished.connect(self.on_finished)
            self.reply.error.connect(self.on_error)
Exemple #30
0
 def createRequest(self, operation, request, data):
     if self._regex and self._regex.findall(str(request.url().toString())):
         return QNetworkAccessManager.createRequest(
             self, QNetworkAccessManager.GetOperation,
             QNetworkRequest(QUrl()))
     reply = QNetworkAccessManager.createRequest(
         self,
         operation,
         request,
         data
     )
     reply.readyRead.connect(lambda reply=reply: replyReadyRead(reply))
     time.sleep(0.001)
     return reply