إعـــــــلان

تقليص
لا يوجد إعلان حتى الآن.

دمج ملفات صوتية فى ملف منفرد

تقليص
هذا الموضوع مغلق.
X
X
 
  • تصفية - فلترة
  • الوقت
  • عرض
إلغاء تحديد الكل
مشاركات جديدة

  • دمج ملفات صوتية فى ملف منفرد

    بسم الله الرحمن الرحيم
    السلام عليكم ورحمة الله وبركاته

    بافتراض أن في مجلد الــ audio مثلا يوجد 286 ملفا صوتيا بصيغة
    Mp3 تمثل آيات سورة البقرة كمثال من الآية 1 إلى غاية 286 بهذه التسميات

    أردنا دمجها مع بعض لتصبح ملفا واحد لسورة البقرة أو دمج جزء منها يتحقق ذلك بتحديد قيمة البداية و النهاية
    في دالة التكرار و التي يمكن استغلالها فيما بعد لتكرار الآيات بكل سهولة ما دام تم الحصول على الملف مجمعا
    من ... الى.....
    -------------------------------------------------------
    سنعتمد على التعليمة os لكن سيعترضنا مشكل و هو الترتيب العددي فالملفات اذ كانت أقل من تسعة لن يحدث مشكل
    لكن إذ تجاوز الـ 9 سيحدث دمج خاطئ
    حيث سيدمج الملف 1 ثم 10 ...... الخ
    --------------------------------------------
    لذلك و قبل إجراء عملية الدمج نجري نقل و إعادة تسميات للملفات لتحقق دمجا مرتبا وذلك باستعمال الأرقام و الحروف وبعد إنهاء العملية
    نحذف هذه الملفات الجديدة .
    ---------------------------------------------------------------
    و بحكم أن التعليمة os سنوظفها للتعامل مع موجة أوامر وجب في مثل هكذا
    مشاريع جعل البرنامج مسؤولا عدا الـ xp

    الآن ضع ملفات صوتية في مجلد الـ audio ضف زرا في التجميعية
    أكتب فيه :
    كود PHP:
    ----  مسح كل الملفات الصوتية وفق هذا المسار عند بدء عملية جديدة
    File
    .Delete(_SourceFolder.."\\*.mp3"falsefalsefalsenil);
    -------- 
    البحث عن الملفات الصوتية في المجلد المشار اليه في المار
    ter 
    File.Find(_SourceFolder.."\\AutoPlay\\Audio\\""*.mp3"falsefalsenilnil);
    ---- 
    دالة تكرارية تبدأ من 1 إلى غاية عدد الملفات الصوتية الموجودة في المجلد أعلاه
    for 1,#ter do
    --------  القيام بعملية نسخ الملفات الصوتية الى المسار الموجود في أول الأكواد
    File
    .Copy(_SourceFolder.."\\AutoPlay\\Audio\\"..b..".mp3",_SourceFoldertruetruefalsetruenil);
    ------   
    يتم توزرع اعادة تسمية الملفات الصوتية بطريقة تخدم عملية الدمج المنتظم وفق الملفات الأصلية
    if b<=9 then
    File
    .Rename(_SourceFolder.."\\"..b..".mp3"_SourceFolder.."\\1a"..b..".mp3");
    elseif 
    b>=10 and b<=19 then
    File
    .Rename(_SourceFolder.."\\"..b..".mp3"_SourceFolder.."\\2a"..b..".mp3");
    elseif 
    b>=20 and b<=29 then
    File
    .Rename(_SourceFolder.."\\"..b..".mp3"_SourceFolder.."\\3a"..b..".mp3");
    elseif 
    b>=30 and b<=39 then
    File
    .Rename(_SourceFolder.."\\"..b..".mp3"_SourceFolder.."\\4a"..b..".mp3");
    elseif 
    b>=40 and b<=49 then
    File
    .Rename(_SourceFolder.."\\"..b..".mp3"_SourceFolder.."\\5a"..b..".mp3");
    elseif 
    b>=50 and b<=59 then
    File
    .Rename(_SourceFolder.."\\"..b..".mp3"_SourceFolder.."\\6a"..b..".mp3");
    elseif 
    b>=60 and b<=69 then
    File
    .Rename(_SourceFolder.."\\"..b..".mp3"_SourceFolder.."\\7a"..b..".mp3");
    elseif 
    b>=70 and b<=79 then
    File
    .Rename(_SourceFolder.."\\"..b..".mp3"_SourceFolder.."\\8a"..b..".mp3");
    elseif 
    b>=80 and b<=89 then
    File
    .Rename(_SourceFolder.."\\"..b..".mp3"_SourceFolder.."\\9a"..b..".mp3");
    elseif 
    b>=90 and b<=99 then
    File
    .Rename(_SourceFolder.."\\"..b..".mp3"_SourceFolder.."\\a"..b..".mp3");
    elseif 
    b>=100 and b<=109 then
    File
    .Rename(_SourceFolder.."\\"..b..".mp3"_SourceFolder.."\\b"..b..".mp3");
    elseif 
    b>=110 and b<=119 then
    File
    .Rename(_SourceFolder.."\\"..b..".mp3"_SourceFolder.."\\c"..b..".mp3");
    elseif 
    b>=120 and b<=129 then
    File
    .Rename(_SourceFolder.."\\"..b..".mp3"_SourceFolder.."\\d"..b..".mp3");
    elseif 
    b>=130 and b<=139 then
    File
    .Rename(_SourceFolder.."\\"..b..".mp3"_SourceFolder.."\\e"..b..".mp3");
    elseif 
    b>=140 and b<=149 then
    File
    .Rename(_SourceFolder.."\\"..b..".mp3"_SourceFolder.."\\f"..b..".mp3");
    elseif 
    b>=150 and b<=159 then
    File
    .Rename(_SourceFolder.."\\"..b..".mp3"_SourceFolder.."\\g"..b..".mp3");
    elseif 
    b>=160 and b<=169 then
    File
    .Rename(_SourceFolder.."\\"..b..".mp3"_SourceFolder.."\\h"..b..".mp3");
    elseif 
    b>=170 and b<=179 then
    File
    .Rename(_SourceFolder.."\\"..b..".mp3"_SourceFolder.."\\i"..b..".mp3");
    elseif 
    b>=180 and b<=189 then
    File
    .Rename(_SourceFolder.."\\"..b..".mp3"_SourceFolder.."\\j"..b..".mp3");
    elseif 
    b>=190 and b<=199 then
    File
    .Rename(_SourceFolder.."\\"..b..".mp3"_SourceFolder.."\\k"..b..".mp3");
    elseif 
    b>=200 and b<=209 then
    File
    .Rename(_SourceFolder.."\\"..b..".mp3"_SourceFolder.."\\l"..b..".mp3");
    elseif 
    b>=210 and b<=219 then
    File
    .Rename(_SourceFolder.."\\"..b..".mp3"_SourceFolder.."\\m"..b..".mp3");
    elseif 
    b>=220 and b<=229 then
    File
    .Rename(_SourceFolder.."\\"..b..".mp3"_SourceFolder.."\\n"..b..".mp3");
    elseif 
    b>=230 and b<=239 then
    File
    .Rename(_SourceFolder.."\\"..b..".mp3"_SourceFolder.."\\o"..b..".mp3");
    elseif 
    b>=240 and b<=249 then
    File
    .Rename(_SourceFolder.."\\"..b..".mp3"_SourceFolder.."\\p"..b..".mp3");
    elseif 
    b>=250 and b<=259 then
    File
    .Rename(_SourceFolder.."\\"..b..".mp3"_SourceFolder.."\\q"..b..".mp3");
    elseif 
    b>=260 and b<=269 then
    File
    .Rename(_SourceFolder.."\\"..b..".mp3"_SourceFolder.."\\r"..b..".mp3");
    elseif 
    b>=270 and b<=279 then
    File
    .Rename(_SourceFolder.."\\"..b..".mp3"_SourceFolder.."\\s"..b..".mp3");
    elseif 
    b>=280 and b<=289 then
    File
    .Rename(_SourceFolder.."\\"..b..".mp3"_SourceFolder.."\\t"..b..".mp3");
    end
    end
    -----  محتوى موجة أوامر دورها دمج الملفات كملف واحد ويمكن التحكم في اللاحقة
    = [[
     
    copy /*.mp3  belkiss.mp3 
    ]]
    --- 
    استغلال التغليمة os
    os
    .execute (n)
    ----- 
    الملف المدمج الناتج يتم نسخه الى سطح المكتب
    File
    .Copy(_SourceFolder.."\\belkiss.mp3"_DesktopFolder.."\\belkiss.mp3"truetruefalsetruenil);
    -----  
    ثم مسح للملفات الجديدة لاننا انهينا الدمج و ضار الملف جاهزا
    File
    .Delete(_SourceFolder.."\\*.mp3"falsefalsefalsenil);
    -------------------------------------------------------------------------------- 

    على أساس أننا نريد الدمج بدء من الملف 1 إلى غاية عدد الملفات الموجود في المجلد , و كلما كان العدد أقل كانت النتائج أسرع
    -----------------------------------------------------------------------
    باستغلال المقترح يمكن تحقيق التكرار بكل بساطة لأنه صار بإمكانك التعامل مع ملف واحد فقط لتكرره بعدد المرات التي تريد .. فقط .
    التعديل الأخير تم بواسطة عبود عبود; الساعة 18-07-2015, 11:04 AM. سبب آخر: دمج المشاركة الأولى مع الثانية

  • #2
    جزاك الله خيرا .............. ممتاز

    مثبت للإفادة العامة

    تعليق


    • #3
      شـكــ وبارك الله فيك ـــرا لك ... لك مني أجمل تحية .

      تعليق


      • #4
        الكود جيد و يؤدى الغرض منه

        لكنه يعالج حالة محددة فقط

        بعد حذف التعليفات من الكود يتبقى 70 سطر
        و لا زالت لا تتعامل مع أكثر من 289 ملف و كلما اردنا الزيادة أضفنا اسطرا للكود
        تقوم بعمليات مسح للملفات بينما فى دوال الدمج لا يفترض إطلاقا ان تمر بتلك الخطوة (المسح بدون داعى يشكل إرهاق للقرص الصلب)
        و بقى أخطر عيب
        انها تغير أسماء الملفات الأصلية

        حاول ان تجيب على هذه الأسئلة
        هل إعادة تسمية الملفات هى الحل الأمثل ؟؟
        هل يمكن ان تقوم حلقة بكل ما سبق و بدون اعادة التسمية ؟؟
        هل يمكن ان يلائم الحل اى عدد من الملفات ؟؟

        السيناريو الصحيح الذى لا يغير أسماء الملفات الأصلية
        و يتعامل مع الملفات ذات الأسماء الرقمية أيا كان عددها
        و لا يقوم بعمليات مسح
        لا يتجاوز 16 سطر بدون دمج لأسطر الكود

        نصيحة اخيرة
        عند حل اى مشكلة برمجية
        حاصر المشكلة بعقلك أولا قبل محاولة محاصرتها بأكوادك

        بالتوفيق

        تعليق


        • #5
          المشاركة الأصلية بواسطة المـهاجر مشاهدة المشاركة
          الكود جيد و يؤدى الغرض منه

          لكنه يعالج حالة محددة فقط

          بعد حذف التعليفات من الكود يتبقى 70 سطر
          و لا زالت لا تتعامل مع أكثر من 289 ملف و كلما اردنا الزيادة أضفنا اسطرا للكود
          تقوم بعمليات مسح للملفات بينما فى دوال الدمج لا يفترض إطلاقا ان تمر بتلك الخطوة (المسح بدون داعى يشكل إرهاق للقرص الصلب)
          و بقى أخطر عيب
          انها تغير أسماء الملفات الأصلية

          حاول ان تجيب على هذه الأسئلة
          هل إعادة تسمية الملفات هى الحل الأمثل ؟؟
          هل يمكن ان تقوم حلقة بكل ما سبق و بدون اعادة التسمية ؟؟
          هل يمكن ان يلائم الحل اى عدد من الملفات ؟؟

          السيناريو الصحيح الذى لا يغير أسماء الملفات الأصلية
          و يتعامل مع الملفات ذات الأسماء الرقمية أيا كان عددها
          و لا يقوم بعمليات مسح
          لا يتجاوز 16 سطر بدون دمج لأسطر الكود

          نصيحة اخيرة
          عند حل اى مشكلة برمجية
          حاصر المشكلة بعقلك أولا قبل محاولة محاصرتها بأكوادك

          بالتوفيق
          شكرا بارك الله فيك
          إليك بحل بدون نقل و لامسح و تقليص 16 سطرا المطلوبة الى 8 مع دمج واحد
          كود PHP:
          File.Delete(_SourceFolder.."\\AutoPlay\\Audio\\belkiss.mp3"falsefalsefalsenil);
          f="";
          for 
          i=1,286 do
          ff..i..".mp3 +"
          end
          f2 
          String.Mid(f1String.Length(f)-1);
          TextFile.WriteFromString(_SourceFolder.."\\AutoPlay\\Audio\\k.bat",  'copy /b ' ..f2..'belkiss.mp3'false);
          File.Run(_SourceFolder.."\\AutoPlay\\Audio\\k.bat""""AutoPlay\\Audio\\"SW_HIDEfalse); 

          تعليق


          • #6
            المشاركة الأصلية بواسطة عبود عبود مشاهدة المشاركة
            جزاك الله خيرا .............. ممتاز

            مثبت للإفادة العامة


            بارك الله فيك متوقع منكم هذا التشجيع شكرا .

            تعليق


            • #7
              المشاركة الأصلية بواسطة فرح صالحي مشاهدة المشاركة
              شـكــ وبارك الله فيك ـــرا لك ... لك مني أجمل تحية .
              مرور طيب بارك الله فيك

              تعليق


              • #8
                شـكــ وبارك الله فيك ـــرا لك ... لك مني أجمل تحية .
                موفق بإذن الله ... لك مني أجمل تحية .

                تعليق


                • #9
                  المشاركة الأصلية بواسطة ثامر أبو بلقيس مشاهدة المشاركة
                  شكرا بارك الله فيك
                  إليك بحل بدون نقل و لامسح و تقليص 16 سطرا المطلوبة الى 8 مع دمج واحد
                  كود PHP:
                  File.Delete(_SourceFolder.."\\AutoPlay\\Audio\\belkiss.mp3"falsefalsefalsenil);
                  f="";
                  for 
                  i=1,286 do
                  ff..i..".mp3 +"
                  end
                  f2 
                  String.Mid(f1String.Length(f)-1);
                  TextFile.WriteFromString(_SourceFolder.."\\AutoPlay\\Audio\\k.bat",  'copy /b ' ..f2..'belkiss.mp3'false);
                  File.Run(_SourceFolder.."\\AutoPlay\\Audio\\k.bat""""AutoPlay\\Audio\\"SW_HIDEfalse); 


                  عيد سعيد وكل عام وأنتم بخير أستاذ ثامر
                  بارك الله فيكم ونفع بكم
                  طرح جميل وجهد مميز

                  تعليق


                  • #10
                    المشاركة الأصلية بواسطة ثامر أبو بلقيس مشاهدة المشاركة
                    شكرا بارك الله فيك
                    إليك بحل بدون نقل و لامسح و تقليص 16 سطرا المطلوبة الى 8 مع دمج واحد
                    كود PHP:
                    File.Delete(_SourceFolder.."\\AutoPlay\\Audio\\belkiss.mp3"falsefalsefalsenil);
                    f="";
                    for 
                    i=1,286 do
                    ff..i..".mp3 +"
                    end
                    f2 
                    String.Mid(f1String.Length(f)-1);
                    TextFile.WriteFromString(_SourceFolder.."\\AutoPlay\\Audio\\k.bat",  'copy /b ' ..f2..'belkiss.mp3'false);
                    File.Run(_SourceFolder.."\\AutoPlay\\Audio\\k.bat""""AutoPlay\\Audio\\"SW_HIDEfalse); 
                    هذه المرة سيناريو جيد بكثير عن المرة السابقة

                    لا ضير من انشاء ملفات باتش
                    إخراج اكوادك الى ملف نصى فكرة غير محبذة
                    إلا للضرورة القصوى فقط

                    ما السبب الذى إستبعد التعليمة os فى هذه المرة ؟؟

                    كود PHP:
                    'copy /b ' ..f2..'belkiss.mp3' 
                    ما الذى يمنعك من تطبيق التعليمة os مباشرة على هذا الكومند البسيط ؟؟؟
                    هذا ممكن بكل سهوله

                    أنا أعلم جيدا ان الأوتوبلاى هنا ستبرز رسالة خطأ
                    هل العيب من الأوتوبلاى ؟؟ لا
                    هل العيب من الكوماند ؟؟ لا
                    هل لابد من تعديل الكوماند او اضافة بارامترات ؟؟ لا أيضا

                    ينقصك مفتاح بسيط جدا لحل اللغز
                    حاول و ستصل

                    تعليق


                    • #11
                      تنفيذ الأمر دون التخلي على التعليمة os

                      كود PHP:
                      File.Delete(_SourceFolder.."\\AutoPlay\\Audio\\belkiss.mp3"falsefalsefalsenil); 
                      f=""
                      for 
                      i=1,286 do 
                      ff..i..".mp3 +" 
                      end 
                      f2 
                      String.Mid(f1String.Length(f)-1); 
                      ="echo copy /b " ..f2.. " belkiss.mp3 > AutoPlay/Audio/thameur.bat"
                      os.execute (n)
                      File.Run(_SourceFolder.."\\AutoPlay\\Audio\\thameur.bat""""AutoPlay\\Audio\\"SW_HIDEfalse); 

                      تعليق


                      • #12
                        ربما ستقول لي الجزئية :
                        كود PHP:
                        ="echo copy /b " ..f2.. " belkiss.mp3 > AutoPlay/Audio/thameur.bat"
                        os.execute (n
                        تعادل تماما إنشاء ملف كما حدث في المحاولة السابقة
                        ----------------------------------------------------------------------------------------
                        لذلك أشعر بأن هذا ما عندي

                        هات ما عندك

                        تعليق


                        • #13
                          بارك الله فيك أخى الفاضل ثامر

                          ماشاء الله عمل رائع ومتابعة قوية

                          جزاك الله خيرا

                          والشكر لأخينا المهاجر على لمحاته ومتابعته المفيدة

                          تعليق


                          • #14
                            المشاركة الأصلية بواسطة امل الماضي مشاهدة المشاركة
                            شـكــ وبارك الله فيك ـــرا لك ... لك مني أجمل تحية .
                            موفق بإذن الله ... لك مني أجمل تحية .

                            مرور طيب بارك الله فيك شكرا

                            تعليق


                            • #15
                              المشاركة الأصلية بواسطة azizsoft مشاهدة المشاركة
                              عيد سعيد وكل عام وأنتم بخير أستاذ ثامر
                              بارك الله فيكم ونفع بكم
                              طرح جميل وجهد مميز
                              عيد مبارك أستاذ عزيز شكرا على المرور الطيب

                              تعليق

                              مواضيع تهمك

                              تقليص

                              المنتدى: القسم العام نشرت بواسطة: Reem2Rabeh الوقت: 04-23-2025 الساعة 04:27 PM
                              المنتدى: ضبط وتوكيد الجودة نشرت بواسطة: HeaD Master الوقت: 04-15-2025 الساعة 09:30 AM
                              المنتدى: التصنيع والانتاج نشرت بواسطة: HeaD Master الوقت: 04-11-2025 الساعة 01:08 PM
                              المنتدى: القسم العام نشرت بواسطة: نوال الخطيب الوقت: 03-19-2025 الساعة 03:07 AM
                              المنتدى: الكمبيوتر والإنترنت نشرت بواسطة: عوض السوداني الوقت: 03-18-2025 الساعة 07:22 AM
                              يعمل...
                              X