SimpleSoup
A simple Python wrapper for yt-dlp and FFmpeg.
Installation
pip install simplesoup
For gallery support:
pip install "simplesoup[gallery]"
Import
from simplesoup import rz
Basic Syntax
result = rz({
"WHAT_TO_REQUEST": "VARIABLE_NAME"
}, url)
WHAT_TO_REQUEST batata hai kya chahiye, aur VARIABLE_NAME batata hai result mein us value ko kis naam se save karna hai.
Example:
result = rz({
"title": "title"
}, url)
print(result["title"])
Video Download
result = rz({
"video[4]": "video"
}, url)
print(result["video"])
video[4] = 720p.
Video Quality
video[0] → audio
video[2] → 360p
video[3] → 480p
video[4] → 720p
video[5] → 1080p
video[6] → best available
Example:
result = rz({
"video[5]": "video"
}, url)
Multiple Values At Once
Ek hi request mein video aur metadata dono le sakte ho:
result = rz({
"video[4]": "video",
"title": "title",
"creator": "creator",
"url": "video_url",
"views": "views",
"likes": "likes",
"count": "comments",
"time": "duration",
"thumbnail": "thumbnail"
}, url)
Values access karne ke liye:
print(result["video"])
print(result["title"])
print(result["creator"])
print(result["video_url"])
print(result["views"])
print(result["likes"])
print(result["comments"])
print(result["duration"])
print(result["thumbnail"])
Order matter nahi karta.
Metadata
Available metadata:
title → video title
creator → uploader/channel
url → video URL
views → view count
likes → like count
count → comment count
time → duration in seconds
thumbnail → downloaded thumbnail path
formats → available yt-dlp formats
Metadata Only
Agar sirf metadata chahiye aur video download nahi karna:
result = rz({
"title": "title",
"creator": "creator",
"views": "views",
"likes": "likes",
"count": "comments",
"time": "duration"
}, url)
video[...] block nahi hone par video download nahi hota.
Thumbnail
result = rz({
"thumbnail": "thumbnail"
}, url)
print(result["thumbnail"])
Thumbnail actual .jpg file ke roop mein download hota hai.
Playlist
Playlist syntax:
result = rz({
"playlist": "QUALITY:SKIP:COUNT"
}, playlist_url)
Example:
result = rz({
"playlist": "4:20:3"
}, playlist_url)
Meaning:
4 → 720p
20 → first 20 videos skip
3 → next 3 videos download
So:
Video 1-20 → skip
Video 21 → download
Video 22 → download
Video 23 → download
Downloaded videos:
for video in result["videos"]:
print(video)
Playlist + Metadata
result = rz({
"playlist": "4:20:3",
"title": "playlist_title"
}, playlist_url)
print(result["playlist_title"])
print(result["videos"])
Gallery
Gallery downloading ke liye:
result = rz({
"gallery": "images"
}, gallery_url)
print(result)
Gallery support ke liye gallery-dl install hona chahiye:
pip install "simplesoup[gallery]"
Cookies
SimpleSoup automatic cookie fallback support karta hai.
User apne cookie file paths `ReiZyuki` variable mein de sakta hai:
ReiZyuki = [
"/storage/emulated/0/Download/youtube.txt",
"/storage/emulated/0/Download/instagram.txt",
"/storage/emulated/0/Download/reddit.txt"
]
Uske baad normal syntax hi use karo:
result = rz({
"title": "title",
"video[4]": "video"
}, url)
SimpleSoup pehle URL ko bina cookies ke try karta hai.
Agar normal request successful ho jaaye, cookies test nahi kiye jaate.
Agar normal request fail ho, to `ReiZyuki` mein diye gaye cookie paths ko one-by-one test kiya jaata hai.
Jo pehla cookie current URL ke liye successfully kaam karta hai, SimpleSoup automatically usi cookie ko use karta hai.
Kisi `cookies=` argument ki zarurat nahi hai.
Missing ya failed cookie automatically skip hota hai aur next cookie test hota hai.
Progress Callback
Optional progress callback:
def progress(percent, speed, mode):
print(
f"[Download {percent}] "
f"[Network {speed}] "
f"[Mode {mode}]"
)
result = rz(
{
"video[4]": "video"
},
url,
progress_callback=progress
)
Callback ko ye 3 values milti hain:
percent → download percentage
speed → network speed
mode → Video / Playlist
Complete Example
from simplesoup import rz
url = "VIDEO_URL"
result = rz({
"video[4]": "video",
"title": "title",
"creator": "creator",
"url": "video_url",
"views": "views",
"likes": "likes",
"count": "comments",
"time": "duration",
"thumbnail": "thumbnail"
}, url)
print("Video:", result["video"])
print("Title:", result["title"])
print("Creator:", result["creator"])
print("URL:", result["video_url"])
print("Views:", result["views"])
print("Likes:", result["likes"])
print("Comments:", result["comments"])
print("Duration:", result["duration"])
print("Thumbnail:", result["thumbnail"])
Default Download Location
/storage/emulated/0/Download/ReiDownloader/
API Syntax Summary
Single video:
rz({
"video[QUALITY]": "variable"
}, url)
Metadata:
rz({
"title": "variable",
"creator": "variable",
"url": "variable",
"views": "variable",
"likes": "variable",
"count": "variable",
"time": "variable",
"thumbnail": "variable"
}, url)
Video + metadata:
rz({
"video[4]": "video",
"title": "title",
"creator": "creator",
"views": "views",
"likes": "likes",
"count": "comments",
"time": "duration",
"thumbnail": "thumbnail"
}, url)
Playlist:
rz({
"playlist": "QUALITY:SKIP:COUNT"
}, playlist_url)
Gallery:
rz({
"gallery": "variable"
}, gallery_url)
Version
SimpleSoup 2026.09.08
Metadata
Release files for simplesoup 2026.9.8
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| simplesoup-2026.9.8.tar.gz | 9.6 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| simplesoup-2026.9.8-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 19.2 kB
Release files / simplesoup-2026.9.8.tar.gz
| Download URL | simplesoup-2026.9.8.tar.gz |
|---|---|
| Size | 9.6 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
b3451e80522c0d6866a8a13a7239804d4e0548209a3c5f1ae03e8886347c7b72
|
|
BLAKE2b-256 checksum How to use checksums |
31da3f2820ce9f9a356d9bf0d430afea5505e9ea51f6e40cc4c2b9326e434524
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Sep 8, 2026.
Transparency logRelease files / simplesoup-2026.9.8-py3-none-any.whl
| Download URL | simplesoup-2026.9.8-py3-none-any.whl |
|---|---|
| Size | 9.5 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
ea8eba4bd5fac09ca63daf9f21f75379f237966b2d08804564246485f32db28f
|
|
BLAKE2b-256 checksum How to use checksums |
05f30f155c5864ee9add4a8c370f2684b17bd12570a9f9ab0e1359b164203e8c
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Sep 8, 2026.
Transparency log