yt-clipper und seefahrt
This commit is contained in:
@@ -1,12 +1,9 @@
|
|||||||
mdFiles := $(wildcard trainings.d/*.md)
|
mdFiles := $(wildcard trainings.d/*.md)
|
||||||
pdfFiles := $(patsubst trainings.d/%.md, build/trainings.d/pdf/%.pdf, $(mdFiles))
|
pdfFiles := $(patsubst trainings.d/%.md, build/trainings.d/pdf/%.pdf, $(mdFiles))
|
||||||
|
revealjsFiles := $(patsubst trainings.d/%.md, build/trainings.d/revealjs/%.html, $(mdFiles))
|
||||||
|
|
||||||
.PHONY: all
|
.PHONY: all
|
||||||
all: $(pdfFiles)
|
all: $(pdfFiles) $(revealjsFiles)
|
||||||
|
|
||||||
build/trainings.d/pdf/%.pdf: trainings.d/%.md
|
|
||||||
mkdir -p build/trainings.d/pdf
|
|
||||||
pandoc -t beamer -o $@ $<
|
|
||||||
|
|
||||||
.PHONY: installReveal3
|
.PHONY: installReveal3
|
||||||
installReveal3:
|
installReveal3:
|
||||||
@@ -14,12 +11,19 @@ installReveal3:
|
|||||||
tar -xzvf 3.9.2.tar.gz
|
tar -xzvf 3.9.2.tar.gz
|
||||||
mv reveal.js-3.9.2 reveal.js
|
mv reveal.js-3.9.2 reveal.js
|
||||||
|
|
||||||
.PHONY: testReveal
|
.PHONY: revealjs
|
||||||
testReveal:
|
revealjs: $(revealjsFiles)
|
||||||
pandoc -t revealjs -s -o revealTest.html revealTest.md -V revealjs-url=https://unpkg.com/reveal.js@3.9.2/
|
|
||||||
|
|
||||||
.PHONY: echo
|
.PHONY: echo
|
||||||
echo:
|
echo:
|
||||||
echo $(mdFiles)
|
echo $(mdFiles)
|
||||||
echo $(pdfFiles)
|
echo $(pdfFiles)
|
||||||
|
echo $(revealjsFiles)
|
||||||
|
|
||||||
|
build/trainings.d/pdf/%.pdf: trainings.d/%.md
|
||||||
|
mkdir -p build/trainings.d/pdf
|
||||||
|
pandoc -t beamer -o $@ $<
|
||||||
|
|
||||||
|
build/trainings.d/revealjs/%.html: trainings.d/%.md
|
||||||
|
mkdir -p build/trainings.d/revealjs
|
||||||
|
pandoc -t revealjs -s -o $@ $< --css css/cwsvJudo-revealjs.css -V revealjs-url=https://unpkg.com/reveal.js@3.9.2/
|
||||||
|
|||||||
44
onlineTraining/clips.json
Normal file
44
onlineTraining/clips.json
Normal file
@@ -0,0 +1,44 @@
|
|||||||
|
[
|
||||||
|
{
|
||||||
|
"source": "https://www.youtube.com/embed/6wcWZZw6RGk",
|
||||||
|
"target": "videos.d/hopserlauf.webm",
|
||||||
|
"from": "01:09.000",
|
||||||
|
"to": "01:24.833"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"source": "https://www.youtube.com/embed/6wcWZZw6RGk",
|
||||||
|
"target": "videos.d/kniehebelauf.webm",
|
||||||
|
"from": "01:24.833",
|
||||||
|
"to": "01:39.542"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"source": "https://www.youtube.com/embed/6wcWZZw6RGk",
|
||||||
|
"target": "videos.d/anfersen.webm",
|
||||||
|
"from": "01:39.542",
|
||||||
|
"to": "01:54.625"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"source": "https://www.youtube.com/embed/6wcWZZw6RGk",
|
||||||
|
"target": "videos.d/kniehebelauf.webm",
|
||||||
|
"from": "01:39.542",
|
||||||
|
"to": "01:54.625"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"source": "https://www.youtube.com/embed/6wcWZZw6RGk",
|
||||||
|
"target": "videos.d/***REMOVED***-kniebeuge.webm",
|
||||||
|
"from": "03:45.250",
|
||||||
|
"to": "04:05.875"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"source": "https://www.youtube.com/embed/6wcWZZw6RGk",
|
||||||
|
"target": "videos.d/indianer.webm",
|
||||||
|
"from": "04:36.917",
|
||||||
|
"to": "05:05.458"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"source": "https://www.youtube.com/embed/zDj1Yf4d07I",
|
||||||
|
"target": "videos.d/taiso-sumo.webm",
|
||||||
|
"from": "03.103",
|
||||||
|
"to": "20.804"
|
||||||
|
}
|
||||||
|
]
|
||||||
5
onlineTraining/css/cwsvJudo-revealjs.css
Normal file
5
onlineTraining/css/cwsvJudo-revealjs.css
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
.reveal .slides > section{
|
||||||
|
background: rgb(60, 60, 60);
|
||||||
|
background: rgba(60, 60, 60, 0.4);
|
||||||
|
}
|
||||||
|
|
||||||
16
onlineTraining/guertel.md
Normal file
16
onlineTraining/guertel.md
Normal file
@@ -0,0 +1,16 @@
|
|||||||
|
- springen über den gürtel
|
||||||
|
- varianten:
|
||||||
|
- vor und zurück
|
||||||
|
- Skifahren
|
||||||
|
- seitlich hin und her
|
||||||
|
- seitlich von einem bein aufs andere
|
||||||
|
- in der Standwaage
|
||||||
|
- hinweise:
|
||||||
|
- mit zwischenhopsern ist es ersmmal einfacher
|
||||||
|
- hockwenden über den Gürtel
|
||||||
|
- Gürtel zwischen den Händen und mit den Füßen wechselseitig des
|
||||||
|
Gürtels springen
|
||||||
|
- superman über den Gürtel
|
||||||
|
- auf einer Seite des Gürtel den Superman und den Raketen
|
||||||
|
ausweichen indem man über den Gürtel rollt und so die Seiten
|
||||||
|
wechselt
|
||||||
46
onlineTraining/revealTest.md
Normal file
46
onlineTraining/revealTest.md
Normal file
@@ -0,0 +1,46 @@
|
|||||||
|
---
|
||||||
|
title: 2021-02-10 OnlineTraining der Judoka des Chemnitzer WSV
|
||||||
|
---
|
||||||
|
|
||||||
|
# Eidechse im heißen Wüstensand
|
||||||
|
|
||||||
|
- um die Gliedmaßen abzukühlen: Rückenstrecker
|
||||||
|
- immer auf einer Seite den Arm und auf der anderen Seiten das Bein
|
||||||
|
anheben
|
||||||
|
- und Wechsel
|
||||||
|
|
||||||
|
<video src="videos.d/eidechse-om-heissen-sand.mp4" loop mute autoplay/>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
# Serengeti
|
||||||
|
|
||||||
|
# Reisevorbereitungen
|
||||||
|
|
||||||
|
## Kofferpacken
|
||||||
|
|
||||||
|
- Kniebeuge
|
||||||
|
- mitzählen
|
||||||
|
|
||||||
|
## Treppensteigen
|
||||||
|
|
||||||
|
- Wendeltreppe
|
||||||
|
- mitzählen
|
||||||
|
|
||||||
|
## Auto einräumen
|
||||||
|
|
||||||
|
- Kniebeuge
|
||||||
|
- mitzählen
|
||||||
|
|
||||||
|
## Fahrt zum Flughafen
|
||||||
|
|
||||||
|
- Luftsitzen
|
||||||
|
- 3-mal 20 s
|
||||||
|
|
||||||
|
## Koffer einladen
|
||||||
|
|
||||||
|
- Kniebeuge
|
||||||
|
- mitzählen
|
||||||
28
onlineTraining/serengeti.md
Normal file
28
onlineTraining/serengeti.md
Normal file
@@ -0,0 +1,28 @@
|
|||||||
|
# Serengeti
|
||||||
|
|
||||||
|
## Reisevorbereitungen
|
||||||
|
|
||||||
|
### Kofferpacken
|
||||||
|
|
||||||
|
- Kniebeuge
|
||||||
|
- mitzählen
|
||||||
|
|
||||||
|
### Treppensteigen
|
||||||
|
|
||||||
|
- Wendeltreppe
|
||||||
|
- mitzählen
|
||||||
|
|
||||||
|
### Auto einräumen
|
||||||
|
|
||||||
|
- Kniebeuge
|
||||||
|
- mitzählen
|
||||||
|
|
||||||
|
### Fahrt zum Flughafen
|
||||||
|
|
||||||
|
- Luftsitzen
|
||||||
|
- 3-mal 20 s
|
||||||
|
|
||||||
|
### Koffer einladen
|
||||||
|
|
||||||
|
- Kniebeuge
|
||||||
|
- mitzählen
|
||||||
54
onlineTraining/trainings.d/seefahrt.md
Normal file
54
onlineTraining/trainings.d/seefahrt.md
Normal file
@@ -0,0 +1,54 @@
|
|||||||
|
---
|
||||||
|
title: Seefahrt
|
||||||
|
---
|
||||||
|
|
||||||
|
# Was zuletzt geschah {data-background="images.d/seefahrt.d/beach-1824855.jpg"}
|
||||||
|
|
||||||
|
Wir haben Tiere beobachtet und sind auf einer Insel gelandet. Nun
|
||||||
|
stellt sich die Frage, wie geht es von hier weiter?
|
||||||
|
|
||||||
|
# Suche nach einem Schiff {data-background="images.d/seefahrt.d/beach-5960371.jpg"}
|
||||||
|
|
||||||
|
Wir laufen den Strand entlang.
|
||||||
|
|
||||||
|
# Hopserlauf {data-background-video="videos.d/hopserlauf.webm" data-background-video-loop="loop"}
|
||||||
|
|
||||||
|
- Hopserlauf
|
||||||
|
- mit den Armen mitschwenken
|
||||||
|
- 3-mal 30 sek
|
||||||
|
|
||||||
|
# Kniehebelauf {data-background-video="videos.d/kniehebelauf.webm" data-background-video-loop="loop"}
|
||||||
|
|
||||||
|
- Kniehebelauf
|
||||||
|
- Knie berühren die Hände
|
||||||
|
- 3-mal 30 sek
|
||||||
|
|
||||||
|
# Rennen
|
||||||
|
|
||||||
|
Um das wegfahrende Schiff noch zu erreichen, müssen wir
|
||||||
|
hinterherrennen.
|
||||||
|
|
||||||
|
Wir brauchen den Obi (Gürtel).
|
||||||
|
|
||||||
|
Beide Übungen 3-mal 30 s.
|
||||||
|
|
||||||
|
# Kniehebelauf{data-background-video="videos.d/kniehebelauf.webm" data-background-video-loop="loop"}
|
||||||
|
|
||||||
|
- im Gürtelkreis wird's anspruchsvoller
|
||||||
|
- je kleiner der Gürtelkreis, desto anspruchsvoller
|
||||||
|
|
||||||
|
# Hopserlauf{data-background-video="videos.d/hopserlauf.webm" data-background-video-loop="loop"}
|
||||||
|
|
||||||
|
|
||||||
|
# Gürtellauf{data-background-video="videos.d/gürtellauf.webm" data-background-video-loop="loop"}
|
||||||
|
|
||||||
|
- geht auch am Ort statt entlang des Gürtels
|
||||||
|
|
||||||
|
# Schwimmen
|
||||||
|
|
||||||
|
Leider zu spät!
|
||||||
|
|
||||||
|
## Flaschenkreisel{data-background-video="videos.d/flaschenkreisel.webm" data-background-video-loop="loop"}
|
||||||
|
|
||||||
|
## Handtuchzug {data-background-video="videos.d/handtuchzug.webm" data-background-video-loop="loop"}
|
||||||
|
|
||||||
68
onlineTraining/yt-clipper.py
Executable file
68
onlineTraining/yt-clipper.py
Executable file
@@ -0,0 +1,68 @@
|
|||||||
|
#! /usr/bin/env python3
|
||||||
|
|
||||||
|
import youtube_dl
|
||||||
|
import json
|
||||||
|
import ffmpeg
|
||||||
|
import subprocess
|
||||||
|
import glob
|
||||||
|
|
||||||
|
jsonFileName = "clips.json"
|
||||||
|
|
||||||
|
clipDict = {}
|
||||||
|
with open(jsonFileName) as jf:
|
||||||
|
clipDict = json.load(jf)
|
||||||
|
|
||||||
|
ydl_opts = {"outtmpl": "%(id)s"}
|
||||||
|
|
||||||
|
for clip in clipDict:
|
||||||
|
infoDict = None
|
||||||
|
with youtube_dl.YoutubeDL(ydl_opts) as ydl:
|
||||||
|
infoDict = ydl.extract_info(clip['source'], download=False)
|
||||||
|
ydl.download([clip['source']])
|
||||||
|
|
||||||
|
if infoDict is not None:
|
||||||
|
stream = ffmpeg.input(
|
||||||
|
# @todo This is a very bad hack because the outtmpl options doesn't seem to be working if the file gets reencoded
|
||||||
|
glob.glob(infoDict['id']+"*")[0],
|
||||||
|
ss=clip['from'],
|
||||||
|
to=clip['to'],
|
||||||
|
)
|
||||||
|
stream = ffmpeg.filter(stream, "scale", height="480", width="-2" )
|
||||||
|
stream = ffmpeg.output(stream,
|
||||||
|
clip['target'],
|
||||||
|
vcodec="vp9",
|
||||||
|
**{
|
||||||
|
"an":None, "y":None,
|
||||||
|
"pass":"1",
|
||||||
|
"b:v":"512k", "minrate":"375k", "maxrate":"1088k",
|
||||||
|
"quality":"good",
|
||||||
|
}
|
||||||
|
)
|
||||||
|
try:
|
||||||
|
ffmpeg.run(stream)
|
||||||
|
except:
|
||||||
|
print(infoDict)
|
||||||
|
|
||||||
|
stream = ffmpeg.input(
|
||||||
|
glob.glob(infoDict['id']+"*")[0],
|
||||||
|
ss=clip['from'],
|
||||||
|
to=clip['to'],
|
||||||
|
)
|
||||||
|
stream = ffmpeg.filter(stream, "scale", height="480", width="-2" )
|
||||||
|
stream = ffmpeg.output(stream,
|
||||||
|
clip['target'],
|
||||||
|
vcodec="vp9",
|
||||||
|
**{
|
||||||
|
"an":None, "y":None,
|
||||||
|
"pass":"2",
|
||||||
|
"b:v":"512k", "minrate":"375k", "maxrate":"1088k",
|
||||||
|
"quality":"good",
|
||||||
|
}
|
||||||
|
)
|
||||||
|
try:
|
||||||
|
ffmpeg.run(stream)
|
||||||
|
except:
|
||||||
|
print(infoDict)
|
||||||
|
|
||||||
|
|
||||||
|
#640x480p @ 24,25,30 512 (LQ), 750 (MQ) 256 (LQ) 375 (MQ) 742 (LQ) 1088 (MQ)
|
||||||
Reference in New Issue
Block a user