如何根据块号,大小和下载的总大小计算下载进度?

时间:2017-07-18 16:57:32

标签: python http urllib chunked-encoding

Python的urllib.request.urlretrieve()接受一个函数,当从网络中提取每个块时将调用该函数。

使用三个参数调用该函数:块的渐进标识符,其大小和下载的总大小。

鉴于这三个信息,我可以计算已经获取的字节数吗?这将用于计算下载的进度。

我很想做chunk_number * chunk_size / download_size,但我不确定所有块的块大小是否恒定。

1 个答案:

答案 0 :(得分:1)

到目前为止,您可以保持所有尺寸的总计。

试试这个:

private void animateMenu(final Toolbar toolbar){

            // Flash the menu several times quickly, then wait a few seconds. Repeat.
            animateMenu(toolbar, 6, R.drawable.ham_menu_2, new GenericCallback() {
                @Override
                public void success(Object result) {
                    handler.postDelayed(new Runnable() {
                        @Override
                        public void run() {
                            animateMenu(toolbar);
                        }
                    }, 5000);
                }

                @Override
                public void failure(Throwable error) {

                }
            });
    }

    private void animateMenu(final Toolbar toolbar, final int count, final int drawable, final GenericCallback callback){

        toolbar.postDelayed(new Runnable() {
            @Override
            public void run() {

                Drawable d2 = ResourcesCompat.getDrawable(getResources(), drawable, null);
                toolbar.setNavigationIcon(d2);
                int i = count - 1;
                if(i == 0){
                    callback.success(null);
                }
                else {
                    animateMenu(toolbar, i, drawable == R.drawable.ham_menu ? R.drawable.ham_menu_2 : R.drawable.ham_menu, callback);
                }
            }
        }, 200);
    }