diff options
| -rwxr-xr-x | ar/.local/bin/qndl | 74 | ||||
| -rw-r--r-- | global/Music/.music.txt | 41 | ||||
| -rw-r--r-- | global/Music/.music_titles.txt | 37 |
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 |
