A downloader for the ISIS service of TU Berlin

Related tags

Downloaderisis_dl
Overview

isis_dl

Tests

A downloading utility for the ISIS tool of TU-Berlin.

Version 0.4

Features

  • Downloads all Material from all courses of your ISIS page.
  • Efficient and dynamic checksum computing for a very good file recognition.
  • You can whitelist / blacklist courses with a given course ID.
  • Multithreaded: A fixed number of threads can be selected at start time.
  • Compatibility: This library will run with any python interpreter that is >= 3.8.

Binary functionality:

  • Building of checksums from existing files.
  • Automatic unpacking of archives.

TL;DR

  1. Use this library instead of isia-tub. It provides a superset of features while having improved performance.
  2. Install using pip install isis_dl. For a manual installation clone this repository and pip install .
  3. For a detailed explanation of Command-Line flags please run isisdl -h.
  4. The first time you run the program you will be prompted if you want to save your password. Look at section encryption for more details.

Installation

You will need a working python3.8 interpreter or above. The script will fail for python3.7 as some new python3.8 features are used.

The recommended installation is via pip - a package manager for python. If pip is not yet installed with the python interpreter run

python3 -m ensurepip

to bootstrap pip.

pip (PyPi)

I have uploaded the repository to the Python Package index (PyPi) where one can download it with the command

pip install isis_dl

Note that you are executing arbitrary code as user. Do this at your own risk!

To run the downloader simply type

isisdl

into your favorite shell.

Please note that, if the virtual environment feature is not used, the ~/.local/bin directory must be in the PATH, otherwise the executable isisdl will not be found.

Manual

Please note that you have to be in a virtual environment in order for this to work as the installation fails otherwise.

Steps:

  • Clone this repository
  • cd isis_dl
  • pip install -e .

Developing

If you want to actively contribute to this repository you will want to install the package in editable mode along with the development requirements:

pip install -r requirements_dev.txt

This creates a symlink to the source code in the pip package location. It will be treated as if it was installed there directly.

There is no method of installation without pip - as the source code expects the module isis_dl to be installed as a package.

Benchmarks

For a comparison between isia-tub and isis_dl please see the Benchmark.md file.

Documentation on features

I am planning on moving this part of the documentation to a dedicated doc site.

File recognition

The file recognition is handled in src/isis_dl/backend/checksums.py.

The main idea is to download a small portion of the file and calculate a hash based on that.

As the requests library provides a file stream, one can only download the first n Bytes and calculate the hash. The problem with this idea is that some files have a header, which is permanently changing.

Unfortunately I don't have an idea why this is the case. In order to circumvent this problem the first portion of the file is skipped based on the file type. The lookup table is located in src/isis_dl/share/settings.py - with the variable being checksum_num_bytes.

