summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rwxr-xr-xar/.local/bin/qndl74
-rw-r--r--global/Music/.music.txt41
-rw-r--r--global/Music/.music_titles.txt37
3 files changed, 72 insertions, 80 deletions
diff --git a/ar/.local/bin/qndl b/ar/.local/bin/qndl
index fb346c1..e477e89 100755
--- a/ar/.local/bin/qndl
+++ b/ar/.local/bin/qndl
@@ -81,6 +81,10 @@ get_type() {
printf 'kill'
return 0
;;
+ -d | --delete | d | delete)
+ printf 'delete'
+ return 0
+ ;;
*)
printf '%s' "$_arg"
return 0
@@ -465,6 +469,69 @@ restore_archive() {
notify "✅ All $_sel_total job(s) queued" "tsp will process them sequentially"
}
+delete_archive() {
+ command -v fzf >/dev/null 2>&1 || die "⛔ fzf not installed" "Install fzf to use qndl -d."
+
+ _archive="${XDG_DOTFILES_DIR:-$HOME/.dotfiles}/global/Music/.music.txt"
+ _titles="${XDG_DOTFILES_DIR:-$HOME/.dotfiles}/global/Music/.music_titles.txt"
+
+ [ ! -f "$_archive" ] && die "⛔ Archive not found" "$_archive"
+
+ # fzf input: <id>\t<display>. --with-nth hides column 1, cut grabs it back.
+ if [ -f "$_titles" ]; then
+ _entries="$(awk '
+ NR==FNR {
+ tab = index($0, "\t")
+ if (tab > 0) titles[substr($0, 1, tab-1)] = substr($0, tab+1)
+ next
+ }
+ {
+ sp = index($0, " ")
+ if (sp == 0) next
+ id = substr($0, sp+1)
+ if (id == "") next
+ if (id in titles) printf "%s\t%s [%s]\n", id, titles[id], id
+ else printf "%s\t[%s]\n", id, id
+ }
+ ' "$_titles" "$_archive")"
+ else
+ _entries="$(awk '$2 != "" { printf "%s\t[%s]\n", $2, $2 }' "$_archive")"
+ fi
+
+ [ -z "$_entries" ] && die "⛔ Archive is empty" "Nothing to delete."
+
+ _selected="$(printf '%s\n' "$_entries" |
+ fzf -m \
+ --with-nth=2.. \
+ --delimiter='\t' \
+ --prompt='Delete: ' \
+ --header='TAB to mark multiple, Enter to confirm' |
+ cut -f1)"
+
+ [ -z "$_selected" ] && return 0
+
+ _ids_file="$(mktemp)"
+ printf '%s\n' "$_selected" >"$_ids_file"
+
+ # YouTube IDs have no whitespace, so default FS works for both files.
+ # Archive lines: "youtube <ID>" → drop where $2 matches.
+ # Titles lines: "<ID>\t<title>" → drop where $1 matches.
+ _new_archive="$(mktemp)"
+ awk 'NR==FNR { drop[$1]=1; next } !($2 in drop)' "$_ids_file" "$_archive" >"$_new_archive" &&
+ mv "$_new_archive" "$_archive"
+
+ if [ -f "$_titles" ]; then
+ _new_titles="$(mktemp)"
+ awk 'NR==FNR { drop[$1]=1; next } !($1 in drop)' "$_ids_file" "$_titles" >"$_new_titles" &&
+ mv "$_new_titles" "$_titles"
+ fi
+
+ _count="$(printf '%s\n' "$_selected" | grep -c .)"
+ rm -f "$_ids_file"
+
+ notify "🗑️ Removed $_count archive entry/entries" "from .music.txt and .music_titles.txt"
+}
+
# ---------------------------------------------------------------------------
# Listing & Cancellation
# ---------------------------------------------------------------------------
@@ -597,6 +664,9 @@ main() {
restore)
restore_archive
;;
+ delete)
+ delete_archive
+ ;;
list)
list_queue
;;
@@ -604,10 +674,10 @@ main() {
kill_job
;;
"")
- die "⛔ No type specified" "Provide: music, video, restore, list, or kill."
+ die "⛔ No type specified" "Provide: music, video, restore, delete, list, or kill."
;;
*)
- die "⛔ Invalid type: $_type" "Recognized types: music, video, restore, list, kill."
+ die "⛔ Invalid type: $_type" "Recognized types: music, video, restore, delete, list, kill."
;;
esac
}
diff --git a/global/Music/.music.txt b/global/Music/.music.txt
index c44ea5f..45ff8b7 100644
--- a/global/Music/.music.txt
+++ b/global/Music/.music.txt
@@ -147,7 +147,6 @@ youtube frqZJd8w2NM
youtube jdNceSXJTZA
youtube 54vxYZKanOQ
youtube ue30EjqYUqU
-youtube GtSkLxNfAVs
youtube FcfCWcZHDD8
youtube Z75rOowUTxk
youtube ZDoH5dQ58ps
@@ -478,7 +477,6 @@ youtube Uhwy8vruGhA
youtube AmagoooFlIQ
youtube zQMV0dETHaw
youtube U9-f4Mosb_A
-youtube YfB5xeC6VsE
youtube QTJIKwZS-HE
youtube 6pkmAOYJt-Q
youtube hmJCg_fet4w
@@ -493,7 +491,6 @@ youtube 4HbFFSLND3g
youtube BBj3SCImk_A
youtube lR14buHEdMY
youtube zOkIe3RcTCs
-youtube 8kQBLDR5CZM
youtube XuTIkXPCKQY
youtube -E8rHkAlHmQ
youtube sfJU0q1eG6Q
@@ -588,15 +585,12 @@ youtube VqC-3G5XW70
youtube cEGG77nmrTI
youtube MYrSpF20Scg
youtube 6ZWpq-U_ndc
-youtube 0mPXpFb0ZqY
-youtube wt2qlecXbUc
youtube agH_5lN6rqA
youtube JTgpSpmJBmc
youtube KLUKCNH9vBE
youtube lzZ9r3DK8Bc
youtube bneBE_tIWBo
youtube QLCpqdqeoII
-youtube nOxTr2OgYGE
youtube CxSK2x5pPhk
youtube TlvFo3umL1c
youtube 84cWrF3m2t0
@@ -669,7 +663,6 @@ youtube 4sdN33l2WTw
youtube gZhOfQgOJuY
youtube kFFGmNM1xJA
youtube 49vcJbRlJcI
-youtube kLmnTI-A8Qo
youtube KvZLvJc_ry8
youtube 1MGTRIIwBdo
youtube XNSmuTpzr8U
@@ -862,77 +855,43 @@ youtube sobPzRxbmwE
youtube OejyNpxR-DM
youtube vw3k_jWa-gI
youtube pRIZohFFOMo
-youtube fNYIyYAKOQ4
youtube NqLB6ub1BOw
youtube DlFXDl_ROAM
youtube Wu5FY8J6P8Q
youtube GhFudOcrfpY
youtube fhRvMJ8RAS8
-youtube wAe72CdYrLI
youtube sAPNZjPf1sc
youtube Njhy69sFriY
youtube oA9if7e8Xt0
youtube gqdQy6pyCy4
-youtube it2aBiTuwsg
youtube 6wmuFMBouyQ
youtube t8p8FF16zJs
-youtube OdFVPP_Rcos
-youtube evOsUf9en-Y
youtube rw18lXqFY-U
youtube mePF8kM6Mbk
-youtube eXLhaj9RXRw
-youtube 6RQ-bBdASvk
-youtube cUlDEVp7GIY
youtube mLwfuskNDOo
-youtube wisRmOsAW6c
-youtube gJ6Dd6Zgaxo
-youtube e5R_ox2blOY
-youtube nCJBm86zGkk
youtube yPzSRKbjnCw
-youtube g9fwsnPEf2s
youtube atz-J2stufs
-youtube D0eE8l87oyY
-youtube xIcMCjHgrs0
youtube k84UIDysZA4
-youtube DRUt7T_M9e0
-youtube 2jskTe1njXI
youtube WJvEA-Fjt70
-youtube itD2Sz9m6mU
-youtube G7WkIZCBAkc
youtube p-sHYbIwiw4
youtube xE886FlLWNA
youtube K8LbHDTuh6U
-youtube hE8LT33xcWQ
youtube cLFmvFPvtes
youtube IgywphLf1ps
youtube jF_GXtR3CPc
youtube -00pymFtgyY
youtube 93SsG6D78XI
youtube 1gJKxxthNR0
-youtube LMZ6pJsjcfg
-youtube e7GcRQ_OWUo
youtube mzq05JwIBbs
-youtube HIkoeDfam4g
youtube Ts2mpHh26WQ
-youtube oeGMVZ55DTQ
-youtube MAHptlThlKA
-youtube AisSWiKrrq0
youtube slW7O5f7uTI
youtube f0GCwaReGNM
-youtube XMGqc5_a4ZI
-youtube mFnNoNqTGEI
youtube TcFvg3zJGf8
-youtube 1NOIeX88s4w
-youtube JVt-BjU6PeQ
-youtube 7Dofmtt2Wgk
youtube BGBdzQhn2CM
youtube nD1p_H3qo_A
youtube j1J3ZUd1Nqo
-youtube Xbjzkbi4OcA
youtube A7WKmVkYLck
-youtube wxPPHgcoDqo
youtube S-WcgpvAOdI
-youtube HM0g4-6U9nc
youtube CPcQXoE62To
youtube om2MzbFNBdE
youtube PU7S55ycSoo
diff --git a/global/Music/.music_titles.txt b/global/Music/.music_titles.txt
index c76ac41..4ee9db7 100644
--- a/global/Music/.music_titles.txt
+++ b/global/Music/.music_titles.txt
@@ -147,7 +147,6 @@ frqZJd8w2NM Fly to the Sky - Sea of Love
jdNceSXJTZA Fly To The Sky - 남자답게
54vxYZKanOQ Fly to the Sky - Missing You
ue30EjqYUqU FLY TO THE SKY - You You You (너를 너를 너를)
-GtSkLxNfAVs 테이 - 테이(Tei)의 킬링보이스를 라이브로! - 닮은 사람, 사랑은 하나다, 그리움을 외치다, 사랑은 향기를 남기고, 기적 같은 이야기, 같은 베개, 순리ㅣ딩고뮤직
FcfCWcZHDD8 Kim Na Young - I Can't Help It (Prod. Jungkey) (어쩔 수가 없나 봐 (Prod. 정키))
Z75rOowUTxk Yang Da Il - Wish I could tell you (괴로워)
ZDoH5dQ58ps IU - Autumn morning (가을 아침)
@@ -476,7 +475,6 @@ Uhwy8vruGhA BOBBY - help me out o kill me not
AmagoooFlIQ Leellamarz - I Like U
zQMV0dETHaw BOBBY - moon
U9-f4Mosb_A Maroon 5 - Sunday Morning
-YfB5xeC6VsE MC MONG - Broken fan (feat.Gary, Hyorin of Sistar) (고장난 선풍기 )
QTJIKwZS-HE BOBBY - 20s 30s
6pkmAOYJt-Q BIGBANG - Café
hmJCg_fet4w G-DRAGON - 결국(Without You)
@@ -491,7 +489,6 @@ C5PMgq5uNlg Novelbright - Aitoka Koitoka
BBj3SCImk_A Miki Matsubara - Mayonaka no Door 〜 Stay with Me
lR14buHEdMY BIGBANG - My Heaven
zOkIe3RcTCs Kenshi Yonezu - LADY
-8kQBLDR5CZM 헤이즈 - 헤이즈(Heize)의 킬링벌스를 라이브로! l 비도 오고 그래서, 돌아오지마, 널 너무 모르고, Jenga, 저 별, And July, 교통정리, 헤픈 우연 등
XuTIkXPCKQY Kenshi Yonezu - Kanden
-E8rHkAlHmQ ASH ISLAND - Stay With Me
sfJU0q1eG6Q Skinny Brown - Seoul Rendezvous
@@ -586,15 +583,12 @@ VqC-3G5XW70 JAEHA - Save
cEGG77nmrTI Post Malone - Chemical
MYrSpF20Scg Leellamarz - If I got money
6ZWpq-U_ndc Halsoon - 내 플레이리스트는 온통 너였다 (Prod. Franken.)
-0mPXpFb0ZqY MC MONG - Love mash (feat.Chancellor of the channels) (사랑 범벅 )
-wt2qlecXbUc MC 몽 & 서인영 - Bubble Love
agH_5lN6rqA 크루셜스타 - come to my stu (Remix)
JTgpSpmJBmc 리쌍 - 리쌍부르쓰
KLUKCNH9vBE BOBBY - Cherry Blossom
lzZ9r3DK8Bc 프라이머리 Primary - When I fall in love
bneBE_tIWBo Crush & Pink Sweat$ - I Wanna Be Yours
QLCpqdqeoII The Weeknd - Die For You
-nOxTr2OgYGE MC MONG - The happiest time of my life Part.2
CxSK2x5pPhk Ed Sheeran - Supermarket Flowers
TlvFo3umL1c Dan + Shay & Justin Bieber - 10,000 Hours
84cWrF3m2t0 Bruno Mars - Versace on the Floor
@@ -667,7 +661,6 @@ QV8D6P-NR4c Jang Beom June - every moment with you (당신과는 천천히)
gZhOfQgOJuY OuiOui - Thinkin' bout you
kFFGmNM1xJA pH-1 - Cupid
49vcJbRlJcI CODE KUNST - FIRE WATER
-kLmnTI-A8Qo 죠지 - 죠지의 킬링보이스를 라이브로! Boat, let's go picnic, 신곡까지 / [DF Killing Voice] george 죠지 편
KvZLvJc_ry8 Keira Knightley - Like A Fool
1MGTRIIwBdo Troye Sivan - Lucky Strike
XNSmuTpzr8U G-DRAGON - Missing You
@@ -860,41 +853,24 @@ sobPzRxbmwE 스트레이 - Thing You Are (Live Demo)
OejyNpxR-DM The S6 - Vardy's on Fire - The S6 [Official Lyric Video]
vw3k_jWa-gI Yeah Yeah Yeahs - Heads Will Roll
pRIZohFFOMo Lewis Capaldi - Someone You Loved
-fNYIyYAKOQ4 소유 SOYOU, 윤도현 YOON DOHYUN, & 하현우 HA HYUNWOO - I MIss You
NqLB6ub1BOw VIVIZ - MANIAC
DlFXDl_ROAM Lady Gaga & Bruno Mars - Die With A Smile
Wu5FY8J6P8Q IU - Love wins all
GhFudOcrfpY Colde - WA-R-R
fhRvMJ8RAS8 O.WHEN - Today (오늘)
-wAe72CdYrLI 우리잠깐쉬자 - 연애 끝 - 하동연
sAPNZjPf1sc DAWN - 빛이 나는 너에게(Dear My Light)
Njhy69sFriY Maktub - 시작의 아이 ハジマリのコ (Starting With You)
oA9if7e8Xt0 TOMIOKA AI - Good bye-bye
gqdQy6pyCy4 포지션 - I LOVE YOU
-it2aBiTuwsg 화사 - 화사 - Good Goodbye | [TEXTED] HWASA | 가사 (Lyrics) | 딩고뮤직 | dingo Music
6wmuFMBouyQ 4MEN - Love Love Love (사랑 사랑 사랑)
t8p8FF16zJs Paul Kim - Beyond the sunset
-OdFVPP_Rcos Sung Si Kyung - Every moment of you
-evOsUf9en-Y Music is my life - 너의 모든 순간 - 성시경 / 가사
rw18lXqFY-U 성시경 - 선인장
mePF8kM6Mbk Sung Si Kyung - Thank You
-eXLhaj9RXRw Lim young woong - Every Moment of you (너의 모든 순간)
-6RQ-bBdASvk Sung Si-kyung - Every Moment of You
mLwfuskNDOo 성시경 - 거리에서
-wisRmOsAW6c Roy Kim - 성시경 너의 모든 순간 커버해 봄
-gJ6Dd6Zgaxo ceres - 너의 모든 순간 - 김민경
-e5R_ox2blOY Lim Ji Soo - 이윽고 내가…성시경 - ‘너의 모든 순간’ [별에서 온 그대 OST] COVER by LIM JISOO(임지수)
-nCJBm86zGkk 라이징 보이스 | RISING VOICE - 너무 좋아.. 친구들 감탄 나오게 하는 커버 '너의 모든 순간' (성시경) cover
yPzSRKbjnCw Sung Si-kyung - 넌 감동이었어
atz-J2stufs 성시경 - 광화문 연가
-D0eE8l87oyY Silence Mind - Remove Negative Thoughts & Subconscious Blockages, Meditation & Healing Music Relax Mind Body
-xIcMCjHgrs0 Pianist Cho Younghoon/HOON TO-BE - 이윽고, 너로 차오르는 마음🌤|성시경 - 너의 모든 순간/Sung Si Kyung - Every moment of you (piano cover)
k84UIDysZA4 성시경 - 잊혀지는 것들에 대하여
-DRUt7T_M9e0 PLAYGROUND AI HUB - 김동률 - 너의 모든 순간 (ai voice cover) l 원곡 - 성시경 ㅣ 이윽고내가
-2jskTe1njXI TJ Karaoke Official Youtube Channel - [TJ노래방 / 여자키] 너의모든순간(별에서온그대OST) - 성시경 / TJ Karaoke
WJvEA-Fjt70 Sung Si Kyung - 동화 (同化)
-itD2Sz9m6mU 괴정동부루스 - 순대국밥
-G7WkIZCBAkc 나만 듣기 아까운 노래 - 네 명의 가수가 말아주는 ‘이윽고~’🔥 [성시경 - 너의 모든 순간] #킬포네컷
p-sHYbIwiw4 성시경 - 다시 시작해도 될까요
xE886FlLWNA Naul - Living in the same time
K8LbHDTuh6U 김종국 - 한 사람
@@ -904,29 +880,16 @@ jF_GXtR3CPc Sung Si Kyung - For A Long Time (오랫동안)
-00pymFtgyY ChaZanBand - Eventually
93SsG6D78XI SUNG SI KYUNG - YOU ARE MY SPRING (너는 나의 봄이다)
1gJKxxthNR0 에스프레소 - 언제나 나의 곁에 있어주는 사람 있죠
-LMZ6pJsjcfg 주로로 JOORORO - 성시경의 이윽고로 유명한 너의 모든 순간 노래커버 #shorts
-e7GcRQ_OWUo Sung Si Kyung - We Were Relly Good (Duet With Lena Park) (우리 참 좋았는데 (DUET WITH 박정현))
mzq05JwIBbs Studio EIM - Open Your Eyes
-HIkoeDfam4g Kwon In Ha - 이윽고... [너의 모든 순간 - 권인하] 커버 (원곡: 성시경) 원테이크
Ts2mpHh26WQ Sung Si Kyung - Anytime anyhow
-oeGMVZ55DTQ 김찬우 Kimchanwoo - 너의 모든 순간(a.k.a 이윽고) - 성시경 cover
-MAHptlThlKA 📂901K Replay Drive📂 - [방송원본] 시경이형 샤프하던 시절, 성시경(Sung Si Kyung) - 내게 오는 길 by 플레이버튼 | KBS 2007.10.19 방송
slW7O5f7uTI Sung Si Kyung - First Time (처음)
f0GCwaReGNM 보이비, Crush, 원슈타인, 지올팍, 샘김, GRAY, 개코, 최자, & 마미손 - 놀면 뭐해?
-XMGqc5_a4ZI 다플리 - (+5key) 너의모든순간-성시경 | 이윽고 못참지 ,, | cover @da_ply
-mFnNoNqTGEI Sung Si Kyung - Become a Song (노래가 되어)
TcFvg3zJGf8 Na Yoon Kwon & D.O. - If It Were Me
-1NOIeX88s4w 린넨 (LINEN) - 이윽고 #성시경 #너의모든순간 #이윽고 #린넨 #커버곡 #노래추천 #발라드추천
-JVt-BjU6PeQ 해외선물 김지훈 전문가tv - 성시경 금지 #Shorts
-7Dofmtt2Wgk 김찬우 Kimchanwoo - 나 혼자하는 성시경 이윽고 챌린지 #성시경#이윽고#너의모든순간#커버#챌린지#shorts #challenge
BGBdzQhn2CM 김동률 - 기억의 습작
nD1p_H3qo_A Sung Si Kyung - HeeJae (희재)
j1J3ZUd1Nqo 김동률 - 취중진담
-Xbjzkbi4OcA Nature Sounds - Zen Meditation Music, Nature Sounds, Relaxing Music, Calming Music, Healing Music
A7WKmVkYLck Jeongkwon Lee - disappointment
-wxPPHgcoDqo 싱토리(Singtory) - 성시경 - 너의 모든 순간 (Cover by Singtory) #성시경 #이윽고 #발라드 #커버 #cover
S-WcgpvAOdI Hyun Ji Hoon - In Their Own Time
-HM0g4-6U9nc 쭈발라 BalladerZzu - 성시경 - 이윽고 커버 #shorts
CPcQXoE62To Yupli - 축가가 끝난 자리에서 (After the Last Song)
om2MzbFNBdE JEON DO EUL - curtain call
PU7S55ycSoo BROWN EYED SOUL - Moments Like This