लगातार टेक्स्ट से यूट्यूब यूआरएल निकालने के लिए रेगुलर एक्सप्रेशन ग्रेप मेमो, और फिर yt-dlp का उपयोग
शुभ संध्या, मैं अक्षम हूँ।
जब आप मास्टोडॉन पोस्ट्स को डंप करते हैं, तो यह ऐसा दिखता है।
/\u003e\u003ca href=\"https://youtube.com/watch?v=jL4NZ913v8E\u0026amp;feature=share\" target=\"_blank\" rel=\"nofollow noopener noreferrer\"\u003e\u003cspan class=\"invisible\"\u003ehttps://\u003c/span\u003e\u003cspan class=\"ellipsis\"
इस लगातार स्ट्रिंग में से, मैं केवल YouTube URL निकालना चाहता हूँ।
grep -oP ‘youtube.com\/watch\?v=…………’ outbox.json > mstv.txt
grep -oP ‘youtube.com\/shorts\/…………’ outbox.json > mstv2.txt
फिलहाल, 'www' के साथ और बिना अंतर करना मुश्किल है, इसलिए मैं केवल 'youtube.com' से आगे का मिलान करूँगा, और बाद में उसे बदल दूँगा।
youtube.com/watch?v=RIqxyO3S8pc
youtube.com/watch?v=RIqxyO3S8p\
youtube.com/watch?v=RIqxyO3S8pc
youtube.com/watch?v=RIqxyO3S8p\
youtube.com/watch?v=W7G-QtbTWgs
youtube.com/watch?v=W7G-QtbTWg\
youtube.com/watch?v=W7G-QtbTWgs
youtube.com/watch?v=W7G-QtbTWg\
मैंने अभी तक बारीकी से नहीं देखा है, लेकिन किसी कारण से, कुछ में एक अक्षर कटा हुआ है और एक '\' डाला गया है, इसलिए मैं उन्हें sed -i से हटा दूँगा।
sed -i ‘s/\\//g’ mstv.txt
youtube.com/watch?v=RIqxyO3S8pc
youtube.com/watch?v=RIqxyO3S8p
youtube.com/watch?v=RIqxyO3S8pc
youtube.com/watch?v=RIqxyO3S8p
youtube.com/watch?v=W7G-QtbTWgs
youtube.com/watch?v=W7G-QtbTWg
youtube.com/watch?v=W7G-QtbTWgs
youtube.com/watch?v=W7G-QtbTWg
चूंकि यह ऐसा दिखता है, तो आइए सही URL के अक्षरों की गणना करने का प्रयास करें।
echo “youtube.com/watch?v=g5HQFrSk4OA” | wc -c
32
यह 32 वर्ण लंबा लगता है।
इसलिए, मैं केवल 32 वर्णों वाले को निकालूँगा।
grep -oP ‘^.{32}$’ mstv.txt > mstvtmp.txt
यह ऐसा लिखा गया है जैसे यह सफल रहा, लेकिन जब मैंने दोबारा जाँच की, तो यह काम नहीं किया। जब मैंने 32 को 31 में बदला तो यह काम कर गया। ऐसा क्यों है? कृपया कोई मुझे बताए।
grep -oP ‘^.{31}$’ mstv.txt > mstvtmp.txt
youtube.com/watch?v=g5HQFrSk4OA
youtube.com/watch?v=g5HQFrSk4OA
youtube.com/watch?v=RIqxyO3S8pc
youtube.com/watch?v=RIqxyO3S8pc
चूंकि यह इस तरह से दोहराया जाता है...।
uniq से डुप्लिकेट लाइनों को हटाएँ।
uniq mstvtmp.txt > newmstv.txt
बस मामले में, मैं गैर-डुप्लिकेट वाले ढूँढूँगा और उन्हें जोड़ूँगा।
uniq -u mstvtmp.txt >> newmstv.txt
youtube.com/watch?v=jL4NZ913v8E
youtube.com/watch?v=g5HQFrSk4OA
youtube.com/watch?v=RIqxyO3S8pc
youtube.com/watch?v=W7G-QtbTWgs
youtube.com/watch?v=DRVp_cmW3Nw
ठीक है।
तो, मैं yt-dlp से डाउनलोड करने का प्रयास करूँगा।
इस बार, मैं इसे MP4 प्रारूप में सहेजूँगा।
sed -i ‘s|youtube|yt-dlp -o “/media/ncp/yt/n/%(title)s” -f “bv[ext=mp4]+ba[ext=m4a]” --merge-output-format mp4 https://www.youtube|g’ newmstv.txt
उपरोक्त बिंदु पर, मैं इसे 'www' वाले URL से बदल रहा हूँ।
कुछ लोग कह सकते हैं, 'खोज स्ट्रिंग के लिए पंक्ति की शुरुआत में '^' का उपयोग क्यों नहीं करते!', लेकिन व्यक्तिगत रूप से, मुझे यह तरीका पसंद है क्योंकि बीच से एक स्ट्रिंग से बदलना उच्च प्रतिलिपि प्रस्तुत करने योग्यता रखता है।
साथ ही, चूंकि '/' शामिल है, मैं sed के साथ सीमांकन के लिए '|' का उपयोग कर रहा हूँ। हालांकि, यह '|' होना ज़रूरी नहीं है।
और फिर, आइए नाम को '.sh' प्रारूप में बदलें।
mv newmstv.txt ytdl.sh
vi ytdl.sh
फिर, #!/bin/bash जोड़ें।
आइए निष्पादन अनुमति दें।
chmod +x ./ytdl.sh
(यहाँ, वह आदमी जिसने अचानक सोचा 'मुझे इसे './' के साथ करना चाहिए' और अब ऐसा करता है। (इसके बिना भी कोई फर्क नहीं पड़ता, लेकिन) यदि आप इसे शामिल नहीं करते हैं, तो आप एक आदमी के रूप में अयोग्य हैं।)
उसके बाद, बस इसे निष्पादित करें, और यह ठीक है।
वैसे, grep के प्रारंभिक चरण में URL स्ट्रिंग को पूरी तरह से निकालने का एक तरीका ज़रूर होगा। मैं अभी भी बहुत नौसिखिया हूँ, इसलिए कृपया मुझे क्षमा करें। मैंने अभी तक यह भी नहीं देखा है कि ऐसा क्यों है, इसलिए मुझे लगता है कि मैं चीजों को घुमा-फिरा कर कर रहा हूँ, लेकिन यह विभिन्न कमांड टाइप करके मज़े करने का एक सत्र है।
समाप्त।