├── .gitlab-ci.yml ├── .travis.yml ├── Dockerfile ├── Dockerfile_spec.rb ├── README.md ├── docker-compose.yml ├── pyload-config ├── accounts.conf ├── files.db ├── files.version ├── plugin.conf ├── pyload.conf └── setup.lock └── run.sh /.gitlab-ci.yml: -------------------------------------------------------------------------------- 1 | image: ruby:2.3 2 | 3 | test: 4 | stage: test 5 | script: 6 | - gem install serverspec 7 | - gem install docker-api 8 | - rspec Dockerfile_spec.rb 9 | -------------------------------------------------------------------------------- /.travis.yml: -------------------------------------------------------------------------------- 1 | language: python 2 | python: 3 | - 2.7 4 | 5 | services: 6 | - docker 7 | 8 | install: 9 | - docker build -t pyload . 10 | - docker run -d -p 127.0.0.1:80:80 --name pyload pyload 11 | 12 | script: 13 | - docker ps | grep -q pyload 14 | -------------------------------------------------------------------------------- /Dockerfile: -------------------------------------------------------------------------------- 1 | FROM ubuntu:bionic 2 | MAINTAINER Patrick Oberdorf "patrick@oberdorf.net" 3 | 4 | ENV DEBIAN_FRONTEND=noninteractive 5 | 6 | RUN apt-get update && apt-get install -y python \ 7 | locales \ 8 | python-setuptools \ 9 | python-requests \ 10 | python-pycurl \ 11 | python-crypto \ 12 | python-pil \ 13 | python-pyxmpp \ 14 | python-jinja2 \ 15 | python-thrift \ 16 | python-feedparser \ 17 | python-beautifulsoup \ 18 | python-pip \ 19 | tesseract-ocr \ 20 | python-beaker \ 21 | p7zip-full \ 22 | p7zip-rar \ 23 | curl \ 24 | gocr \ 25 | python-django \ 26 | git \ 27 | rhino \ 28 | gosu \ 29 | && apt-get clean \ 30 | && rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/* \ 31 | && pip install Send2Trash 32 | 33 | # Set the locale 34 | RUN locale-gen en_US.UTF-8 35 | ENV LANG en_US.UTF-8 36 | ENV LANGUAGE en_US:en 37 | ENV LC_ALL en_US.UTF-8 38 | 39 | RUN git clone https://github.com/pyload/pyload.git /opt/pyload \ 40 | && cd /opt/pyload \ 41 | && git checkout stable \ 42 | && echo "/opt/pyload/pyload-config" > /opt/pyload/module/config/configdir 43 | 44 | ADD pyload-config/ /tmp/pyload-config 45 | ADD run.sh /run.sh 46 | RUN chmod +x /run.sh 47 | 48 | EXPOSE 8000 49 | EXPOSE 9666 50 | EXPOSE 7227 51 | VOLUME /opt/pyload/pyload-config 52 | VOLUME /opt/pyload/Downloads 53 | 54 | HEALTHCHECK CMD curl --fail http://localhost:8000/ || exit 1 55 | CMD ["/run.sh"] 56 | -------------------------------------------------------------------------------- /Dockerfile_spec.rb: -------------------------------------------------------------------------------- 1 | require "serverspec" 2 | require "docker" 3 | 4 | describe "Dockerfile" do 5 | before(:all) do 6 | if ENV['IMAGEID'] 7 | image = Docker::Image.get(ENV['IMAGEID']) 8 | else 9 | image = Docker::Image.build_from_dir('.') 10 | end 11 | 12 | set :os, family: :debian 13 | set :backend, :docker 14 | set :docker_image, image.id 15 | end 16 | 17 | describe port(8000) do 18 | it "pyload should be listening" do 19 | wait_retry 30 do 20 | should be_listening 21 | end 22 | end 23 | end 24 | 25 | end 26 | 27 | def wait_retry(time, increment = 1, elapsed_time = 0, &block) 28 | begin 29 | yield 30 | rescue Exception => e 31 | if elapsed_time >= time 32 | raise e 33 | else 34 | sleep increment 35 | wait_retry(time, increment, elapsed_time + increment, &block) 36 | end 37 | end 38 | end 39 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | PyLoad 2 | ========= 3 | [![Build Status](https://travis-ci.org/obi12341/docker-pyload.svg?branch=master)](https://travis-ci.org/obi12341/docker-pyload) 4 | 5 | **NOTICE**: If pyload is not able to update plugins, try to use `latest` tag 6 | 7 | Introduction 8 | ---- 9 | pyLoad is a fast, lightweight and full featured download manager for many One-Click-Hoster, container formats like DLC, video sites or just plain http/ftp links. It aims for low hardware requirements and platform independence to be runnable on all kind of systems (desktop pc, netbook, NAS, router). 10 | 11 | Despite its strict restriction it is packed full of features just like webinterface, captcha recognition, unrar and much more. 12 | 13 | pyLoad is divided into core and clients, to make it easily remote accessible. Currently there are a webinterface, command line interface, and a GUI written in Qt. 14 | 15 | Source [official pyload](https://pyload.net/). 16 | 17 | Install 18 | ---- 19 | Install is easy as all docker images 20 | 21 | ```sh 22 | docker pull mobilistics/pyload:latest 23 | ``` 24 | 25 | Running 26 | ---- 27 | 28 | ```sh 29 | docker run -d -P mobilistics/pyload:latest 30 | ``` 31 | 32 | Configuration 33 | ---- 34 | You can link your Downloads to your host very easy like that: 35 | 36 | ```sh 37 | docker run -d -v :/opt/pyload/Downloads -P mobilistics/pyload:latest 38 | ``` 39 | Notice to replace `````` with your directory path on the host. So if you want to store your Downloads in ```/tmp/Downloads``` then your command would look like this: 40 | 41 | ```sh 42 | docker run -d -v /tmp/Downloads:/opt/pyload/Downloads -P mobilistics/pyload:latest 43 | ``` 44 | If you want to have your configuration persistent you have to link the configuration directory outside of the container. This can happen like this: 45 | 46 | ```sh 47 | docker run -d -v :/opt/pyload/pyload-config -P mobilistics/pyload:latest 48 | ``` 49 | 50 | By default, pyload will be run as root, and will download files with uid 0 and gid 0. If you want to change this behavior, you can specify the UID and GID that will be used for the downloaded files by using ENV VARS 51 | 52 | Docker run command 53 | ----- 54 | ```sh 55 | docker \ 56 | run \ 57 | -d \ 58 | -v :/opt/pyload/Downloads \ 59 | -v :/opt/pyload/pyload-config \ 60 | -e UID= \ 61 | -e GID= \ 62 | -P \ 63 | mobilistics/pyload:latest 64 | ``` 65 | Sample compose file 66 | ----- 67 | ```yaml 68 | version: "2" 69 | services: 70 | pyload: 71 | image: mobilistics/pyload:latest 72 | container_name: pyload 73 | ports: 74 | - 8000:8000 75 | environment: 76 | - UID=1000 77 | - GID=1000 78 | volumes: 79 | - /path/to/config:/opt/pyload/pyload-config 80 | - /path/to/data:/opt/pyload/Downloads 81 | 82 | ``` 83 | 84 | 85 | Finally 86 | ---- 87 | When the container has been created you can login via the webinterface at **\:8000** with: 88 | 89 | ```sh 90 | USER=pyload 91 | PASSWORD=pyload 92 | ``` 93 | 94 | 95 | [official pyload]:http://pyload.org/ 96 | 97 | -------------------------------------------------------------------------------- /docker-compose.yml: -------------------------------------------------------------------------------- 1 | version: "2" 2 | services: 3 | pyload: 4 | image: writl/pyload:latest 5 | container_name: pyload 6 | ports: 7 | - 8000:8000 8 | - 9666:9666 9 | - 7227:7227 10 | environment: 11 | - UID=1000 12 | - GID=1000 13 | volumes: 14 | - /path/to/config:/opt/pyload/pyload-config 15 | - /path/to/data:/opt/pyload/Downloads 16 | -------------------------------------------------------------------------------- /pyload-config/accounts.conf: -------------------------------------------------------------------------------- 1 | version: 1 2 | 3 | UploadingCom: 4 | 5 | Ftp: 6 | 7 | RyushareCom: 8 | 9 | StahnuTo: 10 | 11 | UploadcCom: 12 | 13 | MegaRapidCz: 14 | 15 | BayfilesCom: 16 | 17 | NetloadIn: 18 | 19 | MovReelCom: 20 | 21 | LetitbitNet: 22 | 23 | LinestorageCom: 24 | 25 | BillionuploadsCom: 26 | 27 | JunocloudMe: 28 | 29 | TurbobitNet: 30 | 31 | HellshareCz: 32 | 33 | FilefactoryCom: 34 | 35 | RapidgatorNet: 36 | 37 | AlldebridCom: 38 | 39 | FourSharedCom: 40 | 41 | DebridItaliaCom: 42 | 43 | VidPlayNet: 44 | 45 | MyfastfileCom: 46 | 47 | SendmywayCom: 48 | 49 | RehostTo: 50 | 51 | Http: 52 | 53 | RapidfileshareNet: 54 | 55 | File4safeCom: 56 | 57 | HundredEightyUploadCom: 58 | 59 | FilejungleCom: 60 | 61 | FreakshareCom: 62 | 63 | PremiumizeMe: 64 | 65 | SimplyPremiumCom: 66 | 67 | LomafileCom: 68 | 69 | UptoboxCom: 70 | 71 | UnrestrictLi: 72 | 73 | FastixRu: 74 | 75 | ZeveraCom: 76 | 77 | SecureUploadEu: 78 | 79 | FilerioCom: 80 | 81 | UploadheroCom: 82 | 83 | FilesMailRu: 84 | 85 | NovafileCom: 86 | 87 | TusfilesNet: 88 | 89 | FileserveCom: 90 | 91 | RapidshareCom: 92 | 93 | RPNetBiz: 94 | 95 | OboomCom: 96 | 97 | XFileSharingPro: 98 | 99 | FshareVn: 100 | 101 | YibaishiwuCom: 102 | 103 | CatShareNet: 104 | 105 | PremiumTo: 106 | 107 | OverLoadMe: 108 | 109 | FilerNet: 110 | 111 | FreeWayMe: 112 | 113 | MultishareCz: 114 | 115 | RarefileNet: 116 | 117 | EasybytezCom: 118 | 119 | FilecloudIo: 120 | 121 | CramitIn: 122 | 123 | RealdebridCom: 124 | 125 | UlozTo: 126 | 127 | UploadedTo: 128 | 129 | SimplydebridCom: 130 | 131 | CzshareCom: 132 | 133 | LinksnappyCom: 134 | 135 | OneFichierCom: 136 | 137 | MegasharesCom: 138 | 139 | StreamcloudEu: 140 | 141 | MegaDebridEu: 142 | 143 | FileomCom: 144 | 145 | DepositfilesCom: 146 | 147 | EuroshareEu: 148 | 149 | FastshareCz: 150 | 151 | QuickshareCz: 152 | 153 | NosuploadCom: 154 | 155 | FileParadoxIn: 156 | 157 | HugefilesNet: 158 | 159 | BitshareCom: 160 | 161 | ShareonlineBiz: 162 | -------------------------------------------------------------------------------- /pyload-config/files.db: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/obi12341/docker-pyload/96f45a52478cb09ef2796a2f697186abcb6b4fd5/pyload-config/files.db -------------------------------------------------------------------------------- /pyload-config/files.version: -------------------------------------------------------------------------------- 1 | 4 -------------------------------------------------------------------------------- /pyload-config/plugin.conf: -------------------------------------------------------------------------------- 1 | version: 1 2 | 3 | UnrestrictLi - "UnrestrictLi": 4 | str hosterList : "Hoster list (comma separated)" = 5 | all;listed;unlisted hosterListMode : "Use for hosters (if supported)" = all 6 | int interval : "Reload interval in hours (0 to disable)" = 24 7 | bool activated : "Activated" = False 8 | bool history : "Delete History" = False 9 | bool unloadFailing : "Revert to standard download if download fails" = False 10 | 11 | WindowsPhoneToastNotify - "WindowsPhoneToastNotify": 12 | bool force : "Force even if client is connected" = False 13 | bool activated : "Activated" = False 14 | int pushTimeout : "Timeout between notifications in seconds" = 0 15 | str pushId : "pushId" = 16 | str pushUrl : "pushUrl" = 17 | 18 | ExpertDecoders - "ExpertDecoders": 19 | bool force : "Force CT even if client is connected" = False 20 | password passkey : "Access key" = 21 | bool activated : "Activated" = False 22 | 23 | MegaDebridEu - "MegaDebridEu": 24 | bool activated : "Activated" = False 25 | bool unloadFailing : "Revert to standard download if download fails" = False 26 | 27 | MergeFiles - "MergeFiles": 28 | bool activated : "Activated" = False 29 | 30 | ImageTyperz - "ImageTyperz": 31 | str username : "Username" = 32 | bool force : "Force IT even if client is connected" = False 33 | password passkey : "Password" = 34 | bool activated : "Activated" = False 35 | 36 | DeleteFinished - "DeleteFinished": 37 | bool deloffline : "Delete packages with offline links" = False 38 | int interval : "Delete every (hours)" = 72 39 | bool activated : "Activated" = False 40 | 41 | AlldebridCom - "AlldebridCom": 42 | str hosterList : "Hoster list (comma separated)" = 43 | all;listed;unlisted hosterListMode : "Use for hosters (if supported)" = all 44 | int interval : "Reload interval in hours (0 to disable)" = 24 45 | bool activated : "Activated" = False 46 | bool https : "Enable HTTPS" = False 47 | bool unloadFailing : "Revert to stanard download if download fails" = False 48 | 49 | DeathByCaptcha - "DeathByCaptcha": 50 | str username : "Username" = 51 | bool force : "Force DBC even if client is connected" = False 52 | password passkey : "Password" = 53 | bool activated : "Activated" = False 54 | 55 | DebridItaliaCom - "DebridItaliaCom": 56 | str hosterList : "Hoster list (comma separated)" = 57 | all;listed;unlisted hosterListMode : "Use for hosters (if supported)" = all 58 | int interval : "Reload interval in hours (0 to disable)" = 24 59 | bool activated : "Activated" = False 60 | bool unloadFailing : "Revert to standard download if download fails" = False 61 | 62 | XHamsterCom - "XHamsterCom": 63 | .mp4;.flv type : "Preferred type" = .mp4 64 | 65 | RestartFailed - "RestartFailed": 66 | int interval : "Check interval in minutes" = 90 67 | bool activated : "Activated" = False 68 | 69 | MyfastfileCom - "MyfastfileCom": 70 | str hosterList : "Hoster list (comma separated)" = 71 | all;listed;unlisted hosterListMode : "Use for hosters (if supported)" = all 72 | int interval : "Reload interval in hours (0 to disable)" = 24 73 | bool activated : "Activated" = False 74 | bool unloadFailing : "Revert to standard download if download fails" = False 75 | 76 | LinkdecrypterCom - "LinkdecrypterCom": 77 | bool activated : "Activated" = False 78 | 79 | RehostTo - "RehostTo": 80 | str hosterList : "Hoster list (comma separated)" = 81 | all;listed;unlisted hosterListMode : "Use for hosters (if supported)" = all 82 | int interval : "Reload interval in hours (0 to disable)" = 24 83 | bool activated : "Activated" = False 84 | bool unloadFailing : "Revert to stanard download if download fails" = False 85 | 86 | BypassCaptcha - "BypassCaptcha": 87 | bool force : "Force BC even if client is connected" = False 88 | password passkey : "Passkey" = 89 | bool activated : "Activated" = False 90 | 91 | ExternalScripts - "ExternalScripts": 92 | bool activated : "Activated" = True 93 | 94 | PremiumizeMe - "PremiumizeMe": 95 | str hosterList : "Hoster list (comma separated)" = 96 | all;listed;unlisted hosterListMode : "Use for hosters (if supported):" = all 97 | int interval : "Reload interval in hours (0 to disable)" = 24 98 | bool activated : "Activated" = False 99 | bool unloadFailing : "Revert to stanard download if download fails" = False 100 | 101 | LinkList - "LinkList": 102 | bool clear : "Clear Linklist after adding" = False 103 | string encoding : "File encoding (default utf-8)" = 104 | 105 | FastixRu - "FastixRu": 106 | all;listed;unlisted hosterListMode : "Use for hosters (if supported)" = all 107 | int interval : "Reload interval in hours (0 to disable)" = 24 108 | bool activated : "Activated" = False 109 | bool unloadFailing : "Revert to standard download if download fails" = False 110 | 111 | ClickAndLoad - "ClickAndLoad": 112 | bool extern : "Allow external link adding" = False 113 | bool activated : "Activated" = True 114 | 115 | EasybytezCom - "EasybytezCom": 116 | all;listed;unlisted hosterListMode : "Use for hosters (if supported)" = all 117 | bool activated : "Activated" = False 118 | str hosterList : "Hoster list (comma separated)" = 119 | 120 | DailymotionCom - "DailymotionCom": 121 | Lowest;LD 144p;LD 240p;SD 384p;HQ 480p;HD 720p;HD 1080p;Highest quality : "Quality" = Highest 122 | 123 | XMPPInterface - "XMPPInterface": 124 | bool tls : "Use TLS" = False 125 | str owners : "List of JIDs accepting commands from" = me@icq-gateway.org;some@msn-gateway.org 126 | str pw : "Password" = 127 | bool activated : "Activated" = False 128 | str jid : "Jabber ID" = user@exmaple-jabber-server.org 129 | bool info_pack : "Inform about every package finished" = True 130 | bool captcha : "Send captcha requests" = True 131 | bool info_file : "Inform about every file finished" = False 132 | 133 | DownloadScheduler - "DownloadScheduler": 134 | str timetable : "List time periods as hh:mm full or number(kB/s)" = 0:00 full, 7:00 250, 10:00 0, 17:00 150 135 | bool abort : "Abort active downloads when start period with speed 0" = False 136 | bool activated : "Activated" = False 137 | 138 | RapidshareCom - "RapidshareCom": 139 | Cogent;Deutsche Telekom;Level(3);Level(3) #2;GlobalCrossing;Level(3) #3;Teleglobe;GlobalCrossing #2;TeliaSonera #2;Teleglobe #2;TeliaSonera #3;TeliaSonera server : "Preferred Server" = None 140 | 141 | HotFolder - "HotFolder": 142 | bool activated : "Activated" = False 143 | bool keep : "Keep added containers" = True 144 | bool watch_file : "Observe link file" = False 145 | str file : "Link file" = links.txt 146 | str folder : "Folder to observe" = container 147 | 148 | XFileSharingPro - "XFileSharingPro": 149 | bool load_default : "Include built-in lists" = True 150 | Always;Always except excluded;Listed only match_crypter : "Crypter match" = Always except excluded 151 | bool activated : "Activated" = True 152 | str include_hosters : "Include hosters (comma separated)" = 153 | str exclude_crypters : "Exclude crypters (comma separated)" = 154 | str include_crypters : "Include crypters (comma separated)" = 155 | Always;Always except excluded;Listed only match_hoster : "Hoster match" = Always except excluded 156 | str exclude_hosters : "Exclude hosters (comma separated)" = 157 | 158 | Checksum - "Checksum": 159 | bool activated : "Activated" = False 160 | int wait_time : "Time to wait before each retry (seconds)" = 1 161 | fail;nothing retry_action : "What to do if all retries fail?" = fail 162 | int max_tries : "Number of retries" = 2 163 | bool check_checksum : "Check checksum? (If False only size will be verified)" = True 164 | fail;retry;nothing check_action : "What to do if check fails?" = retry 165 | 166 | VeehdCom - "VeehdCom": 167 | str replacement_char : "Filename replacement character" = _ 168 | bool filename_spaces : "Allow spaces in filename" = False 169 | 170 | ExtractArchive - "ExtractArchive": 171 | str excludefiles : "Exclude files from unpacking (seperated by ;)" = 172 | bool recursive : "Extract archives in archvies" = True 173 | bool subfolder : "Create subfolder for each package" = False 174 | bool deletearchive : "Delete archives when done" = False 175 | folder destination : "Extract files to" = 176 | bool activated : "Activated" = True 177 | bool queue : "Wait for all downloads to be finished" = True 178 | int renice : "CPU Priority" = 0 179 | file passwordfile : "password file" = archive_password.txt 180 | bool fullpath : "Extract full path" = True 181 | bool overwrite : "Overwrite files" = True 182 | 183 | MultiloadCz - "MultiloadCz": 184 | str ignoredHoster : "Ignored hoster list (bar-separated) " = 185 | str usedHoster : "Prefered hoster list (bar-separated) " = 186 | 187 | YoutubeBatch - "YoutubeBatch": 188 | bool uploads : "Grab channel unplaylisted videos" = True 189 | bool likes : "Grab user (channel) liked videos" = False 190 | bool favorites : "Grab user (channel) favorite videos" = False 191 | 192 | Xdcc - "Xdcc": 193 | str nick : "Nickname" = pyload 194 | str ident : "Ident" = pyloadident 195 | str realname : "Realname" = pyloadreal 196 | 197 | Captcha9kw - "Captcha9kw": 198 | bool force : "Force CT even if client is connected" = True 199 | int timeout : "Timeout (max. 300)" = 300 200 | int prio : "Prio 1-10 (Cost +1-10)" = 0 201 | password passkey : "API key" = 202 | int captchaperhour : "Captcha per hour (max. 9999)" = 9999 203 | bool activated : "Activated" = False 204 | bool confirm : "Confirm Captcha (Cost +6)" = False 205 | bool selfsolve : "If enabled and you have a 9kw client active only you will get your captcha to solve it (Selfsolve)" = False 206 | bool https : "Enable HTTPS" = False 207 | 208 | FreeWayMe - "FreeWayMe": 209 | str hosterList : "Hoster list (comma separated)" = 210 | all;listed;unlisted hosterListMode : "Use for hosters (if supported):" = all 211 | int interval : "Reload interval in hours (0 to disable)" = 24 212 | bool activated : "Activated" = False 213 | bool unloadFailing : "Revert to stanard download if download fails" = False 214 | 215 | IRCInterface - "IRCInterface": 216 | str ident : "Clients ident" = pyload-irc 217 | bool info_pack : "Inform about every package finished" = True 218 | bool captcha : "Send captcha requests" = True 219 | bool activated : "Activated" = False 220 | str nick : "Nickname the Client will take" = pyLoad-IRC 221 | str host : "IRC-Server Address" = Enter your server here! 222 | str owner : "Nickname the Client will accept commands from" = Enter your nick here! 223 | bool info_file : "Inform about every file finished" = False 224 | int port : "IRC-Server Port" = 6667 225 | str realname : "Realname" = pyload-irc 226 | 227 | UnSkipOnFail - "UnSkipOnFail": 228 | bool activated : "Activated" = True 229 | 230 | MultishareCz - "MultishareCz": 231 | all;listed;unlisted hosterListMode : "Use for hosters (if supported)" = all 232 | bool activated : "Activated" = False 233 | str hosterList : "Hoster list (comma separated)" = uloz.to 234 | 235 | RealdebridCom - "RealdebridCom": 236 | str hosterList : "Hoster list (comma separated)" = 237 | all;listed;unlisted hosterListMode : "Use for hosters (if supported):" = all 238 | int interval : "Reload interval in hours (0 to disable)" = 24 239 | bool activated : "Activated" = False 240 | bool https : "Enable HTTPS" = False 241 | bool unloadFailing : "Revert to stanard download if download fails" = False 242 | 243 | VeohCom - "VeohCom": 244 | Low;High;Auto quality : "Quality" = Auto 245 | 246 | LinksnappyCom - "LinksnappyCom": 247 | str hosterList : "Hoster list (comma separated)" = 248 | all;listed;unlisted hosterListMode : "Use for hosters (if supported)" = all 249 | int interval : "Reload interval in hours (0 to disable)" = 24 250 | bool activated : "Activated" = False 251 | bool unloadFailing : "Revert to standard download if download fails" = False 252 | 253 | UpdateManager - "UpdateManager": 254 | int interval : "Check interval in hours" = 8 255 | bool activated : "Activated" = True 256 | bool nodebugupdate : "Don't check for updates in debug mode" = True 257 | bool reloadplugins : "Monitor plugins for code changes (debug mode only)" = True 258 | pyLoad + plugins;plugins only mode : "Check updates for" = pyLoad + plugins 259 | 260 | MultiHome - "MultiHome": 261 | str interfaces : "Interfaces" = None 262 | bool activated : "Activated" = False 263 | 264 | SimplydebridCom - "SimplydebridCom": 265 | all;listed;unlisted hosterListMode : "Use for hosters (if supported)" = all 266 | bool activated : "Activated" = False 267 | str hosterList : "Hoster list (comma separated)" = 268 | 269 | ZeveraCom - "ZeveraCom": 270 | all;listed;unlisted hosterListMode : "Use for hosters (if supported)" = all 271 | bool activated : "Activated" = False 272 | str hosterList : "Hoster list (comma separated)" = 273 | 274 | PremiumTo - "PremiumTo": 275 | all;listed;unlisted hosterListMode : "Use for downloads from supported hosters:" = all 276 | bool activated : "Activated" = False 277 | str hosterList : "Hoster list (comma separated)" = 278 | 279 | OverLoadMe - "OverLoadMe": 280 | str hosterList : "Hoster list (comma separated)" = 281 | all;listed;unlisted hosterListMode : "Use for hosters (if supported):" = all 282 | int interval : "Reload interval in hours (0 to disable)" = 12 283 | bool activated : "Activated" = False 284 | bool https : "Enable HTTPS" = True 285 | bool unloadFailing : "Revert to standard download if download fails" = False 286 | 287 | YoutubeCom - "YoutubeCom": 288 | int fmt : "FMT/ITAG Number (5-102, 0 for auto)" = 0 289 | bool 3d : "Prefer 3D" = False 290 | bool .3gp : "Allow .3gp" = False 291 | bool .webm : "Allow .webm" = False 292 | sd;hd;fullhd;240p;360p;480p;720p;1080p;3072p quality : "Quality Setting" = hd 293 | bool .flv : "Allow .flv" = True 294 | bool .mp4 : "Allow .mp4" = True 295 | 296 | VimeoCom - "VimeoCom": 297 | Lowest;Mobile;SD;HD;Highest quality : "Quality" = Highest 298 | bool original : "Try to download the original file first" = True 299 | 300 | CaptchaBrotherhood - "CaptchaBrotherhood": 301 | str username : "Username" = 302 | bool force : "Force CT even if client is connected" = False 303 | password passkey : "Password" = 304 | bool activated : "Activated" = False 305 | 306 | EmbeduploadCom - "EmbeduploadCom": 307 | str preferedHoster : "Prefered hoster list (bar-separated) " = embedupload 308 | str ignoredHoster : "Ignored hoster list (bar-separated) " = 309 | 310 | RPNetBiz - "RPNetBiz": 311 | str hosterList : "Hoster list (comma separated)" = 312 | all;listed;unlisted hosterListMode : "Use for hosters (if supported):" = all 313 | int interval : "Reload interval in hours (0 to disable)" = 24 314 | bool activated : "Activated" = False 315 | bool unloadFailing : "Revert to stanard download if download fails" = False 316 | 317 | SimplyPremiumCom - "SimplyPremiumCom": 318 | str hosterList : "Hoster list (comma separated)" = 319 | all;listed;unlisted hosterListMode : "Use for hosters (if supported)" = all 320 | int interval : "Reload interval in hours (0 to disable)" = 24 321 | bool activated : "Activated" = False 322 | bool unloadFailing : "Revert to standard download if download fails" = False 323 | -------------------------------------------------------------------------------- /pyload-config/pyload.conf: -------------------------------------------------------------------------------- 1 | version: 1 2 | 3 | remote - "Remote": 4 | bool nolocalauth : "No authentication on local connections" = True 5 | bool activated : "Activated" = True 6 | int port : "Port" = 7227 7 | ip listenaddr : "Adress" = 0.0.0.0 8 | 9 | log - "Log": 10 | int log_size : "Size in kb" = 100 11 | folder log_folder : "Folder" = Logs 12 | bool file_log : "File Log" = True 13 | int log_count : "Count" = 5 14 | bool log_rotate : "Log Rotate" = True 15 | 16 | permission - "Permissions": 17 | str group : "Groupname" = users 18 | bool change_dl : "Change Group and User of Downloads" = False 19 | bool change_file : "Change file mode of downloads" = False 20 | str user : "Username" = user 21 | str file : "Filemode for Downloads" = 0644 22 | bool change_group : "Change group of running process" = False 23 | str folder : "Folder Permission mode" = 0755 24 | bool change_user : "Change user of running process" = False 25 | 26 | general - "General": 27 | en;de;fr;it;es;nl;sv;ru;pl;cs;sr;pt_BR language : "Language" = en 28 | folder download_folder : "Download Folder" = /opt/pyload/Downloads 29 | bool checksum : "Use Checksum" = False 30 | bool folder_per_package : "Create folder for each package" = True 31 | bool debug_mode : "Debug Mode" = False 32 | int min_free_space : "Min Free Space (MB)" = 200 33 | int renice : "CPU Priority" = 0 34 | 35 | ssl - "SSL": 36 | file cert : "SSL Certificate" = ssl.crt 37 | bool activated : "Activated" = False 38 | file key : "SSL Key" = ssl.key 39 | 40 | webinterface - "Webinterface": 41 | str template : "Template" = modern 42 | bool activated : "Activated" = True 43 | str prefix : "Path Prefix" = 44 | builtin;threaded;fastcgi;lightweight server : "Server" = builtin 45 | ip host : "IP" = 0.0.0.0 46 | bool https : "Use HTTPS" = False 47 | int port : "Port" = 8000 48 | 49 | proxy - "Proxy": 50 | str username : "Username" = None 51 | bool proxy : "Use Proxy" = False 52 | str address : "Address" = "localhost" 53 | password password : "Password" = None 54 | http;socks4;socks5 type : "Protocol" = http 55 | int port : "Port" = 7070 56 | 57 | reconnect - "Reconnect": 58 | time endTime : "End" = 0:00 59 | bool activated : "Use Reconnect" = False 60 | str method : "Method" = None 61 | time startTime : "Start" = 0:00 62 | 63 | download - "Download": 64 | int max_downloads : "Max Parallel Downloads" = 3 65 | bool limit_speed : "Limit Download Speed" = False 66 | str interface : "Download interface to bind (ip or Name)" = None 67 | bool skip_existing : "Skip already existing files" = False 68 | int max_speed : "Max Download Speed in kb/s" = -1 69 | bool ipv6 : "Allow IPv6" = False 70 | int chunks : "Max connections for one download" = 3 71 | 72 | downloadTime - "Download Time": 73 | time start : "Start" = 0:00 74 | time end : "End" = 0:00 75 | -------------------------------------------------------------------------------- /pyload-config/setup.lock: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /run.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | if [ ! -f "/opt/pyload/pyload-config/setup.lock" ] 4 | then 5 | mkdir -p /opt/pyload/pyload-config 6 | chmod 777 /opt/pyload/pyload-config 7 | 8 | mv /tmp/pyload-config/* /opt/pyload/pyload-config/ 9 | fi 10 | 11 | if [ -f "/opt/pyload/pyload-config/pyload.pid" ] 12 | then 13 | rm /opt/pyload/pyload-config/pyload.pid 14 | fi 15 | 16 | [ -z "$UID" ] && UID=0 17 | [ -z "$GID" ] && GID=0 18 | 19 | # Appending a line at the end of /etc/passwd /etc/group is safer 20 | # than using adduser because if UID and GID are already present, 21 | # adduser will fail while this will work as expected. 22 | echo -e "appuser:x:${UID}:${GID}:appuser:/app:/bin/false\n" >> /etc/passwd 23 | echo -e "appgroup:x:${GID}:appuser\n" >> /etc/group 24 | 25 | chown -R appuser:appgroup /opt/pyload 26 | 27 | exec gosu appuser python /opt/pyload/pyLoadCore.py 28 | 29 | --------------------------------------------------------------------------------