safaribooksonline – kopia video

Ostatnio mam możliwość nauki poprzez safaribooksonline, no ale nie zawsze jednak mam dostęp do internatu na tyle aby sobie oglądać zatem postanowiłem prześledzić sobie internet czy da się to sciągnąć jako video.

  • Założenia:
    zainstalowany python
    ściągnięty youtube-dl
    konto na safarii pozwalające oglądać

Skrycik ściąga listę video a następnie stara się stworzyć w miarę strukturę odpowiadającą strukturę nauki.

from bs4 import BeautifulSoup
import requests
import shutil
import os
import re
import subprocess

url = ‚https://learning.oreilly.com/videos/…….’ #tutaj wstawiamy link do głównego okna wybranego tytułu
domain = ‚https://learning.oreilly.com’
output_folder = ‚output’
username = ‚login’
password = ‚haslo’

req = requests.get(url)
soup = BeautifulSoup(req.text, ‚html.parser’)

lessons = soup.find_all(‚li’, class_=’toc-level-1′)
print(len(lessons))

module_name = ‚Module 0′
for lesson in lessons:
lesson_name = lesson.a.text
if lesson_name.startswith(‚Module’) and not ‚Summary’ in lesson_name:
module_name = lesson_name
for index, video in enumerate(lesson.ol.find_all(‚a’)):
video_name = str(index) + ‚ – ‚ + video.text
video_url = video.get(‚href’)
video_out = output_folder + ‚/’ + module_name + ‚/’ + video_name + ‚.mp4′
video_out = re.sub(‚[:*?”<>|]’, ”,video_out)
print („youtube-dl -u {} -p {} –output \”{}\” {}”.format(username, password, video_out, video_url))
print subprocess.Popen(„python youtube-dl -u {} -p {} –output \”{}\” {}”.format(username, password, video_out, video_url), shell=True, stdout=subprocess.PIPE).stdout.read()
else:
for index, video in enumerate(lesson.ol.find_all(‚a’)):
video_name = str(index) + ‚ – ‚ + video.text
video_url = video.get(‚href’)
video_out = output_folder + ‚/’ + module_name + ‚/’ + lesson_name + ‚/’ + video_name + ‚.mp4′
video_out = re.sub(‚[:*?”<>|]’, ”,video_out)
print („youtube-dl -u {} -p {} –output \”{}\” {}”.format(username, password, video_out, video_url))
print subprocess.Popen(„python youtube-dl -u {} -p {} –output \”{}\” {}”.format(username, password, video_out, video_url), shell=True, stdout=subprocess.PIPE).stdout.read()

Pliki: