====== Saving Audio/Video/Photo Streams ======
===== streamrip =====
https://pypi.org/project/streamrip/
https://github.com/nathom/streamrip
{{:howto:pasted:20231106-230922.png?600}}
pip3 install streamrip --upgrade
on Mint22 with pipx:
pipx install streamrip
# or
pipx upgrade streamrip
# or for development version
pipx install git+https://github.com/nathom/streamrip.git@dev
config in folder ~/.config/streamrip will not be removed when uninstalling through pipx
===== deemix =====
CLI
https://pypi.org/project/deemix/
https://www.reddit.com/r/deemix/
Python server with web interface:
https://gitlab.com/RemixDev/deemix-webui
https://gitlab.com/RemixDev/deemix-gui/-/tree/main
Standalone GUI, Server or one-file Server for Linux/Win/Mac x86:
https://download.deemix.app/0:/
Note: all of the above require an arl = arl cookie after logging into (free) deezer account. i.e. F12 in Firefox, storage, cookies, arl, then copy the content. The cookie is valid for 3 months.
Entering the arl cookie in the web interface stores it per client. Storing it in ~/.config/deemix/.arl and using --serverwide-arl flag can use the same for all clients.
Linux install/update of server with static libraries:
#!/bin/bash
echo "Downloading latest version..."
wget https://download.deemix.app/server/linux-x64-latest
if [ -f "linux-x64-latest" ];
then
echo "Backing up old version..."
sudo rm -rf /opt/deemix-server-old
sudo mv /opt/deemix-server /opt/deemix-server-old
sudo mkdir /opt/deemix-server
sudo mv linux-x64-latest /opt/deemix-server/deemix-server
sudo chmod 755 /opt/deemix-server/deemix-server
echo "Restarting deemix server..."
systemctl --user restart deemix
echo "Done!"
else
echo "Download failed, not updating!"
fi
Linux user systemd service for server if extracted to /opt/deemix-server/:
mkdir -p .config/systemd/user/
vi .config/systemd/user/deemix.service
[Unit]
Description=Deemix Server
[Service]
ExecStart=/opt/deemix-server/deemix-server --host 0.0.0.0 --serverwide-arl
Restart=always
RestartSec=10
[Install]
WantedBy=default.target
systemctl --user enable deemix
===== d-fi =====
Console application Linux/Mac/Windows:
https://notabug.org/sayem314/d-fi
https://github.com/d-fi/releases/releases
{{:howto:pasted:20201114-134947.png}}
Dependency may be required:
apt-get install lib64stdc++6
Download/update bash script:
#!/bin/bash
get_latest_release() {
curl --silent "https://api.github.com/repos/$1/releases/latest" | grep '"tag_name":' | sed -E 's/.*"([^"]+)".*/\1/'
}
ver=$(get_latest_release "d-fi/releases")
cd /tmp
wget https://github.com/d-fi/releases/releases/download/$ver/d-fi-linux.zip
unzip d-fi-linux.zip
rm d-fi-linux.zip
mv d-fi ~/Downloads
Works with Deezer Album,Songs and Artists, not Podcasts.
===== deemon =====
Automatically monitor and/or download new releases of artists.
https://github.com/digitalec/deemon
===== yt-dl / youtube-dl =====
Youtube Download (lots of supported sites: https://yt-dl.org/supportedsites.html )
https://yt-dl.org/
https://github.com/ytdl-org/youtube-dl
Works with youtube, soundcloud and many more
Install/upgrade not via apt or wget/curl but using:
sudo -H pip install --upgrade youtube-dl
Fixes to individual extractors not in official release yet can be applied as in the following example:
wget https://raw.githubusercontent.com/ytdl-org/youtube-dl/d42b7b6c5e927a8e4e82be96a551b5054e445974/youtube_dl/extractor/redtube.py
sudo mv /usr/local/lib/python3.8/dist-packages/youtube_dl/extractor/redtube.py /usr/local/lib/python3.8/dist-packages/youtube_dl/extractor/redtube.py_backup
sudo mv redtube.py /usr/local/lib/python3.8/dist-packages/youtube_dl/extractor/redtube.py
Workaround/Tip: per-site configuration files
https://github.com/ytdl-org/youtube-dl/issues/29523
Version 2021.12.17 requires the following youtube patch as of February 2023:
https://github.com/ytdl-org/youtube-dl/issues/31530#issuecomment-1433470254
Change youtube.py
(Debian package /usr/lib/python3/dist-packages/youtube_dl/extractor/youtube.py)
(PIP install /usr/local/lib/python3.8/dist-packages/youtube_dl/extractor/youtube.py)
change:
'uploader_id': self._search_regex(r'/(?:channel|user)/([^/?]+)', owner_profile_url, 'uploader id') if owner_profile_url else None,
to:
'uploader_id': self._search_regex(r'/(?:channel/|user/|@)([^/?]+)', owner_profile_url, 'uploader id', default=None),
===== mediasave Chrome =====
Mediasave Browser addon (Chrome)
https://mediasave.ru/en/
https://chrome.google.com/webstore/detail/mediasave-download-music/hfgbpkkdodfihabamnkhoaeamkdhnoec
{{:howto:pasted:20201114-135203.png}}
Works with unprotected media
===== Media Download Helper Firefox =====
Media Download Helper (Firefox)
https://addons.mozilla.org/en-US/firefox/addon/media-download-helper/
{{:howto:pasted:20201114-135630.png}}
Uses external service to record the stream. No Filenames/ID3tags preserved!
===== Instagram downloader =====
https://github.com/instaloader/instaloader
===== JDownloader =====
https://jdownloader.org/download/index
===== Saving DRM streams =====
https://forum.videohelp.com/threads/415503-%5Brelease%5D-AllHellGui
https://github.com/vinefeeder/HellYes
mkdir hellyes6
cd hellyes6
wget https://files.videohelp.com/u/301890/hellyes6.zip
unzip hellyes6.zip
rm hellyes6.zip
cd HellYesGui
python -m venv venv
venv/bin/pip install -r requirements.txt
download the following 4 and copy binaries to any directory in the path, e.g. to ~/.local/bin
# uses N_m3u8DL-RE, ffmpeg, mkvmerge and mp4decrypt
# see https://github.com/nilaoda/N_m3u8DL-RE
# see https://www.videohelp.com/software/ffmpeg
# see https://www.bento4.com/downloads/
# see https://www.videohelp.com/software/MKVToolNix
Start it using the venv python interpreter:
venv/bin/python allhell3gui.py
Usage as following:
* open debug console in browser (F12) and open network tab
* add regexp:widevine|acquire|license|mpd to the search
* open https://www.channel4.com/ or other desired video page and play the video
* copy the found GET mpd entry and paste into the MPD URL field
* copy the found POST entry as cURL and paste into the cURL of License Request field
* add a video name
* press get Keys
* press download video
====== Screen Recording ======
===== SimpleScreenRecorder =====
sudo apt-get install simplescreenrecorder
====== Video Editing ======
===== OpenShot =====
Stable PPA (Contains only official releases)
sudo add-apt-repository ppa:openshot.developers/ppa
sudo apt update
sudo apt install openshot-qt python3-openshot
sudo apt-get install openshot
===== LosslessCut =====
https://github.com/mifi/lossless-cut
#!/bin/bash
if [ "$LOGNAME" != "root" ]
then
echo "LosslessCut updater needs to be run as root!"
exit
fi
#get latest LosslessCut version number
latest_web=$(curl https://api.github.com/repos/mifi/lossless-cut/releases/latest -s|sed -n 's/"tag_name": "v\([0-9]\.[0-9]*\.[0-9]*\)",/\1/p'| sed -e 's/^[[:space:]]*//')
#convert version numbers to integers for comparison
web=$(echo "$latest_web" | sed 's/\.//g')
if [ -f /opt/losslesscut/version.txt ];
then
current_ver=$(cat /opt/losslesscut/version.txt)
#convert version numbers to integers for comparison
cur=$(echo "$current_ver" | sed 's/\.//g')
fi
if [[ "$cur" == "" ]];
then
cur=0
fi
#download and install only if web version greater than current version
#if main web version doesn't exist, then install new main version
if [[ ${web:0:8} -gt ${cur:0:8} ]];
then
echo "Current LosslessCut version $current_ver, upgrading to version $latest_web"
if [ ! -d /opt/losslesscut ];
then
mkdir /opt/losslesscut
fi
cd /opt/losslesscut
if [ -f LosslessCut-linux-x86_64.AppImage ];
then
mv LosslessCut-linux-x86_64.AppImage LosslessCut-linux-x86_64.AppImage.old
fi
wget "https://github.com/mifi/lossless-cut/releases/download/v$latest_web/LosslessCut-linux-x86_64.AppImage"
chmod 755 /opt/losslesscut/LosslessCut-linux-x86_64.AppImage
echo "$latest_web" > /opt/losslesscut/version.txt
if [ ! -f /usr/share/applications/losslesscut.desktop ];
then
wget https://github.com/mifi/lossless-cut/raw/master/src/icon.svg
cat >> /usr/share/applications/losslesscut.desktop <