Upload DATA.txt
Browse files
DATA.txt
ADDED
|
@@ -0,0 +1,393 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
|
| 2 |
+
|
| 3 |
+
|
| 4 |
+
(1)
|
| 5 |
+
|
| 6 |
+
!apt-get install ffmpeg -y
|
| 7 |
+
|
| 8 |
+
|
| 9 |
+
(2)
|
| 10 |
+
|
| 11 |
+
|
| 12 |
+
|
| 13 |
+
|
| 14 |
+
import os
|
| 15 |
+
import shutil
|
| 16 |
+
import zipfile
|
| 17 |
+
import subprocess
|
| 18 |
+
from google.colab import drive
|
| 19 |
+
|
| 20 |
+
# 1. گوگل ڈرائیو کو ماؤنٹ کرنا (اگر پہلے سے ماؤنٹ نہ ہو)
|
| 21 |
+
if not os.path.exists('/content/drive'):
|
| 22 |
+
drive.mount('/content/drive')
|
| 23 |
+
|
| 24 |
+
# فائنل منزل (گوگل ڈرائیو کا وہی فولڈر جہاں پہلے آڈیوز گئی ہیں)
|
| 25 |
+
destination_dir = '/content/drive/MyDrive/Piper_Project/dataset/wavs'
|
| 26 |
+
os.makedirs(destination_dir, exist_ok=True)
|
| 27 |
+
|
| 28 |
+
# بالکل نئے ناموں کے ساتھ کولیب کے لوکل فولڈرز (تاکہ پرانا لوکل ڈیٹا مکس نہ ہو)
|
| 29 |
+
extract_temp_dir = '/content/temp_extracted_new'
|
| 30 |
+
local_mix_dir = '/content/local_mixed_wavs_new'
|
| 31 |
+
|
| 32 |
+
os.makedirs(extract_temp_dir, exist_ok=True)
|
| 33 |
+
os.makedirs(local_mix_dir, exist_ok=True)
|
| 34 |
+
|
| 35 |
+
# 2. صرف آپ کا نیا گوگل ڈرائیو لنک (پرانے لنکس ختم کر دیے گئے ہیں)
|
| 36 |
+
new_file_id = '1CAFdGTOFkAruYCiH6YNHlVu9PT7UW6aB'
|
| 37 |
+
|
| 38 |
+
print("مرحلہ 1: نئی زپ فائل ڈاؤن لوڈ اور نئے لوکل فولڈر میں مکس کی جا رہی ہے...")
|
| 39 |
+
|
| 40 |
+
zip_path = '/content/new_file_batch.zip'
|
| 41 |
+
|
| 42 |
+
# نئی فائل ڈاؤن لوڈ کرنا
|
| 43 |
+
print(f"\n[+] نئی فائل ڈاؤن لوڈ ہو رہی ہے...")
|
| 44 |
+
!gdown --id {new_file_id} -O {zip_path}
|
| 45 |
+
|
| 46 |
+
if not os.path.exists(zip_path):
|
| 47 |
+
print("[!] ایرر: نئی فائل ڈاؤن لوڈ نہیں ہو سکی۔ براہ کرم لنک چیک کریں۔")
|
| 48 |
+
else:
|
| 49 |
+
print("[+] نئی فائل ان زپ ہو رہی ہے...")
|
| 50 |
+
current_extract_dir = os.path.join(extract_temp_dir, 'new_batch')
|
| 51 |
+
|
| 52 |
+
try:
|
| 53 |
+
with zipfile.ZipFile(zip_path, 'r') as zip_ref:
|
| 54 |
+
zip_ref.extractall(current_extract_dir)
|
| 55 |
+
except zipfile.BadZipFile:
|
| 56 |
+
print("[!] ایرر: ڈاؤن لوڈ کی گئی فائل درست زپ فائل نہیں ہے۔")
|
| 57 |
+
current_extract_dir = None
|
| 58 |
+
|
| 59 |
+
if current_extract_dir:
|
| 60 |
+
# 'wavs' فولڈر تلاش کر کے آڈیوز کو بالکل نئے لوکل مکس فولڈر میں ڈالنا
|
| 61 |
+
found_wavs = False
|
| 62 |
+
for root, dirs, files in os.walk(current_extract_dir):
|
| 63 |
+
if os.path.basename(root) == 'wavs':
|
| 64 |
+
found_wavs = True
|
| 65 |
+
print("[->] اس نئی فائل کے اندر بھی 'wavs' فولڈر مل گیا۔ آڈیوز کو لوکل منتقل کیا جا رہا ہے...")
|
| 66 |
+
|
| 67 |
+
for file in files:
|
| 68 |
+
if file.lower().endswith('.wav'): # صرف واو فائلیں
|
| 69 |
+
source_file_path = os.path.join(root, file)
|
| 70 |
+
mix_file_path = os.path.join(local_mix_dir, file)
|
| 71 |
+
|
| 72 |
+
# اگر فائل پہلے سے نئے لوکل فولڈر میں نہ ہو تو کاپی کریں
|
| 73 |
+
if not os.path.exists(mix_file_path):
|
| 74 |
+
shutil.copy2(source_file_path, mix_file_path)
|
| 75 |
+
break
|
| 76 |
+
|
| 77 |
+
if not found_wavs:
|
| 78 |
+
print("[!] وارننگ: اس نئی فائل کے اندر 'wavs' نام کا فولڈر نہیں ملا!")
|
| 79 |
+
|
| 80 |
+
print("\n--------------------------------------------------")
|
| 81 |
+
print("مرحلہ 2: نئی آڈیوز کو 22050 Hz میں تبدیل کر کے گوگل ڈرائیو پر پرانی آڈیوز کے ساتھ مکس کیا جا رہا ہے...")
|
| 82 |
+
print("--------------------------------------------------")
|
| 83 |
+
|
| 84 |
+
mixed_files = [f for f in os.listdir(local_mix_dir) if f.lower().endswith('.wav')]
|
| 85 |
+
total_files = len(mixed_files)
|
| 86 |
+
print(f"[+] نئے بیچ (Batch) میں کل {total_files} آڈیوز پروسیس کے لیے تیار ہیں۔")
|
| 87 |
+
|
| 88 |
+
converted_count = 0
|
| 89 |
+
skipped_count = 0
|
| 90 |
+
|
| 91 |
+
for idx, file in enumerate(mixed_files, start=1):
|
| 92 |
+
input_path = os.path.join(local_mix_dir, file)
|
| 93 |
+
output_path = os.path.join(destination_dir, file)
|
| 94 |
+
|
| 95 |
+
# اگر یہ آڈیو گوگل ڈرائیو پر پہلے سے موجود ہے تو اسے بالکل نہیں چھیڑیں گے (Safe check)
|
| 96 |
+
if os.path.exists(output_path):
|
| 97 |
+
skipped_count += 1
|
| 98 |
+
continue
|
| 99 |
+
|
| 100 |
+
# FFmpeg کے ذریعے آڈیو کو 22050 Hz اور Mono چینل پر تبدیل کر کے گوگل ڈرائیو پر بھیجنا
|
| 101 |
+
command = ['ffmpeg', '-y', '-i', input_path, '-ar', '22050', '-ac', '1', output_path]
|
| 102 |
+
|
| 103 |
+
result = subprocess.run(command, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
|
| 104 |
+
|
| 105 |
+
if result.returncode == 0:
|
| 106 |
+
converted_count += 1
|
| 107 |
+
if idx % 50 == 0 or idx == total_files: # ہر 50 آڈیوز کے بعد کولیب سکرین پر پروگریس دکھائے گا
|
| 108 |
+
print(f"[+] پروگریس: {idx}/{total_files} آڈیوز کامیابی سے ڈرائیو پر منتقل ہو گئیں...")
|
| 109 |
+
else:
|
| 110 |
+
print(f"[!] ایرر: فائل {file} کو کنورٹ کرنے میں کوئی مسئلہ آیا۔")
|
| 111 |
+
|
| 112 |
+
print(f"\n--- فائنل رپورٹ (نیا بیچ) ---")
|
| 113 |
+
print(f"✓ کامیابی سے کنورٹ ہو کر ڈرائیو پر گئیں: {converted_count}")
|
| 114 |
+
print(f"✓ ڈرائیو پر پہلے سے موجود تھیں (محفوظ رہیں/اسکپ ہوئیں): {skipped_count}")
|
| 115 |
+
print("--- مبارک ہو میرے بھائی! نئے لنک کا پورا کام بھی ترتیب سے مکمل ہو گیا ہے ---")
|
| 116 |
+
|
| 117 |
+
|
| 118 |
+
|
| 119 |
+
|
| 120 |
+
|
| 121 |
+
|
| 122 |
+
|
| 123 |
+
|
| 124 |
+
|
| 125 |
+
|
| 126 |
+
|
| 127 |
+
|
| 128 |
+
السلام علیکم میرے بھائی! کیا حال ہے اور آپ کیسے ہیں؟
|
| 129 |
+
|
| 130 |
+
یہ جو اوپر کوڈنگ دی گئی ہے، کیا یہ براہِ راست گوگل ڈرائیو میں جائے گی؟ یعنی جو گوگل ڈرائیو کا لنک آپ نے دیا ہے، اس کے ذریعے آڈیوز پہلے گوگل کولیب (Google Colab) کی لوکل اسٹوریج میں ایڈ ہوں گی اور پھر یہ سارا ڈیٹا گوگل ڈرائیو میں چلا جائے گا۔ شاید آپ کو میری بات صحیح طرح سمجھ نہ آئی ہو، میں یہ کہہ رہا ہوں کہ جہاں یہ لنک لکھا ہوا ہے:
|
| 131 |
+
|
| 132 |
+
```python
|
| 133 |
+
# 2. صرف آپ کا نیا گوگل ڈرائیو لنک (پرانے لنکس ختم کر دیے گئے ہیں)
|
| 134 |
+
new_file_id = '1CAFdGTOFkAruYCiH6YNHlVu9PT7UW6aB'
|
| 135 |
+
|
| 136 |
+
```
|
| 137 |
+
|
| 138 |
+
یہاں آپ نے گوگل ڈرائیو سے کاپی کیا ہوا اپنا لنک یا فائل آئی ڈی پیسٹ کرنی ہے۔ اب یہ کوڈ کرتا کیا ہے؟ یہ کوڈ پہلے آپ کے دیے گئے لنک سے زپ (Zip) فائل ڈاؤن لوڈ کرتا ہے، پھر اس کے اندر 'wavs' نام کا فولڈر ڈھونڈتا ہے جس میں آڈیوز ہوتی ہیں۔ یہ آڈیوز گوگل کولیب کی لوکل اسٹوریج میں آ جاتی ہیں، اور پھر ان کا سیمپل ریٹ تبدیل کیا جاتا ہے۔
|
| 139 |
+
|
| 140 |
+
```python
|
| 141 |
+
'22050'
|
| 142 |
+
|
| 143 |
+
```
|
| 144 |
+
|
| 145 |
+
یہ جو سیمپل ریٹ لکھا ہے، اسے آپ اپنی مرضی سے تبدیل کر سکتے ہیں اور اپنی پسند کا پاتھ (Path) بھی دے سکتے ہیں۔ یہ پاتھ میں نے آپ کو سمجھانے کے لیے بطور مثال لکھا ہے:
|
| 146 |
+
|
| 147 |
+
```python
|
| 148 |
+
# فائنل منزل (گوگل ڈرائیو کا وہی فولڈر جہاں پہلے آڈیوز گئی ہیں)
|
| 149 |
+
destination_dir = '/content/drive/MyDrive/Piper_Project/dataset/wavs'
|
| 150 |
+
|
| 151 |
+
```
|
| 152 |
+
|
| 153 |
+
آپ اپنی مرضی سے یہ پاتھ تبدیل کر سکتے ہیں۔ اس کوڈ کا اصل مقصد یہ ہے کہ اگر آپ کا آڈیو ڈیٹا کسی دوسری جگہ یا دوسری آئی ڈی پر موجود ہے اور آپ اسے اپنے مین جی میل اکاؤنٹ پر لانا چاہتے ہیں، تو اس کوڈ کے ذریعے وہ فائلز اوپر بتائے گئے سیمپل ریٹ میں تبدیل ہو کر خود بخود آپ کے مخصوص فولڈر میں محفوظ ہو جائیں گی۔
|
| 154 |
+
|
| 155 |
+
-------------------------------------
|
| 156 |
+
|
| 157 |
+
|
| 158 |
+
(3)
|
| 159 |
+
|
| 160 |
+
|
| 161 |
+
|
| 162 |
+
import os
|
| 163 |
+
|
| 164 |
+
# فولڈر کا راستہ
|
| 165 |
+
target_dir = '/content/U_v2-5,271/wavs'
|
| 166 |
+
|
| 167 |
+
if os.path.exists(target_dir):
|
| 168 |
+
# فولڈر کے اندر موجود صرف .wav فائلوں کی لسٹ بنانا
|
| 169 |
+
wav_files = [f for f in os.listdir(target_dir) if f.lower().endswith('.wav')]
|
| 170 |
+
total_count = len(wav_files)
|
| 171 |
+
|
| 172 |
+
print("--------------------------------------------------")
|
| 173 |
+
print(f"📁 فولڈر کا نام: {os.path.basename(target_dir)}")
|
| 174 |
+
print(f"📊 کل آڈیو فائلوں (.wav) کی تعداد: {total_count}")
|
| 175 |
+
print("--------------------------------------------------")
|
| 176 |
+
else:
|
| 177 |
+
print(f"[!] ایرر: بتایا گیا راستہ موجود نہیں ہے!\nبراہ کرم چیک کریں کہ گوگل ڈرائیو ماؤنٹ (Connect) ہے یا نہیں۔")
|
| 178 |
+
|
| 179 |
+
|
| 180 |
+
|
| 181 |
+
|
| 182 |
+
|
| 183 |
+
|
| 184 |
+
|
| 185 |
+
# فولڈر کا راستہ
|
| 186 |
+
target_dir = '/content/U_v2-5,271/wavs'
|
| 187 |
+
|
| 188 |
+
|
| 189 |
+
بھائی، اس کوڈ کے ذریعے آپ دیکھ سکتے ہیں کہ آپ کی کل کتنی آڈیوز موجود ہیں۔ اوپر دیے گئے پاتھ (Path) کو تبدیل کر کے آپ کسی بھی فولڈر میں موجود آڈیوز کی کل تعداد معلوم کر سکتے ہیں۔
|
| 190 |
+
|
| 191 |
+
|
| 192 |
+
-------
|
| 193 |
+
|
| 194 |
+
|
| 195 |
+
|
| 196 |
+
|
| 197 |
+
(A-1)
|
| 198 |
+
|
| 199 |
+
|
| 200 |
+
|
| 201 |
+
import os
|
| 202 |
+
import shutil
|
| 203 |
+
import zipfile
|
| 204 |
+
|
| 205 |
+
# 1. بالکل نئے اور صاف ستھرے لوکل فولڈرز بنانا
|
| 206 |
+
base_dir = '/content/U_v2-5,271' # فائنل زپ بننے سے پہلے کا مین فولڈر
|
| 207 |
+
wavs_destination = os.path.join(base_dir, 'wavs') # اس کے اندر wavs فولڈر
|
| 208 |
+
|
| 209 |
+
os.makedirs(wavs_destination, exist_ok=True)
|
| 210 |
+
|
| 211 |
+
extract_temp_dir = '/content/temp_extract'
|
| 212 |
+
os.makedirs(extract_temp_dir, exist_ok=True)
|
| 213 |
+
|
| 214 |
+
# 2. آڈیوز والی 3 زپ فائلوں کی IDs
|
| 215 |
+
audio_zip_ids = [
|
| 216 |
+
'17LMgGuZV8S47eEIQ8c9SVxl_ej7uRd6v', # پہلی زپ فائل
|
| 217 |
+
'1OX3I8uSxoJtR_qySsWn_WKefAoJgUMet', # دوسری زپ فائل
|
| 218 |
+
'1CAFdGTOFkAruYCiH6YNHlVu9PT7UW6aB' # تیسری زپ فائل
|
| 219 |
+
]
|
| 220 |
+
|
| 221 |
+
# 3. چوتھی اہم فائل (metadata.csv) کی ID
|
| 222 |
+
metadata_file_id = '1i0Jg0L-eWE6Qvx1gXYDddsmoXASvht9N'
|
| 223 |
+
|
| 224 |
+
print("=== پروسیس شروع ہو رہا ہے، آپ کی دی گئی ترتیب کے مطابق ===")
|
| 225 |
+
|
| 226 |
+
# --- مرحلہ 1: تینوں زپ فائلوں سے آڈیوز نکال کر ایک فولڈر میں جمع کرنا ---
|
| 227 |
+
for idx, file_id in enumerate(audio_zip_ids, start=1):
|
| 228 |
+
zip_path = f'/content/audio_file_{idx}.zip'
|
| 229 |
+
|
| 230 |
+
print(f"\n[+] آڈیو زپ فائل نمبر {idx} ڈاؤن لوڈ ہو رہی ہے...")
|
| 231 |
+
!gdown --id {file_id} -O {zip_path}
|
| 232 |
+
|
| 233 |
+
if os.path.exists(zip_path):
|
| 234 |
+
print(f"[+] آڈیو زپ فائل نمبر {idx} کو ان زپ کیا جا رہا ہے...")
|
| 235 |
+
current_extract_path = os.path.join(extract_temp_dir, f'batch_{idx}')
|
| 236 |
+
|
| 237 |
+
try:
|
| 238 |
+
with zipfile.ZipFile(zip_path, 'r') as zip_ref:
|
| 239 |
+
zip_ref.extractall(current_extract_path)
|
| 240 |
+
|
| 241 |
+
# اندر موجود 'wavs' فولڈر کو ڈھونڈ کر آڈیوز کاپی کرنا
|
| 242 |
+
for root, dirs, files in os.walk(current_extract_path):
|
| 243 |
+
if os.path.basename(root) == 'wavs':
|
| 244 |
+
for file in files:
|
| 245 |
+
if file.lower().endswith('.wav'):
|
| 246 |
+
source_file = os.path.join(root, file)
|
| 247 |
+
dest_file = os.path.join(wavs_destination, file)
|
| 248 |
+
|
| 249 |
+
# اگر فائل پہلے سے نہ ہو تو کاپی کریں (نو ریپلیسمنٹ)
|
| 250 |
+
if not os.path.exists(dest_file):
|
| 251 |
+
shutil.copy2(source_file, dest_file)
|
| 252 |
+
break
|
| 253 |
+
except zipfile.BadZipFile:
|
| 254 |
+
print(f"[!] ایرر: فائل نمبر {idx} درست زپ فائل نہیں ہے۔")
|
| 255 |
+
else:
|
| 256 |
+
print(f"[!] ایرر: فائل نمبر {idx} ڈاؤن لوڈ نہیں ہو سکی۔")
|
| 257 |
+
|
| 258 |
+
# --- مرحلہ 2: چوتھی اہم ترین فائل (metadata.csv) ڈاؤن لوڈ کرنا ---
|
| 259 |
+
print("\n--------------------------------------------------")
|
| 260 |
+
print("[+] مرحلہ 2: چوتھی اہم فائل (metadata.csv) ڈاؤن لوڈ ہو رہی ہے...")
|
| 261 |
+
print("--------------------------------------------------")
|
| 262 |
+
|
| 263 |
+
# اسے 'wavs' فولڈر سے باہر، مین فولڈر کے اندر ڈاؤن لوڈ کر رہے ہیں
|
| 264 |
+
metadata_dest_path = os.path.join(base_dir, 'metadata.csv')
|
| 265 |
+
|
| 266 |
+
# gdown کے ذریعے فائل ڈاؤن لوڈ کرنا
|
| 267 |
+
!gdown --id {metadata_file_id} -O {metadata_dest_path}
|
| 268 |
+
|
| 269 |
+
# پکی تسلی کرنا کہ فائل کا نام بالکل ٹھیک ہو اور ڈبل ایکسٹینشن نہ ہو
|
| 270 |
+
if os.path.exists(metadata_dest_path):
|
| 271 |
+
print("[✓] metadata.csv فولڈر سے باہر کامیابی سے محفوظ ہو گئی ہے۔")
|
| 272 |
+
else:
|
| 273 |
+
print("[!] الرٹ: چوتھی فائل ڈاؤن لوڈ نہیں ہو سکی، براہ کرم لنک چیک کریں۔")
|
| 274 |
+
|
| 275 |
+
# --- مرحلہ 3: سب چیزوں کو ملا کر فائنل زپ فائل بنانا ---
|
| 276 |
+
print("\n--------------------------------------------------")
|
| 277 |
+
print("[+] مرحلہ 3: فائنل زپ فائل 'U_v2-5,271.zip' تیار کی جا رہی ہے...")
|
| 278 |
+
print("--------------------------------------------------")
|
| 279 |
+
|
| 280 |
+
final_zip_output_name = '/content/U_v2-5,271' # شٹل خود ہی .zip آخر میں لگا دے گا
|
| 281 |
+
|
| 282 |
+
# زپ فائل بنانا
|
| 283 |
+
shutil.make_archive(final_zip_output_name, 'zip', base_dir)
|
| 284 |
+
|
| 285 |
+
final_zip_file_path = '/content/U_v2-5,271.zip'
|
| 286 |
+
|
| 287 |
+
if os.path.exists(final_zip_file_path):
|
| 288 |
+
print("\n==================================================")
|
| 289 |
+
print("✓ مبارک ہو میرے بھائی! فائنل زپ فائل بالکل تیار ہے۔")
|
| 290 |
+
print(f"✓ فائل کا نام: {os.path.basename(final_zip_file_path)}")
|
| 291 |
+
print(f"✓ لوکیشن: یہ کولیب کے ہوم فولڈر میں باہر ہی موجود ہے۔")
|
| 292 |
+
print("==================================================")
|
| 293 |
+
else:
|
| 294 |
+
print("[!] زپ فائل بنانے میں کوئی مسئلہ آیا۔")
|
| 295 |
+
|
| 296 |
+
|
| 297 |
+
|
| 298 |
+
|
| 299 |
+
|
| 300 |
+
|
| 301 |
+
|
| 302 |
+
|
| 303 |
+
|
| 304 |
+
ہاں، تو یہ جو کوڈ ہے یہ ایک الگ چیز ہے۔ آپ چاہتے ہیں کہ گوگل کولیب (Google Colab) کے اندر یہ سارا آڈیو ڈیٹا ایک فولڈر میں اکٹھا ہو جائے تاکہ بعد میں آپ اسے ہگنگ فیس (Hugging Face) پر زپ فائل (Zip File) کی صورت میں ریلیز کر سکیں۔ یعنی اس فولڈر کے باہر ایک فائل ہو گی جس کا نام `metadata.csv` ہو گا، اور اسی کے اندر ایک فولڈر ہو گا جس کا نام `wavs` ہو گا اور اس میں آپ کی آڈیوز ہوں گی۔
|
| 305 |
+
|
| 306 |
+
پھر کچھ ہی دیر میں یہ ایک زپ فائل بن جائے گی، جس کا نام `U_v2-5,271.zip` ہو گا۔ اس زپ فائل کا نام آپ اپنی مرضی سے تبدیل بھی کر سکتے ہیں۔ اب اس فائل کو آپ ہگنگ فیس پر اپلوڈ کریں یا اپنی گوگل ڈرائیو پر، یہ آپ کی مرضی ہے۔ یہاں میں نے آپ کو صرف گوگل کولیب کی لوکل اسٹوریج کے اندر زپ فائل بنانے کا طریقہ بتایا ہے۔
|
| 307 |
+
|
| 308 |
+
--------------------
|
| 309 |
+
|
| 310 |
+
|
| 311 |
+
|
| 312 |
+
|
| 313 |
+
|
| 314 |
+
(H-1)
|
| 315 |
+
|
| 316 |
+
|
| 317 |
+
|
| 318 |
+
|
| 319 |
+
|
| 320 |
+
!pip install --upgrade huggingface_hub
|
| 321 |
+
from huggingface_hub import HfApi
|
| 322 |
+
|
| 323 |
+
# 1. آپ کی فراہم کردہ معلومات
|
| 324 |
+
token = "nnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnn" # آپ کا ہگنگ فیس ٹوکن
|
| 325 |
+
repo_id = "zeeno73ml/000283g" # آپ کی ماڈل ریپو آئی ڈی
|
| 326 |
+
|
| 327 |
+
local_file_path = "/content/U_v2-5,271.zip" # کولیب میں موجود زپ فائل کا راستہ
|
| 328 |
+
path_in_repo = "U/U_v2-5,271.zip" # ہگنگ فیس پر فائنل لوکیشن (U فولڈر کے اندر)
|
| 329 |
+
|
| 330 |
+
print("=== ہگنگ فیس پر ریلیز کرنے کا عمل شروع ہو رہا ہے ===")
|
| 331 |
+
|
| 332 |
+
# HfApi کا انسٹنس بنانا
|
| 333 |
+
api = HfApi()
|
| 334 |
+
|
| 335 |
+
try:
|
| 336 |
+
print(f"[+] فائل اپلوڈ کی جا رہی ہے: {local_file_path}")
|
| 337 |
+
print(f"[->] ہگنگ فیس لوکیشن: {repo_id}/tree/main/{path_in_repo}")
|
| 338 |
+
|
| 339 |
+
# بغیر repo_type تبدیل کیے (ڈیفالٹ ماڈل ریپو ہی رہے گی) اپلوڈ کرنا
|
| 340 |
+
api.upload_file(
|
| 341 |
+
path_or_fileobj=local_file_path,
|
| 342 |
+
path_in_repo=path_in_repo,
|
| 343 |
+
repo_id=repo_id,
|
| 344 |
+
token=token
|
| 345 |
+
)
|
| 346 |
+
|
| 347 |
+
print("\n==================================================")
|
| 348 |
+
print("✓ مبارک ہو میرے بھائی! فائل کامیابی سے ہگنگ فیس پر ریلیز ہو گئی ہے۔")
|
| 349 |
+
print(f"✓ لنک: https://huggingface.co/zeeno73ml/000283g/tree/main/U")
|
| 350 |
+
print("==================================================")
|
| 351 |
+
|
| 352 |
+
except Exception as e:
|
| 353 |
+
print(f"\n[!] اپلوڈ کے دوران کوئی مسئلہ آیا۔ ایرر کی تفصیل یہ ہے:\n{str(e)}")
|
| 354 |
+
|
| 355 |
+
|
| 356 |
+
|
| 357 |
+
|
| 358 |
+
|
| 359 |
+
|
| 360 |
+
|
| 361 |
+
|
| 362 |
+
|
| 363 |
+
|
| 364 |
+
پچھلی بات چیت میں، میں نے آپ کو بتایا تھا کہ جو زپ فائل آپ نے بنانی ہے، اس کے اندر ایک `metadata.csv` فائل ہو گی اور ساتھ ہی `wavs` نام کا ایک فولڈر ہو گا، جس کے بعد وہ زپ فائل میں تبدیل ہو جائے گی۔ وہ نام تو آپ کو یاد ہی ہو گا جو میں نے بتایا تھا۔
|
| 365 |
+
|
| 366 |
+
اب اگر آپ اسے ہگنگ فیس (Hugging Face) پر ریلیز کرنا چاہتے ہیں، تو اوپر دیا گیا کوڈ چلائیں۔ اس سے آپ کی یہ فائل زپ میں کنورٹ ہو جائے گی۔ میں پہلے ہی بتا رہا ہوں کہ یہ سب میں نے آپ کو سمجھانے کے لیے بطور مثال لکھا ہے، ٹوکن اور ریپو آئی ڈی (Repo ID) آپ نے خود اپنی مرضی سے تبدیل کرنی ہے۔ جیسے میں نے ٹوکن کی جگہ پر 'nnnn' لکھا ہوا ہے، وہاں آپ اپنا اصل ٹوکن ڈالیں گے۔ اسی طرح جہاں ریپو آئی ڈی `zeeno73ml/000283g` لکھی ہے، اسے بھی آپ نے خود تبدیل کرنا ہے۔
|
| 367 |
+
|
| 368 |
+
```python
|
| 369 |
+
# 1. آپ کی فراہم کردہ معلومات
|
| 370 |
+
token = "nnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnn" # آپ کا ہگنگ فیس ٹوکن
|
| 371 |
+
repo_id = "zeeno73ml/000283g"
|
| 372 |
+
|
| 373 |
+
```
|
| 374 |
+
|
| 375 |
+
یہ چیزیں آپ کو خود ہی بدلنی ہوں گی۔ آپ اپنی مرضی سے زپ فائل کا نام بھی تبدیل کر سکتے ہیں۔ آپ کو یاد ہو گا کہ پچھلی بار ہماری زپ فائل جہاں بنی تھی، میں نے اس کا پاتھ اور نام یہ رکھا تھا:
|
| 376 |
+
|
| 377 |
+
```python
|
| 378 |
+
local_file_path = "/content/U_v2-5,271.zip" # کولیب میں موجود زپ فائل کا راستہ
|
| 379 |
+
path_in_repo = "U/U_v2-5,271.zip" # ہگنگ فیس پر فائنل لوکیشن (U فولڈر کے اندر)
|
| 380 |
+
|
| 381 |
+
```
|
| 382 |
+
|
| 383 |
+
اس وقت میں نے اس کے بارے میں تفصیل نہیں بتائی تھی اور کہا تھا کہ بعد میں بتاؤں گا کہ اس کا کیا کرنا ہے۔ اب اس کوڈ کے ذریعے ہم اسے ہگنگ فیس پر ریلیز کر سکتے ہیں۔
|
| 384 |
+
|
| 385 |
+
|
| 386 |
+
|
| 387 |
+
|
| 388 |
+
|
| 389 |
+
|
| 390 |
+
|
| 391 |
+
|
| 392 |
+
|
| 393 |
+
|