Compare commits

..

2 commits

3 changed files with 30 additions and 27 deletions

View file

@ -31,6 +31,10 @@ USERAGENT = (
LYRICS_ROW = '.main-page>.row>.col-xs-12' LYRICS_ROW = '.main-page>.row>.col-xs-12'
safename_re = re.compile(
r'[^A-Za-z0-9А-ЯЁа-яё \'".,()\[\]&!#$@_~=*+-]'
)
session = requests.Session() session = requests.Session()
session.headers['User-Agent'] = USERAGENT session.headers['User-Agent'] = USERAGENT
@ -95,6 +99,11 @@ def input_num(msg: str, def_: int = 0) -> int:
return def_ return def_
def safename(value: str) -> str:
return safename_re.sub(' ', value)
def conv_title(file: str) -> str: def conv_title(file: str) -> str:
# Remove file path # Remove file path
@ -358,12 +367,12 @@ def tagmp3(
newdir = ( newdir = (
Path('./tagged') / Path('./tagged') /
parsed['artist'] / safename(parsed['artist']) /
parsed['album'] safename(parsed['album'])
) )
os.makedirs(newdir, exist_ok=True) os.makedirs(newdir, exist_ok=True)
newpath = newdir / ( newpath = newdir / safename(
f"{parsed['track_no']}. " + f"{parsed['track_no']}. " +
f"{parsed['title']}.mp3" f"{parsed['title']}.mp3"
) )

View file

@ -1,6 +1,6 @@
#!/usr/bin/env bash #!/usr/bin/env bash
debug=0 debug=1
watching=1 watching=1
links=() links=()
success=0 success=0
@ -30,7 +30,7 @@ ytlink () {
} }
safename () { safename () {
safe="${1//[^A-Za-z0-9А-Яа-я ().,_-]/}" safe="${1//[^A-Za-z0-9А-ЯЁа-яё ().,_-]/_}"
echo "${safe// /_}" | sed -E 's/_+/_/' echo "${safe// /_}" | sed -E 's/_+/_/'
} }
@ -43,6 +43,12 @@ bold () {
dlwith_piped () { dlwith_piped () {
bold 'Enter Piped API instance URL'
bold '(ytapi.dc09.ru is used by default)'
read -r pipedurl
pipedurl="${pipedurl:-ytapi.dc09.ru}"
pipedurl=$(echo "$pipedurl" | sed -E 's#https?://##')
bold 'Choose the type of stream: 1.audio or 2.video' bold 'Choose the type of stream: 1.audio or 2.video'
read -r stream_num read -r stream_num
if [[ $stream_num == 1 ]]; then if [[ $stream_num == 1 ]]; then
@ -56,15 +62,10 @@ dlwith_piped () {
jqexpr=".${stream}Streams|map(select(.videoOnly==false))|max_by(${maxby})" jqexpr=".${stream}Streams|map(select(.videoOnly==false))|max_by(${maxby})"
echo echo
bold 'Here is an expression for JQ utility.' bold 'Here is an expression for JQ utility'
echo 'Press Enter to leave it intact, or type another expression.' echo 'Correct it or just press Enter'
echo "$jqexpr" read -e -r -i "$jqexpr" newexpr
read -r newexpr jqexpr="${newexpr:-$jqexpr}"
if [[ $newexpr == "" ]]; then
:
else
jqexpr="$newexpr"
fi
echo echo
bold 'Started' bold 'Started'
@ -82,7 +83,7 @@ dlwith_piped () {
echo "Found YT video ID: $video_id" echo "Found YT video ID: $video_id"
echo "Requesting URL for $link" echo "Requesting URL for $link"
video_obj=$(curl -sL "https://ytapi.dc09.ru/streams/$video_id") video_obj=$(curl -sL "https://$pipedurl/streams/$video_id")
stream_obj=$(echo "$video_obj" | jq "$jqexpr") stream_obj=$(echo "$video_obj" | jq "$jqexpr")
stream_url=$(echo "$stream_obj" | jq ".url" | sed s/^\"// | sed s/\"$//) stream_url=$(echo "$stream_obj" | jq ".url" | sed s/^\"// | sed s/\"$//)
@ -135,14 +136,10 @@ dlwith_ytdlp () {
echo 'Use "b" without quotes for video and audio' echo 'Use "b" without quotes for video and audio'
echo ' "bv" to download only video' echo ' "bv" to download only video'
echo ' "ba" to download only audio' echo ' "ba" to download only audio'
echo 'details: https://github.com/yt-dlp/yt-dlp#format-selection' echo 'Defaults to "b" if an empty string is passed'
read -r format echo 'Details: https://github.com/yt-dlp/yt-dlp#format-selection'
read -e -r format
if [[ $format == "" ]]; then format="${format:-b}"
echo 'Passed an empty string,'
echo 'using "b" as default.'
format="b"
fi
echo echo
bold 'Started' bold 'Started'

View file

@ -6,10 +6,7 @@ mkdir -p ./convert
echo "Enter input files extension:" echo "Enter input files extension:"
echo "(empty string to match all)" echo "(empty string to match all)"
read -r ext_input read -r ext_input
ext_input="${ext_input:-*}"
if [[ $ext_input == "" ]]; then
ext_input="*"
fi
echo "Enter output files extension:" echo "Enter output files extension:"
echo "(must not be empty)" echo "(must not be empty)"