Saravanan666/pypi-org huggingface dataset:
Package: upycli
uPyCLIA microscopic library to turn any function into a CLI.Takes some inspiration frompyclialthough I didn't know
this existed before starting. This lib is even smaller thanpycliand does not require any setup
and has no dependencies.The good thing about this is, you don't need to write or maintain any code for the CLI, all your types,
variables, descriptions are introspected from the code itself, so all you do is throw on a decorator.Usageuclipath.to.your.function--helpFor this to work, all you need to do is have a function in the module with the right type-annotations
and all optional values should have a default value.# Here model_name is required and data_path is optionaldeftrain(model_name:str,data_path:str="./path/to/data"):...Alternatively, the command decorator can be used to directly turn the function into a CLI command# main.pyfromupycli.decoratorimportcommand@commanddeftrain(model_name:str,data_path:str="./path/to/data"):"""A function to train a model"""...pythonmain.pytrain--help
>>>usage:main.py[-h]--model_nameMODEL_NAME[--data_pathDATA_PATH]Afunctiontotrainamodel

options:-h,--helpshowthishelpmessageandexit--model_nameMODEL_NAMEstr--data_pathDATA_PATHstr(default./path/to/data)Your variables, types, required values and description are introspected from the code itself,
so all you do is throw on the decorator.
Package: upy-error
upy-errorDocumentation:https://github.com/UpyExplorer/upy-errorSource Code:https://github.com/UpyExplorer/upy-errorHow to install?pipinstallupy-errorHow to use?# Import the packagefromupy_errorimportformat_exceptionException example with (log)try:print(x)exceptExceptionaserror:# Using the function to process the error with the 'logging' package.format_exception(error=error,log=True)Output:==========================================2022-07-2300:13:37,577ERRORUpyError:File"test_upy_error.py",line4,in<module>print(x)NameError:name'x'isnotdefined==========================================Exception example with (print)try:1/0exceptExceptionaserror:# Using the function to return the error in string format.print(format_exception(error=error))Output:UpyError:File"test_upy_error.py",line11,in<module>1/0ZeroDivisionError:divisionbyzeroCommit Style⚙️ FEATURE📝 PEP8📌 ISSUE🪲 BUG📘 DOCS📦 PyPI❤️️ TEST⬆️ CI/CD⚠️ SECURITYLicenseDistributed under the MIT License. SeeLICENSEfor more information.
Package: uPyExplorer
uPyExplorerExplorer for Micropython for ESP32 , ESP8266 and ...I actually wanted to program my ESP32. I installed all tools and environments and looked for modern tools to set up my ESP32. The found tools put me in the 80s of the last century. So my project is now the uPyExplorer.Tests with esp32 and esp8266 on Ubuntu and Windows Python 3.X
Package: upyflashed
upyflashedA command to watch for new hex files fromhttps://github.com/ntoll/upyedand flash the micro:bit immediatelyupyflashedwill poll your browser download directory for new hex
files. If one is found it will copy it to the micro:bit storage
location.Note: The approach attempts to be cross platform but bug reports /
fixes gratefully accepted. Currently tested on Linux and Windows.InstallationpipinstallupyflashedUsage$upyflashedDefault options:download path:~/Downloadsmicrobit path: psutils looks for a disk partition mount point ending inMICROBITCustom$upyflashed--helpusage:upyflashed[-h][--download_pathDOWNLOAD_PATH][--microbit_pathMICROBIT_PATH][-v]Acommandtowatchfornewhexfilesfromhttps://github.com/ntoll/upyedandflashthemicro:bitimmediatelyoptionalarguments:-h,--helpshowthishelpmessageandexit--download_pathDOWNLOAD_PATHFilepathyourbrowserstoresdownloads--microbit_pathMICROBIT_PATHFilepathyourcomputermountsthemicro:bitat-v,--verboseChangelog0.1.1 (2015-12-22)Don’t error, just warn, when no hex files found.0.1.0 (2015-12-02)Initial release
Package: upy-flasher
how to …… use it./flash.py --help

./flash.py {arguments}
{arguments}         {default}
    -p  --port      /dev/ttyUSB0
    -b  --binary    firmware/esp32-20180627-v1.9.4-225-gd8dc918d.bin
    -e  --erase     not set / false
    -c  --chip      esp32
    -u  --upload    []
                -u can be used multiple times for multiple files
    -h  --help
