Download web pages and files from the internet using CLI or as a Python module.
Project description
net-dl
Download web pages and files from the internet. Can be used as a standalone CLI command, or as a python module.
Installation
End Users (with pipx)
python3 -m pip install pipx
pipx install net-dl
Dev Users (with pip)
python3 -m pip install net-dl
Usage
CLI command
~$ # print content to stdout if text/html/json/xml
~$ net-dl 'https://httpbin.org/json'
{
"slideshow": {
"author": "Yours Truly",
"date": "date of publication",
"slides": [
{
"title": "Wake up to WonderWidgets!",
"type": "all"
},
{
"items": [
"Why <em>WonderWidgets</em> are great",
"Who <em>buys</em> WonderWidgets"
],
"title": "Overview",
"type": "all"
}
],
"title": "Sample Slide Show"
}
}
~$ # save content to disk if file
~$ net-dl 'https://httpbin.org/image/svg'
[................................... ] 50%
Python module
Built-in progress bar
>>> import net_dl
>>> url = 'https://httpbin.org/image/svg'
>>> dl = net_dl.Download(url)
>>> dl.get()
[........................................................................] 100%
0
>>> import logging
>>> l = logging.get_logger()
>>> l.setLevel(logging.INFO)
>>> dl.get()
INFO:root:File already exists: /home/nate/g/net-dl/svg
0
>>>
External progress bar
demo/tkapp.py
:
from net_dl import Download
from queue import Queue
from threading import Thread
from tkinter import IntVar
from tkinter import StringVar
from tkinter import Tk
from tkinter import ttk
class Win(ttk.Frame):
def __init__(self, root):
super().__init__(root)
self.root = root
self.root.title("net-dl demo")
self.urlv = StringVar()
self.urlw = ttk.Entry(self, textvariable=self.urlv)
self.getw = ttk.Button(self, text="Get", command=self.get)
self.progq = Queue()
self.progv = IntVar()
self.proge = '<<UpdateProgress>>'
self.root.bind(self.proge, self.update_progress)
self.progw = ttk.Progressbar(
self,
mode='determinate',
variable=self.progv,
)
self.grid(column=0, row=0, sticky='nesw')
self.urlw.grid(column=0, row=0, columnspan=4, sticky='we')
self.getw.grid(column=4, row=0)
self.progw.grid(column=0, row=1, columnspan=5, sticky='we')
def get(self):
dl = Download(
self.urlv.get(),
progress_queue=self.progq,
callback=self.root.event_generate,
callback_args=[self.proge],
)
self.get_thread = Thread(target=dl.get, daemon=True)
self.get_thread.start()
def update_progress(self, evt):
self.progv.set(self.progq.get())
def run():
root = Tk()
Win(root)
root.mainloop()
Run code:
demo$ python -c 'import tkapp; tkapp.run()'
Releasing on PyPI
- Create new tag in repo that matches package version; e.g. if version is "0.1.0", tag will be "v0.1.0".
- CI will auto build and upload package to TestPyPI and PyPI.
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
net_dl-0.1.3.tar.gz
(11.4 kB
view details)
Built Distribution
net_dl-0.1.3-py3-none-any.whl
(10.5 kB
view details)
File details
Details for the file net_dl-0.1.3.tar.gz
.
File metadata
- Download URL: net_dl-0.1.3.tar.gz
- Upload date:
- Size: 11.4 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/5.1.1 CPython/3.13.0
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 8641f1d769b657b31474e95c92edb2476342f38a9cc9e61a17c6b589b16133b4 |
|
MD5 | 194704053441d32e28be9777cea2bc65 |
|
BLAKE2b-256 | 4d1a52e1622bebc5d19b6dd08a9b9069a79be9b3c5cfb84f00aa73bf275dd96f |
File details
Details for the file net_dl-0.1.3-py3-none-any.whl
.
File metadata
- Download URL: net_dl-0.1.3-py3-none-any.whl
- Upload date:
- Size: 10.5 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/5.1.1 CPython/3.13.0
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 83804ce5c318ece85e6415bd2d26800ca85efbcf19a0bf684c1345e50f49e718 |
|
MD5 | eab27cb9de75aaab27d7cd5836b2d0b0 |
|
BLAKE2b-256 | d66f2ba6d278c91458b0bc5edced00f9ffadfecf5cd87e31ea63490890b8f651 |