The format is <extension>: (<#bytes to ignore>, <#bytes to read>).

This means that one can also set the number of bytes to be read for each file type. For files which store a big header ( I'm looking at you .pdf) the number of bytes to be read is quite high. For others e.g. .mp4 it is not.

Note: If the file extension is not found the default entry None is consulted.

Advantages

  • Only download 512 Bytes of every file.
  • Can verify independently of directory structure / filenames.
  • Lookup is O(1) as a HashSet is used as a datastructure.
  • Up to 255 ** 512 unique files can be saved per course using this method.

Disadvantages

  • For every file in every course x Bytes have to be downloaded.
  • Files are bound to a course.

Note that a default value of 64 suffices to

Can store your password securely

The entire encryption is handled by the src/isis_dl/backend/crypt.py.

The encryption is handled via Fernet

Fernet guarantees that a message encrypted using it cannot be manipulated or read without the key. Fernet is an implementation of symmetric (also known as “secret key”) authenticated cryptography.

The key is generated based on a password you enter and then stored securely.

TODO: This is currently untested. Please enter your password manually for the moment.

Hash Settings

Beware: If you change these settings you will not be able to recover an encrypted file without restoring the settings. I would not recommend changing them.

You may select any hashing algorithm which is supported. This is any hashes.HashAlgorithm. You may also change the number of iterations, which will increase / decrease the time it takes to encrypt / decrypt respectively.

A customizable settings file

The file is located at src/isis_dl/share/settings.py. For the most part you will want to keep the default settings, but if they don't fit your needs, you may easily change them.

Download Directory

The default download directory is ~/isis_dl_downloads. As the intended installation is via pip, there is no good "current working directory", so one cannot use that.

What can be done, however, is migrating this directory to e.g. the Desktop/ or Documents/.

Acknowledgements

isia-tub

Consider checking out the gitlab

This was the original inspiration for this library. At the time isia did not offer the functionality of uri-encoding the password which lead me to create this library. I have recently implemented this functionality into isia in order to benchmark and test both solutions.

Comparison

Downloading my entire isis directory took 22m8s with isia. This is in contrast to the 11m16s it took with isis_dl

mCoding

The structure of this project is heavily inspired by the GitHub of mCoding. Consider giving their video about automated testing a shot.

You might also like...
MMDL (Mega Music Downloader) - A tool to easily download music.
MMDL (Mega Music Downloader) - A tool to easily download music.

mmdl - Mega Music Downloader What is mmdl ❓ TLDR: MMDL is a cli app which allows you to quickly and efficiently download one or multiple songs from Yo

apkizer is a mass downloader for android applications for all available versions.

apkizer apkizer collects all available versions of an Android application from apkpure.com Purpose Sometimes mobile applications can be useful to dig

Pantheon - The fastest YouTube downloader.
Pantheon - The fastest YouTube downloader.

A Youtube downloader written in Python3, using HTTP requests and an API.

Terminal based YouTube player and downloader
Terminal based YouTube player and downloader

termitube NOTE: THIS REPOSITORY IS A FORK OF mps-youtube as mps-youtube has been unmaintained for almost a year now. Features Search and play audio/vi

Youtube playlist downloader with full metadata support
Youtube playlist downloader with full metadata support

ytrake GUI tool to embed metadata for albums on Youtube with youtube-dl. Requires youtube-dl v2021.06.06. Post-processing Album metadata: Usage ytrake

Using Youtube downloader is the fast and easy way to download and save any YouTube video.
Using Youtube downloader is the fast and easy way to download and save any YouTube video.

Youtube video downloader using Django Using Django as a backend along with pytube module to create Youtbue Video Downloader. https://yt-videos-downloa

Advance Image Downloader/Extractor (Job) is a Python-Flask web-based app, which will help the user download the any kind of Images at any date and time over the internet. These images will get downloaded as a job and then let user know that the images have been downloaded by sending them a link over an email. A prometheus exporter for torrent downloader like qbittorrent/transmission/deluge
A prometheus exporter for torrent downloader like qbittorrent/transmission/deluge

downloader-exporter A prometheus exporter for qBitorrent/Transmission/Deluge. Get metrics from multiple servers and offers them in a prometheus format

bing image downloader app used to download bulk images for a specific search term created using streamlit and bing_image_downloader python packages
bing image downloader app used to download bulk images for a specific search term created using streamlit and bing_image_downloader python packages

bing image downloader app bing image downloader app is used to download bulk images for a specific search term. bing image downloader app gets the sea

Releases(untagged-44c24ae2f0ed9de798c2)
  • untagged-44c24ae2f0ed9de798c2(Oct 23, 2021)

    Version0.2

    Version 0.2 is out! yay

    Changelog:

    • Changed download mechanism from 1 Executor per course which downloads with args.num_threads to 1 Executor which downloads everything.
    • Faster instantiation of Files
    • All files get randomly shuffled for a better utilization
    • When interrupted, will finish all remaining downloads and then exit. If prompted again will instantly exit.
    • A better status indicator
    • Moved unzipping from auto → command line argument
    • More tests!
    Source code(tar.gz)
    Source code(zip)
YouPlay is a python based tool for downloading YouTube videos through its URL

YouPlay is a python based tool for downloading YouTube videos through its URL. It is capable to download videos from YouTube playlists too and can extract the audio file only from the video. It can r

Nitin Choudhury 10 Sep 15, 2022
Persepolis Download Manager is a GUI for aria2.

Persepolis Download Manager Content About FAQ Screenshots Credits About Persepolis is a download manager & a GUI for Aria2. It's written in Python. Pe

Persepolis 5.6k Dec 31, 2022
Music and video downloader, Made with love by Bryan Herrera

Python-Mp3Mp4-Downloader Music and video downloader, Made with love by Bryan Herrera Requirements CHOCOLATELY windows command If your system does not

ርᚱ1ናተᛰ ᚻህᚥተპᚱ 104 Dec 27, 2022
A Telegram bot to download TikTok videos without any watermark.

TikTok Downloader Bot A Telegram bot to download TikTok videos without any watermark. Host on Heroku Youtube: Deployment Tutorial Demo: JayBee TikTok

Joy Biswas 184 Jan 04, 2023
Downloads data from OSM API and uploads it to the mapping sandbox.

OpenStreetMap To Sandbox This is a script to download data from OSM API and upload it to the mapping sandbox. Note that it clears all data in the sand

Ilya Zverev 5 Nov 27, 2022
Tkinter based YouTube video downloader works on pytube 11.0.2. Can download YouTube videos in 720p(HD), 144p and even only audio.

YouTube-Downloader Tkinter based YouTube video downloader works on pytube 11.0.2. Can download YouTube videos in 720p(HD), 144p and even only audio. G

Manav Grover 2 Dec 27, 2021
Ripurei is a free-to-use osu! replay downloader, that can be configured to download from any osu! server.

Ripurei Ripurei is a fully functional osu! replay downloader, fully capable of downloading from almost any osu! server. Functionality Timeline ✔️ Able

Thomas 0 Feb 11, 2022
A simple kemono.party downloader using python.

kemono-dl This is a simple kemono.party downloader. How to use Install python Download source code from releases and extract it Then install requireme

318 Dec 27, 2022
一个在新番更新后第一时间在dmhy等BT下载站自动下载的小工具.

Anime Track 一个在新番更新后第一时间自动下载的小工具. 可以根据自定义的关键字在dmhy等BT下载站在搜索结果更新时将磁力链发送至aria2实现自动下载. 基本功能包含: 将BT下载站的某个关键字的搜索结果的所有磁力链添加至ARIA2 自动更新aria2 trackers 将已添加的磁力

Sunky 24 Oct 12, 2022
YT-Spammer-Purge - Allows you easily scan for and delete scam comments using several methods

YouTube Spammer Purge What Is This? - Allows you to filter and search for spamme

4.3k Dec 31, 2022
Download clips from youtube videos with a few clicks and a GUI!

YouClip v2.0.0 Table Of Contents: What Is YouClip Installation Usage Stuff To Fix Changelog What Is YouClip? ! IMPORTANT: The source files are a total

ador 2 Oct 05, 2021
Python module to download all media from a CyberDrop gallery.

CyberDrop Downloader Intro Let's suppose you found out the Eva G (bby_gee) leak on https://cyberdrop.me/a/aWAt4TWY. You wish you could download the en

Quatrecentquatre 1 Dec 12, 2021
Youtube-music - Youtube music with python

youtube-music fzf on https://github.com/junegunn/fzf python3 ytb.py [no/yes] yes

direskyfer 0 Feb 03, 2022
Ebook downloader built using python

ebook-downloader Getting Started Open a terminal and run the following commands. git clone github.com/georgemunyoro/ebook-downloader cd ./ebook-downlo

George Munyoro 1 Oct 19, 2021
Youtube Downloader by PyTube é uma ferramenta simples com interface gráfica e escrito em python para baixar vídeos e playlists do youtube...

YouTube Downloader by PyTube O que é o YouTube Downloader by PyTube? YouTube Downloader by PyTube é um software simples para baixar vídeos no YouTube

Elizeu Barbosa Abreu 5 Jul 30, 2022
Simple avogadr.io batch downloader python script

Simple avogadr.io batch downloader python script

2 Jan 19, 2022
A python program to download one or multiple videos from YouTube.

YouTube-Video-Downloader A python program to download one or multiple videos from YouTube. Quick Start guide First Clone The Project git clone https:/

Imira Randeniya 1 Sep 11, 2022
A Udemy downloader that can download DRM protected videos and non-DRM protected videos.

Udemy Downloader with DRM support NOTE This program is WIP, the code is provided as-is and i am not held resposible for any legal repercussions result

Puyodead1 468 Dec 29, 2022
Youtube_dl_helper - A hacky python script meant to automate the process of downloading mp3 files from YouTube using youtube-dl library

youtube_dl_helper A helper program meant to automate the process of downloading mp3 files from YouTube using youtube-dl library Dependencies In order

Guilherme Bittencourt de Borba 1 Jan 04, 2022
Python script to automate youtube-dl downloads

Automated Download Tool !! Project status I am writing a new version of this program, which will solve several errors. The new version only supports G

Devil64-Dev 21 Sep 22, 2022