Package: upymenu
uPyMenuuPyMenu is a micropython menu implementation for LCD displays. Coming from an Arduino experience, I was used withLiquidCrystalandLiquidMenu, but they don't offer a python implementation. So I figured I could create one myself.DevelopmentCurrent development is done based on when I have to to work on it when I want to. But feel free to fork it and add your functionality. If you find any bugs or have suggestions for features, please open up a issue (or pull-request if you create the feature yourself!).TODOAdd arguments to callback actions in the menuUsageThe example below renders a menu with a submenu and actions that have callbacks attached which you can use to run your own function. It requires one dependency, and that'spython_lcdfor interacting with the LCD itself.frommachineimportPin,I2C# Basics for creating an LCD interfacefromesp8266_i2c_lcdimportI2cLcd# Example LCD interface usedfromupymenuimportMenu,MenuAction,MenuNoopdefaction_callback():print("callback action chosen")submenu=Menu("Submenu")submenu_action_1=MenuAction("Submenu Action",callback=action_callback)submenu_action_2=MenuAction("Submenu Action 1",callback=action_callback)submenu.add_option(submenu_action_1)submenu.add_option(submenu_action_2)menu_action=MenuAction("Action",callback=action_callback)menu=Menu("Main Menu")menu.add_option(submenu)menu.add_option(menu_action)menu.add_option(MenuNoop("Nothing here"))# Example config for LCD via i2c, you will need this# for the menu to function, the screen size is required# to render the menu correctly on the screen.i2c=I2C(scl=Pin(5),sda=Pin(4),freq=400000)lcd=I2cLcd(i2c,0x3F,4,20)current_menu=menu.start(lcd)# Starts the menu on the LCDmenu.focus_next()# Focus on the next item in the menumenu.focus_prev()# Focus on the previous item in the menu# Choose the focused item, if it's and action execute# the callback, or if it is a menu, render that menu.menu=menu.choose()# If it's a submenu, you can use the parent() function# to navigate back up to the tree.menu=menu.parent()TestingIf you have amicropythonport running locally, you can run the test suite with it, ie:micropython tests.py. This is as close I can get with my current knowledge about micropython. Any pointers and suggestions towards improvement here would be appreciated!
Package: upyog
This package is a collection of utilities that I find myself using across the various projects I've worked on in the past. Some have been extracted from packages, some from blog posts / stack overflow solutions, and some my own. Wherever possible, I have cited the source. Please do let me know if I missed outEnable math like operations for joining PIL Imagesfromupyog.imageimport*img1=Image.open(...)img2=Image.open(...)horizontal_join=img1|img2vertical_join=img1//img2To do this over a list of images, use:img_join_horizontal(img_list)
img_join_vertical(img_list)
Package: upy-rabbitmq
upy-rabbitmqDocumentation:https://github.com/UpyExplorer/upy-rabbitmqSource Code:https://github.com/UpyExplorer/upy-rabbitmqHow to install?pipinstallupy-rabbitmqConfigAdd an environment variation calledRABBITMQ_URLin your project's .env file.RABBITMQ_URL=amqp://user:password@remote.server.com:port//vhostCallback Classcallback.pyimporttimefromupy_rabbitmq.callbackimportCallbackProcessclassMyCallBack(CallbackProcess):defprocess(self):time.sleep(5)print(self.body.decode())Start Queueworker.pyfromupy_rabbitmq.workerimportUpyMQWorkerworker=UpyMQWorker()worker.start_queue(key="key",callback=MyCallBack)New Taskclient.pyfromupy_rabbitmq.clientimportUpyMQClientclient=UpyMQClient()client.new_task(key="key",message="Hello")ContributingContributions are what make the open source community such an amazing place to learn, inspire, and create. Any contributions you make aregreatly appreciated.Fork the ProjectCreate your Feature Branch (git checkout -b feature/AmazingFeature)Commit your Changes (git commit -m 'Add some AmazingFeature')Push to the Branch (git push origin feature/AmazingFeature)Open a Pull RequestCommit Style⚙️ FEATURE📝 PEP8📌 ISSUE🪲 BUG📘 DOCS📦 PyPI❤️️ TEST⬆️ CI/CD⚠️ SECURITYLicenseDistributed under the MIT License. SeeLICENSEfor more information.
Package: upyrc
UnrealRemoteControlWrapperA (work in progress) python 3 wrapper around Unrealremote control api. It allows to control Unreal engine remotly, from a dcc ( maya, blender, houdini, etc. ), or a webapp, or any other sources, using a simple python api.upyrc is available on pip:python -m pip install upyrcIt needs to have the remote API plugin installed on your Unreal project, as well as the server started, you can do that on the cmd:WebControl.StartServer
WebControl.EnableServerOnStartupBy default, the script use these values bellow as host and port, it matches the default value of the remote plugin from Unreal install, it needs to be set to your values if needed:DEFAULT_HOST = "127.0.0.1"
DEFAULT_PORT = 30010Http apiendpoints documentation.Features✔️ Get remote UObject by path.✔️ Run query with various filter (class, path, package etc.) to get UObjects.✔️ Get / Set UObject properties.✔️ Run UObject functions.✔️ Get remote blueprint actor and run functions.✔️ Get remote presets.✔️ Get / Set remote preset properties, functions, actors.✔️ Get utilities EditorActorSubsystem and EditorAssetLibrary.❌ Batch process is not supported at the moment, Unreal crashes when a batch call is executed.❌ Get thumbnail not supported.Basic usage# Default host and port used by the api:upyrc.DEFAULT_HOST="127.0.0.1"upyrc.DEFAULT_PORT=30010# Init the connectionconn=upyrc.URConnection()print("Ping: ",conn.ping())# >>> Ping: 0:00:00.015211# Get Remote UObject by path:chair_path="/Game/Maps/TestMap.TestMap:PersistentLevel.StaticMeshActor_2"robj_chair=conn.get_uobject(chair_path)print("RUObject: "+str(robj_chair))# >>> RUObject: UObject: /Game/Maps/TestMap.TestMap:PersistentLevel.StaticMeshActor_2, of Class /Script/Engine.StaticMeshActor# Access property directly on URemoteObject object:auto_lod_generation=robj_chair.bEnableAutoLODGeneration# Set property the same way:robj_chair.bEnableAutoLODGeneration=True# dir() returns all properties and functions available remotly.print(dir(robj_chair))# >>> ['ActorHasTag (function)', 'AddActorLocalOffset (function)', 'AddActorLocalRotation (function)', 'AddActorLocalTransform (function)',  ... 'bRelevantForLevelBounds (property)', 'bRelevantForNetworkReplays (property)', 'bStaticMeshReplicateMovement (property)']# You can also load a blueprint actor.blueprint_path="/Game/Maps/TestMap.TestMap:PersistentLevel.BUA_TestBlueprint_C_1"blueprint=conn.get_uobject(blueprint_path)print("Blueprint: ",blueprint)# >>> UObject: /Game/Maps/TestMap.TestMap:PersistentLevel.BUA_TestBlueprint_C_1, of Class /Game/Blueprints/BUA_TestBlueprint.BUA_TestBlueprint_C# And a function with argument(s) too and a return value:function_result=blueprint.run_function("SimpleTestFuncArgs",MyString="Hello from python !")print("Function result: ",function_result)# ---> In Unreal: LogBlueprintUserMessages: [BUA_TestBlueprint_C_UAID_D89EF37396CEAA5E01_2120751343] Hello from python !# >>> Function result: {'OutputData': True, 'MessagePrinted': 'Hello from python !'}InfosMore infos on file:test_uremote.pyAs well as help() on objects:help(upyrc.URConnection)help(upyrc._URemoteObject)# etc..Contact🔗www.cgtoolbox.com✉️contact@cgtoolbox.com
Package: upysm
upysmVersatile and flexible Python State Machine library - Micropython PortThis repository is basically a set of tools to build and deploy (to pypi) the
Micropython Port of thepysmlibrary.It's successfully tested against the ESP-32S ESP-WROOM-32 NodeMCU board.Installationimportupipupip.install('upysm')UsageBasic usage:importmachineimporttimefrompysmimportState,StateMachine,Eventled=machine.Pin(2,machine.Pin.OUT)defon_enter(state,event):led.value(1)time.sleep(0.1)defon_exit(state,event):led.value(0)time.sleep(0.1)on=State('on')off=State('off')sm=StateMachine('sm')sm.add_state(on,initial=True)sm.add_state(off)sm.add_transition(on,off,events=['off'])sm.add_transition(off,on,events=['on'])on.handlers={'enter':on_enter,'exit':on_exit}off.handlers={'enter':on_enter,'exit':on_exit}sm.initialize()assertsm.state==onsm.dispatch(Event('off'))assertsm.state==offsm.dispatch(Event('on'))assertsm.state==onFor more examples and API description refer to thepysm documentation.
Package: upytimerobot
Python Module for Uptime Robot==============================Python3 module to interact with UptimeRobot APIInstallation------------To get the latest stable release from PyPi.. code:: bash$ pip install upytimerobotTo get the latest commit from GitLab.. code:: bash$ pip install -e git+git://gitlab.com/fboaventura/upytimerobot.git#egg=uptimerobotUsage-----Use with Python:.. code:: python>>> from upytimerobot import UptimeRobot>>> up = UptimeRobot(api_key=UPTIME_ROBOT_API_KEY)>>> up.get_monitors(){'stat': 'ok', 'pagination': {'offset': 0, 'limit': 1, 'total': 4}, 'monitors': [{'id': 90909090, 'friendly_name': 'my_monitor', 'url': '127.0.0.1', 'type': 3, 'sub_type': '', 'keyword_type': '', 'keyword_value': '', 'http_username': '', 'http_password': '', 'port': '', 'interval': 300, 'status': 2, 'ssl': {'brand': '', 'product': None, 'expires': 0}, 'create_datetime': 1480809958}]}ToDo----- Add support to edit existing Monitors- Add support to delete existing Monitors- Add support to add new Alert Contacts- Add support to edit existing Alert Contacts- Add support to delete existing Alert Contacts- Add support to add new Maintenance Windows- Add support to edit existing Maintenance Windows- Add support to delete existing Maintenance Windows- Add support to add new Public Status Pages- Add support to edit existing Public Status Pages- Add support to delete existing Public Status Pages- Make the module work as a standalone scriptHistory-------[0.2.1] - 2018-06-28--Some work was made toward improving the collection of monitors by type, status, etc..Added--- `.add_monitor` to add new monitors- `.add_http_monitor` to add http/https monitors- `.add_ping_monitor` to add ping monitors- `.add_port_monitor` to add port monitors- File `add_monitor.py` to serve as example of what can be achievedChanged--- `Changelog` texts to be more clear- FIX: `get_monitor_by_status` is now working properly- FIX: `get_monitor_by_type` is now working properly[0.1.0] - 2018-06-18---This is functional module already, one can query all the information regarding `account`, `monitors`, `alert contacts`, `maintenance windows` and `public status pages`.Also, the functions are all well documented, containing all the possible parameters that can be used to each of the queries available.Added--- Add `constants` file to hold parameters options and other constants that will be usedChanged--- Renamed some internal usage methods to differentiate from the public ones- Improved documentation on the existing methods- The importing of some libraries- `.get_monitors_by_name`: Changed validation if a monitor was recovered- `.get_monitors_by_id`: Changed validation if a monitor was recovered- Changed the name of the methods to a more pythonic naming:- `.getMonitors` -> `.get_monitors`- `.getAccountDetails` -> `.get_account_details`- `.getAlertContacts` -> `.get_alert_contacts`- `.getMWindows` -> `.get_mwindows`- `.getPSPs` -> `.get_psps`About the API-------------The full API is documented here: https://uptimerobot.com/api
Package: upyuns3client
又拍云存储-s3 支持接口说明获取服务列表list_buckets参数参数必选类型说明NoneNoneNoneNone获取目录列表list_folders参数参数必选类型说明bucket是str又拍云服务名称获取目录文件列表list_files参数参数必选类型说明bucket是str又拍云服务名称folder是str又拍云服务目录删除文件delete_file参数参数必选类型说明bucket是str又拍云服务名称file是str又拍云文件名称删除目录delete_folder参数参数必选类型说明bucket是str又拍云服务名称folder是str又拍云服务目录创建目录create_folder参数参数必选类型说明bucket是str又拍云服务名称folder是str又拍云服务目录上传文件upload_file参数参数必选类型说明bucket是str又拍云服务名称file_path是str本地文件路径object_name否str如果 object 为 None，则又拍云的存储文件名称为 file_path 文件名，并且存放位置是根目录获取文件信息get_file_info参数参数必选类型说明bucket是str又拍云服务名称object_name是str又拍云存储文件名称获取随机文件get_random_file参数参数必选类型说明bucket是str又拍云服务名称folder是str又拍云服务目录下载文件download_file参数参数必选类型说明bucket是str又拍云服务名称object_name是str又拍云存储文件名称file_path否str本地存储的文件路径及名称生成预签名 URLgenerate_presigned_url参数必选类型说明bucket是str又拍云服务名称object_name是str又拍云存储文件名称expiration否int过期时间，单位秒，最大不能超过 604800，默认不填 3600 秒代码示例fromupyuns3client.upyuns3clientimportUpYunS3Clientak="xxxxx"sk="xxxxx"client=UpYunS3Client(ak,sk)client.generate_presigned_url(bucket="test-bucket",object_name="test.png",expiration=3600)
Package: uq
Python client library forUQcluster.Installationpyuq requires a running uq server, in either standalone mode or cluster mode.
SeeUQ’s getting-startedfor installation instructions.To install pyuq, simply:$pipinstalluqor from source:pythonsetup.pyinstallGetting Started>>>importuq,datetime>>>cli=uq.UqClient(protocol='http',ip='127.0.0.1',port=8808)>>>cli.add('foo')(True, '')>>>cli.add('foo','x',datetime.timedelta(seconds=10))(True, '')>>>cli.push('foo','hello')(True, '')>>>cli.pop('foo/x')(True, '127.0.0.1:8808/foo/x/0', u'hello')>>>cli.remove('127.0.0.1:8808/foo/x/0')(True, '')
Package: uq4k
UQ4k: Uncertaininty Quantification of the 4th KindThis package accompines theUncertainty Quantification of the 4th kind; optimal posterior accuracy-uncertainty tradeoff with the minimum enclosing ballpaper.Paper's AbstractThere are essentially three kinds of approaches to Uncertainty Quantification (UQ): (A) robust optimization, (B) Bayesian, (C) decision theory. Although (A) is robust, it is unfavorable with respect to accuracy and data assimilation. (B) requires a prior, it is generally brittle and posterior estimations can be slow. Although (C) leads to the identification of an optimal prior, its approximation suffers from the curse of dimensionality and the notion of risk is one that is averaged with respect to the distribution of the data. We introduce a 4th kind which is a hybrid between (A), (B), (C), and hypothesis testing. It can be summarized as, after observing a sample x, (1) defining a likelihood region through the relative likelihood and (2) playing a minmax game in that region to define optimal estimators and their risk. The resulting method has several desirable properties (a) an optimal prior is identified after measuring the data, and the notion of risk is a posterior one, (b) the determination of the optimal estimate and its risk can be reduced to computing the minimum enclosing ball of the image of the likelihood region under the quantity of interest map (which is fast and not subject to the curse of dimensionality). The method is characterized by a parameter in [0,1] acting as an assumed lower bound on the rarity of the observed data (the relative likelihood). When that parameter is near 1, the method produces a posterior distribution concentrated around a maximum likelihood estimate with tight but low confidence UQ estimates. When that parameter is near 0, the method produces a maximal risk posterior distribution with high confidence UQ estimates. In addition to navigating the accuracy-uncertainty tradeoff, the proposed method addresses the brittleness of Bayesian inference by navigating the robustness-accuracy tradeoff associated with data assimilation.InstallationThe package can be simply installed by:$ pip install uq4kUsageTo fully run the provided examples, you'll need to havematplotlibin your environmentThere are two versions ofuq4kthat can be used: gradient-based version and non-gradient version. For the gradient-based, consult thegradient-based quadratic model examplefor the usage. For the non-gradient version, check:Example on predator-prey model (Lotka-Volterra)Example on a quadratic model with no gradients.Detailed instruction on applyinguq4kfor your custom models will be provided soon
Package: uqid
uqid:pip install uqid
from uqid import uqid, digits

