<!doctype html>
<html lang="en">
  <head>
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <title>Cradicle Explorer</title>
    <link href="/css/bootstrap/bootstrap.min.css" rel="stylesheet">
    <style>
      .form-control-dark::placeholder {
          color: #aaa;
          opacity: 1;
      }
    </style>
    <link rel="stylesheet" href="/assets/fontawesome/css/all.min.css">
    <link rel="icon" type="image/png" href="/favicon.png">


                <link href="/css/dashboard.css" rel="stylesheet">
                </head>
                <body>
                <header class="navbar navbar-dark sticky-top bg-dark flex-md-nowrap p-0 shadow">
                  <a class="navbar-brand col-md-3 col-lg-2 me-0 px-3 fs-6" href="/">Cradicle Explorer</a>
                  <button class="navbar-toggler position-absolute d-md-none collapsed" type="button" data-bs-toggle="collapse" data-bs-target="#sidebarMenu" aria-controls="sidebarMenu" aria-expanded="false" aria-label="Toggle navigation">
                    <span class="navbar-toggler-icon"></span>
                  </button>
                  <form method="get" action="/cgi-bin/main" style="width:100%;"><input class="form-control form-control-dark w-100 rounded-0 border-0" type="text" name="q" placeholder="Search repos" aria-label="Search"></form>
                  <div class="navbar-nav flex-row">
                    <div class="nav-item text-nowrap">
                      <a class="nav-link px-3 active" href="/cgi-bin/repo?id=z2eyxJzy2cc8ScpNiLKHNBJuJCABZ">QuickSave</a>
                    </div>
                  </div>
                </header>
                <div class="container-fluid">
                  <div class="row">
                    <nav id="sidebarMenu" class="col-md-3 col-lg-2 d-md-block bg-dark sidebar collapse">
                      <div class="position-sticky pt-3 sidebar-sticky">
                        <ul class="nav flex-column">
                          <li class="nav-item">
                            <a class="nav-link active" href="/cgi-bin/repo?id=z2eyxJzy2cc8ScpNiLKHNBJuJCABZ">
                              <i class="align-text-bottom fa-solid fa-info"></i>
                              Info
                            </a>
                          </li>
                          <li class="nav-item">
                            <a class="nav-link" href="/cgi-bin/repo?id=z2eyxJzy2cc8ScpNiLKHNBJuJCABZ&issue=list">
                              <i class="align-text-bottom fa-solid fa-layer-group"></i>
                              Issues
                            </a>
                          </li>
                          <li class="nav-item">
                            <a class="nav-link" href="/cgi-bin/repo?id=z2eyxJzy2cc8ScpNiLKHNBJuJCABZ&patch=list">
                              <i class="align-text-bottom fa-solid fa-vest-patches"></i>
                              Patches
                            </a>
                          </li>
                          <li class="nav-item">
                            <a class="nav-link" href="/cgi-bin/repo?id=z2eyxJzy2cc8ScpNiLKHNBJuJCABZ&wallet=list">
                              <i class="align-text-bottom fa-solid fa-wallet"></i>
                              Wallets
                            </a>
                          </li>
                          <li class="nav-item">
                            <a class="nav-link" href="/cgi-bin/repo?id=z2eyxJzy2cc8ScpNiLKHNBJuJCABZ&source=.">
                              <i class="align-text-bottom fa-solid fa-code"></i>
                              Source
                            </a>
                          </li>
                        <h6 class="sidebar-heading d-flex justify-content-between align-items-center px-3 mt-4 mb-1 text-muted text-uppercase">
                          <span></span>
                        </h6>
                        <ul class="nav flex-column mb-2">
                        
                        </ul>
                      </div>
                    </nav>
                <main class="col-md-9 ms-sm-auto col-lg-10">
                  <div class="container px-1 py-3">
        

    <div class="list-group">
    <div class="list-group-item">
    <div style="font-size:1.3rem;">QuickSave</div>
    <div class="repo-item">A software that allows the user download videos from YouTube</div>
    <div>rad:z2eyxJzy2cc8ScpNiLKHNBJuJCABZ</div>
    </div>
    <div class="list-group-item">
    <div>Visibility</div>
    <div class="repo-item">public</div>
    </div>
    <div class="list-group-item">
    <div>Delegates</div><div class="repo-item">did:key:z6Mknk3AfyTddUULaiR6pF1DdEfuou4iCXaXevHqYwECiA9c</div>
    </div>
    <div class="list-group-item">
    <div>Default branch</div>
    <div><span class="repo-item">main &#8594 f756bfa2d0a1a35a063a5197132d8fcf665d4c65</span> (Wed Jul 16 16:59:43 2025)</div>
    </div>
    <div class="list-group-item">
    <div>Threshold</div>
    <div class="repo-item">1</div>
    </div>
    </div>
    
        <div class="list-group mt-3">
        <div class="list-group-item">
        <div class="mb-2" style="font-weight:bold;"><i class="fa-solid fa-book"></i> README.md</div>
        <pre style="margin:0; font-size:0.85rem; overflow-x:auto; color:#fafafa;"># QuickSave Software Libre
