All Projects → paljsingh → impartus-downloader

paljsingh / impartus-downloader

Licence: GPL-3.0 license
Download Impartus lectures, convert to mkv for offline viewing.

Programming Languages

python
139335 projects - #7 most used programming language

Projects that are alternatives of or similar to impartus-downloader

lecture-security engineering
Slide decks and sample codes for a lecture of "Security Engineering", which are composed in terms of how to choose and deploy appropriate standardization security technologies in information systems.
Stars: ✭ 17 (-10.53%)
Mutual labels:  lecture, lecture-slides
site-audit-seo
Web service and CLI tool for SEO site audit: crawl site, lighthouse all pages, view public reports in browser. Also output to console, json, csv, xlsx, Google Drive.
Stars: ✭ 91 (+378.95%)
Mutual labels:  scraper
copycat
A PHP Scraping Class
Stars: ✭ 70 (+268.42%)
Mutual labels:  scraper
ScrapeM
A monadic web scraping library
Stars: ✭ 17 (-10.53%)
Mutual labels:  scraper
oge
Page metadata as a service
Stars: ✭ 22 (+15.79%)
Mutual labels:  scraper
MangaReaderScraper
Search and download mangas from the command line
Stars: ✭ 23 (+21.05%)
Mutual labels:  scraper
youtube
Create a ZIM file from a Youtube channel/username/playlist
Stars: ✭ 25 (+31.58%)
Mutual labels:  scraper
stock-market-scraper
Scraps historical stock market data from Yahoo Finance (https://finance.yahoo.com/)
Stars: ✭ 110 (+478.95%)
Mutual labels:  scraper
google-this
🔎 A simple yet powerful module to retrieve organic search results and much more from Google.
Stars: ✭ 88 (+363.16%)
Mutual labels:  scraper
VK-Scraper
Scrapes VK user's photos
Stars: ✭ 42 (+121.05%)
Mutual labels:  scraper
scraped-tvtime-api
A free TVTime API based on scraping TVTime website. No API key required
Stars: ✭ 23 (+21.05%)
Mutual labels:  scraper
angel.co-companies-list-scraping
No description or website provided.
Stars: ✭ 54 (+184.21%)
Mutual labels:  scraper
scraper
A simple web scraper built around the JavaFX WebEngine
Stars: ✭ 13 (-31.58%)
Mutual labels:  scraper
Data-Science-Resources
List 📋 of Books📚, Courses 💻 for Data Science 📊
Stars: ✭ 18 (-5.26%)
Mutual labels:  lecture
InstagramLocationScraper
No description or website provided.
Stars: ✭ 13 (-31.58%)
Mutual labels:  scraper
go-jd
京东App自动登录,在线商品自动下单
Stars: ✭ 158 (+731.58%)
Mutual labels:  scraper
diosts
A Go scraper that validates security.txt files and outputs them in the disclose.io JSON format.
Stars: ✭ 18 (-5.26%)
Mutual labels:  scraper
wget-lua
Wget-AT is a modern Wget with Lua hooks, Zstandard (+dictionary) WARC compression and URL-agnostic deduplication.
Stars: ✭ 52 (+173.68%)
Mutual labels:  scraper
OLX Scraper
📻 An OLX Scraper using Scrapy + MongoDB. It Scrapes recent ads posted regarding requested product and dumps to NOSQL MONGODB.
Stars: ✭ 15 (-21.05%)
Mutual labels:  scraper
dotnet-core-ile-web-programlama
ASP .NET Core ile Web Programlama Ders Notları
Stars: ✭ 52 (+173.68%)
Mutual labels:  lecture

Impartus Downloader (Desktop App)

For Android version - click https://github.com/paljsingh/Impartus-Downloader-Android


Downloader for impartus streaming videos.

  • Tested on Mac OSX, Linux (ubuntu) and Windows 10.

Feature list

  • Convert impartus lectures to mkv files.
  • Regular and flipped lecture download supported.
  • Supports multi-track files. Tested with video lectures having up to 4 tracks.
  • Backpack slides download supported.
  • Lecture chats overlayed as closed captions for the video.
  • A command line interface.

UI

Videos Impartus Downloader - Video Tab

Documents Impartus Downloader - Documents Tab

Demo video

[TBA]

Prerequisites

python >= v3.7 ffmpeg >= v4.3

Installation / Run

OSX (10.14+)

# setup virtualenv (optional)
$ virtualenv venv
$ source venv/bin/activate 

# clone repo
$ git clone https://github.com/paljsingh/impartus-downloader.git
$ cd impartus-downloader

# install dependencies
$ pip3 install -r requirements.txt
$ brew install ffmpeg

# Ensure ffmpeg version is >= 4.3.0
$ ffmpeg -version 

# Run application
$ python3 App.py

Windows 10

The following steps shall work on Windows CMD prompt.

# clone repo
git.exe clone https://github.com/paljsingh/impartus-downloader.git
cd impartus-downloader

# setup virtualenv (optional, but recommended if you have Anaconda installed on the system)
pip.exe install virtualenv
virtualenv venv
call .\venv\Scripts\activate.bat

# install dependencies
pip.exe install -r requirements.txt

Download win64-gpl zip from the following link, extract and copy ffmpeg.exe to
impartus-downloader folder. The ffmpeg.exe statically bundles the dependent libs and
should be about 90 MB in size.
https://github.com/BtbN/FFmpeg-Builds/releases/download/latest/ffmpeg-master-latest-win64-gpl.zip

# Ensure ffmpeg version is >= 4.3.0
ffmpeg.exe -version 

# Run application
python.exe App.py

Linux (Ubuntu 20+)

# setup virtualenv (optional)
$ virtualenv venv
$ source venv/bin/activate 

# clone repo
$ git clone https://github.com/paljsingh/impartus-downloader.git
$ cd impartus-downloader

# install dependencies
$ pip3 install -r requirements.txt
$ sudo apt-get install ffmpeg

# Ensure ffmpeg version is >= 4.3.0
$ ffmpeg -version 

# Run application
$ python3 App.py

Command Line


export IMPARTUS_USER='user@domain'
export IMPARTUS_PASS='password'

# login to impartus
$ python3 app-cli.py login

$ export IMPARTUS_TOKEN='token.from.login-command'

# save json info of subscribed subjects under json/subjects/
$ python3 app-cli.py subjects -o json/subjects/

# save lectures info for subject-1 under json/subject-1/lectures/
$ python3 app-cli.py lectures -j json/subjects/subject-1.json -o json/subject-1/lectures/

# save backpack documents info for subject-1 under json/subject-1/documents/
$ python3 app-cli.py documents -j json/subjects/subject-1.json -o json/subject-1/documents/

# download video for subject-1 / lecture-1, save it under data/videos/
$ python3 app-cli.py download video -j json/subject-1/lectures/lecture-1.json -o data/videos/

# download lecture chats for subject-1 / lecture-1, save it under data/videos/
$ python3 app-cli.py download chat -j json/subject-1/lectures/lecture-1.json -o data/videos/

# download backpack document for subject-1 / document-1, save it under data/documents/
$ python3 app-cli.py download document -j json/subject-1/documents/document-1.json -o data/documents/

Configuration

see etc/impartus.conf

Unit Tests

FIXME:

$ python3 -m pytest -v test


Known Issues

Hard to read closed captions on white background

With VLC, you can set the background opacity value to 255.

Go to Preferences.

Select 'All' settings

Navigate to Video > Subtitle / OSD > Text renderer

Change 'Background Opacity' to 255

Save and restart VLC.

Setting background opacity in VLC

Below is a sample output of the opacity change.

Background Opacity


System theme settings not picked up on Linux

On linux, PySide2 must be installed as system-wide package to access the currently selected theme settings. A pip based installation falls back to Fusion theme, and won't pick up the run time changes in the theme settings.

Steps needed in order to use system theme settings on linux.

remove pip Pyside2 installation:

$ pip3 uninstall PySide2

also remove any system wide Pyside2 pip install

$ sudo pip3 uninstall PySide2

Qt5ct is not needed, so just ensure the current envrionment does NOT have the Qt5ct variable

$ env | grep QT_QPA_PLATFORMTHEME

The above command should show empty result.

Install PySide2 and dependent components as system wide package.

$ sudo apt-get install python3-pyside2.qtuitools python3-pyside2.qtwidgets libpyside2-py3-5.14

Ensure to use PySide2 api, in case there also exists a Qt5/Qt4 installation,

$ echo 'export QT_API=PySide2' >> ~/.bashrc 
$ source ~/.bashrc
$ python3 App.py

alternatively, one can run the app as:

$ QT_API=PySide2 python3 App.py

Ref: PySimpleGUI/PySimpleGUI#2437


Error on application launch - "No module named Crypto"

The error may appear if 'crypto' package is installed on the system. crpyto is deperecated and no longer recommended due to various security issues.
Impartus application uses 'pycryptodome' that may conflict with 'crypto' package as they both provide the functions under 'Crypto' namespace.

To resolve the issue, uninstall crypto, then reinstall pycryptodome:

$ pip3 uninstall crypto
$ pip3 uninstall pycryptodome
$ pip3 install pycryptodome


Error on application launch - "ImportError: DLL load failed: The specified procedure could not be found."

On windows, this error may appear due to incompatibility between the PySide2 and python versions. Upgrading to python version 3.7 or above should resolve the issue.

You may also need to upgrade your pip version, in case pip3 list output shows PySide2 version other than 5.15.2

$ pip3 install --upgrade pip

If you still see the issue, you may try upgrading python version, at present the following python / windows version seem to have compatibility issues with PySide2 v5.15.2

Python v3.7.3, Windows 8.1 - https://bugreports.qt.io/browse/PYSIDE-1002

Python v3.9.0, Windows PE - https://bugreports.qt.io/browse/PYSIDE-1479


Drop a mail to [email protected] in case of any issues/errors.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].