print(uqid()) # e7ljCIs4grYZ9tOv6bpX3TQIA7FyA23umzGjDcIjHff2XwF2ziAw56B7S3EdOuCA
print(uqid(4, digits)) # 4982Returns unique id from random chars.Default is 64 chars 0-9a-zA-Z aka base62.dtid:pip install uqid
from uqid import dtid
print(dtid())

YYYYMMDDhhmmssmicrosrnd4
20161231235959123456uN1q24 bytes by default - as str(ObjectId()).But human-friendly - unlike ObjectId.Microsecond-precise UTC timestamp - unlike second-precise ObjectId().May extract datetime_from_dtid().May be used as a log timestamp as is.Alphabetically ordered.Safe chars 0-9a-zA-Z - unlike binary ObjectId() leading to “ValueError: Invalid UTF-8 sequence length” if added to JSON without str().base62^4 is over 14M uniques per microsecond.dtid(24) is 2x faster than uqid(24) but slower than str(ObjectId())tests:python2 uqid.py
python3 uqid.py

SAMPLES:
str(uuid4()): 3bb25137-2422-4d06-bd12-5a9de2ea2bf6
len(^): 36
len(v): 24
str(ObjectId()): 5acdcd1f9c591516ae800615
uqid(24): UFRFQVCtYu6rtQq8LD33XjI3
dtid(24): 20180411085351268116tHse
Iterations: 1000000