This program allows you to download from YouTube with the YT-DLP
dependency. It is **Free Software** and you **share it**, **modify it**,
or **improve it** under the terms of the GNU GPL V3.

[Portada](src/assets/images/quick_save_portada.png)

***

## How to get started
1. The first thing you have to do is shearch for the video URL
you want to download. You must paste the URL in the space provided
and click the OK button. 
2. All available formats will then appear with a unique ID.
Paste the id in the blank space and click the download buttton.
3. Wait for it to download.

***

# How to run and compile the code
This software is written in Python
and uses the kivy and kivymd frameworks
for cross-platform development. Java17 and 
Buildozer are required for compilation.

***

## How to run
1. To create a virtual environment to host the
dependencies, run the following commmands.
```bash
python -m venv .env
```
```bash
source .env/bin/activate
```

2. To install all dependencies you must run the
following command.
```python
pip install -r requirements.txt
```
- _Note: you can use the lastest version of Python to run_
	_the program, but it is not recommended to compile it_

3. Finally, to run the program you can do:
```bash
python -d src/main.py
```

***

## How to compile the code
The first thing you must have installed to compile
the code is Java 17. It is recommended to use python 3.8 or lower,
for this you can manage your python versions with pyenv.

```bash
sudo pacman -S openjdk17  
```

Then go to the directory that has the main.py and
run the following:

```bash
buildozer init
```

A buildozer.spec file is generated
and this is where the important configurations for compiling the
program will go.

The buildozer.spec should include: 
1. The name of the app, its package and package domain.
2. Source code where the main.py live.
3. Source files to include.
4. Application versioning.
5. All dependency requirements used in the app.
6. Presplash of the application
7. The path to the app icon. 
8. Author.
9. The Python version being used.
10. kivy version to use.
11. All the permissions the app needs.

Here in order will be given what should go in each case:

# 1. The name of the app, its package and package domain
**(str) Title of your application**
title = QuickSave

**(str) Package name**
package.name = Quick

**(str) Package domain (needed for android/ios packaging)**
package.domain = org.QuickSave

# 2. Source code where the main.py live
**(str) Source code where the main.py live**
source.dir = .

# 3. Source files to include
**(list) Source files to include (let empty to include all the files)**
source.include_exts = py,png,jpg,kv,atlas,ttf,otf

# 4. Aplication versioning
**(str) Application versioning (method 1)**
version = 1.0.0

# 5. All dependency requirements used in the app
**(list) Application requirements**
**comma separated e.g. requirements = sqlite3,kivy**
requirements = python3, Cython, materialyoucolor, asynckivy, asyncgui, kivy, git+https://github.com/kivymd/KivyMD.git@master, requests, plyer, pyjnius, yt-dlp

# 6. Presplash of the application
**(str) Presplash of the application**
presplash.filename = %(source.dir)s/assets/icon/icono_quick_save.png

# 7. The path of the app icon
**(str) Icon of the application**
icon.filename = %(source.dir)s/assets/icon/icono_quick_save.png

# 8. Author
author = © Andrés Chaparro

# 9. The Python version being used.
**change the major version of python used by the app**
osx.python_version = 3

# 10. kivy version to use.
**Kivy version to use**
osx.kivy_version = 2.3.1

# 11. All the permissions the app needs.
**(list) Permissions**
**(See https://python-for-android.readthedocs.io/en/latest/buildoptions/#build-options-1 for all the supported syntaxes and properties)**
android.permissions = android.permission.INTERNET, android.permission.WRITE_EXTERNAL_STORAGE, android.permission.READ_EXTERNAL_STORAGE, android.permission.MANAGE_EXTERNAL_STORAGE, android.permission.VIBRATE 

**To compile run the command: **
```bash
buildozer -v android debug
```
**To install in the device you use adb**
```bash
adb devices
adb install bin/app.apk
```
**Or to reinstall or update**
```bash
adb -r install bin/app.apk
```









</pre>
        </div>
        </div>

</div>
</main>
</div>
</div>


</body>
</html>