python2 SECONDS:
str(uuid4()) seconds: 11.825964
str(ObjectId()) seconds: 2.424702
uqid(24) seconds: 9.701306
dtid(24) seconds: 5.357983

python3 SECONDS:
str(uuid4()) seconds: 5.826098
str(ObjectId()) seconds: 3.192565
uqid(24) seconds: 17.769653
dtid(24) seconds: 9.588677

DUPLICATES:
str(uuid4()) duplicates: 0
str(ObjectId()) duplicates: 0
uqid(24) duplicates: 0
dtid(24) duplicates: 0
Package: uqload-dl
Uqload Downloader PythonYou can download any video from Uqload. You only need the URL of the video.Inspired bythomasarmel/uqload_downloaderRequirementsPython 3.9 or greater.InstallationFrom Source CodeClone the repository:gitclonehttps://github.com/JoelFH23/uqload-downloader-pythonNavigate to the package directory:cduqload-downloader-pythonInstall the package:python-mpipinstall.Alternatively, you can install it in development mode to easily make changes:python-mpipinstall-e.Directly from GitHubYou can install the package directly from GitHub using pip:python-mpipinstallgit+https://github.com/JoelFH23/uqload-downloader-pythonUsageUsing the CLITo download a videouqload_dl-uhttps://uqload.io/xxxxxxxxxxxx.htmlYou can specify a video name using "-n" or "--name"uqload_dl-uhttps://uqload.io/xxxxxxxxxxxx.html-n"The best video"if no name is specified, the original name of the video will be used.You can specify the path where the video will be stored using "-o" or "--outdir"uqload_dl-uhttps://uqload.io/xxxxxxxxxxxx.html-n"The best video"-oC:\\Users\\Joel\\Desktop\\MyVideosif no path is specified, the current working path will be used.Using a Python Scriptfromuqload_dlimportUQLoaduqload=UQLoad(url="https://uqload.io/xxxxxxxxxxxx.html",output_file="The best video")uqload.download()# download the videoExample Usage(python3.9)PSC:\Users\Joel\desktop>uqload_dl-uvule3vel9n5q
Lookingforvideo...
------------------------------------------------------------videoinfo
------------------------------------------------------------
url:https://m180.uqload.io/3rfkv4rhrvw2q4drdkgpxmnva6flydhkehdqtxrb6635d6s4w6j6f5krce4q/v.mp4
title:pythontestingtimeimage_url:https://m180.uqload.io/i/05/02288/vule3vel9n5q_xt.jpg
resolution:860x360
duration:00:22
size:915562bytestype:video/mp4
------------------------------------------------------------
Doyouwanttodownloadthevideo?(yes/[no]):Note: sometimes the resolution and duration will not be available.You can use "-y" or "--yes" to start the download automatically.(python3.9)PSC:\Users\Joel\desktop>uqload_dl-uvule3vel9n5q-y
Lookingforvideo...
------------------------------------------------------------videoinfo
------------------------------------------------------------
url:https://m180.uqload.io/3rfkv4rhrvw2q4drdkgpxmnva6flydhkehdqtxrb6635d6s4w6jydssrce4q/v.mp4
title:pythontestingtimeimage_url:https://m180.uqload.io/i/05/02288/vule3vel9n5q_xt.jpg
resolution:860x360
duration:00:22
size:915562bytestype:video/mp4
------------------------------------------------------------
Downloading...|----------------------------------------|100.00%completed
Videosavedas:C:\Users\Joel\desktop\pythontestingtime.mp4LicenseLicensed under theGPLv3.