انجمن‌های فارسی اوبونتو

لطفاً به انجمن‌ها وارد شده و یا جهت ورود ثبت‌نام نمائید

لطفاً جهت ورود نام کاربری و رمز عبورتان را وارد نمائید




نویسنده موضوع: (حل شد) نیاز به اسکریپت برای اتوماسیون تبدیل فایل های صوتی و حذف فایل های اصلی  (دفعات بازدید: 4638 بار)

0 کاربر و 4 مهمان درحال مشاهده موضوع.

آفلاین Farhaad 1992

  • Hero Member
  • *
  • ارسال: 943
  • جنسیت : پسر
  • گنو با گنوم
من تعداد زیادی فایل صوتی محتوی موسیقی دارم در فرمت MP3 و تعداد بسیار کمی در فرمت FLAC، از چند سال قبل در نظر داشتم آنها را به فرمت پیشرفته و باکیفیت opus تبدیل کنم به خاطر انحصاری بودن MP3 ولی خیلی پیگیرش نشدم چون پخش فرمت های انحصاری کار خیلی مشکلی نیست ولی الان به فضای خالی روی هارد دیسک احتیاج پیدا کرده ام و نیاز دارم تا فایل های کم اهمیت را حذف و حجم فایل های صوتی را که چند ده گیگ هستند کاهش بدم، نیاز به فضای خالی هارد دیسک انگیزه بسیار با اهمیت تری هستش تا آزاد نبودن MP3.

یک پکیج هست به نام opus-tools که یکی از ابزارهاش opusenc نام دارد که توانایی تبدیل فرمت های Wave, AIFF, FLAC, Ogg/FLAC, یا raw PCM به فرمت اوپاس را دارد، من چند تا فایل FLAC در ژانرهای مختلف که اصوات زیادی هم داشتند را بدون تعیین هیچ آپشنی با آن تبدیل کردم و خروجی با تنظیمات پیش فرض، کیفیت بسیار خوب و معادل همان فایل FLAC را داشت، لااقل گوش های من که هیچ تفاوتی احساس نکرد، در حالیکه حجم فایل به طور چشمگیری کاهش یافت، برای همین تصمیم دارم تمام فایل های صوتی خودم را به این فرمت پیشرفته و کاملا آزاد تبدیل کنم، به منظور حفظ کیفیت لازم است فایل ها در یک فرمت فشرده ابتدا به یک فرمت غیرفشرده یا همان بدون اتلاف تبدیل شوند و سپس به یک فرمت فشرده دیگر تبدیل شوند، من فرمت FLAC را انتخاب کردم چون برخلاف Wave از فراداده پشتیبانی میکند و همچنین تلاش من برای تبدیل چند فایل در فرمت Wave به فرمت اوپاس با ابزار opusenc با ارور زیر مواجه شد:

ERROR: Unsupported WAV sample size

ولی هیچ مشکلی با FLAC نبود.

ابزار opusenc به این صورت کار میکنه:

opusenc input.wav output.opus

یعنی حتما لازمه نام فایل خروجی ذکر بشه، خودش به طور اتوماتیک پردازش نمیکنه، مشکل من هم همینه، تعداد فایل ها بسیار زیاد است و نمیشه برای هر فایل این کار را دستی انجام داد، من از اسکریپ نویسی چیزی نمیدونم، وب را با عبارت linux output name as input name جستجو کردم نتایج زیادی اومد ولی سردر نیاوردم چون با یک ابزاری مرتبط بود جواب ها، برای همین اینجا مطرح کردم تا جواب بهتر و دقیق تری بگیرم و هم موضوع تبدیل فایل های صوتی به عنوان یک راه موثر برای کاهش فضای هارد دیسک را مطرح کرده باشم.

=== قدم اول ===
من ابتدا نیاز دارم تا بتونم فایل هایی با پسوند FLAC را با ابزار مذکور به اوپاس تبدیل کنم و به یک اسکریپت نیاز دارم تا نام ورودی را به عنوان نام خروجی برگرداند ولی با یک تغییر کوچک، اکثر فایل های من اینطور نام گذاری شده اند:

01 - title.extension

ولی میخوام به این شکل تغییر کنند:

01. title.extension

اشخاصی که با پوسته یونیکس Bash آشنا هستند لطفا راهنمایی کنند و اگر میشه لطفا چند سینتاکس مختلف ارائه کنید.

=== قدم دوم ===
برای فایل های MP3 لازمه اونها رو با یک ابزار دیگر مثلا sox به FLAC تبدیل کنم و سپس پروسه "قدم اول" در ادامه آن انجام شود، هر وقت قدم اول انجام شد بعدا این قدم را دنبال میکنیم.

=== قدم سوم ===
در هر فولدر پس از انجام قدم اول و دوم نیاز به حذف فایل های FLAC هستش.

------------------------------------
پیشاپیش از راهنمایی شما سپاس گذاری میکنم. نتایج این تاپیک در یک تاپیک جداگانه با عنوان "تبدیل فایل های صوتی با حفظ کیفیت به منظور کاهش فضای دیسک" منعکس خواهد شد.

27 می 2018، فرهاد محمدی مجد

=-=-=-=

ویرایش: اصلاح عنوان
« آخرین ویرایش: 11 خرداد 1397، 04:22 ب‌ظ توسط فرهاد محمدی مجد »
* نام کاربری حساب من Fedora-Red Hat است ولی نام نمایهٔ (پروفایل) من، نام حقیقی + سال تولد من است
* از دی ۱۳۹۸ دیگر فعالیت پیوسته و دائم ندارم
* نظرات و ارسال‌های من فقط در زمان ارسال خود معتبر بودند و نشان‌دهنده طرز فکر و سطح دانش فعلی من نیستند

آفلاین Silvio Dante

  • High Hero Member
  • *
  • ارسال: 1221
  • جنسیت : پسر
  • Arch Linux
    • وبلاگ شخصی
فکر کنم برای این کار این اسکریپت بتونه کمک‌تون کنه. (قدم اول) همچنین توضیح هر خط رو هم به صورت کامنت فارسی نوشتم. 
چون گفتین فقط میخواین فایل‌های FLAC رو تبدیل کنین این رو هم برای فایلای FLAC نوشتم.
#!/bin/bash
IFS=$'\n'

# جمع آوری نام فایل‌های شما تحت یک لیست
list=`ls -1 directory/*.FLAC`

# دخیره‌ی نام فایل‌های شما در یک فایل
ls -1 directory/*.FLAC > /tmp/musicNames

# تغییر تمام - ها به نقطه .
sed -i 's/-/\./g' /tmp/musicNames

# حذف کردن پسوند
sed -i 's/FLAC//g' /tmp/musicNames

# دخیره‌ی نام جدید فایل ها در یک متغییر
newNames=`cat /tmp/musicNames`

# ساخت یک آرایه از نام‌های جدید
arr=($newNames)

# شمارنده برای فراخوانی آیتم‌های درون آرایه
counter=1

# یک حلقه برای انجام کار تبدیل
for i in $list; do
    # تبدیل (طبق دستوری که خودتون گفتین)
    opusenc "$i" "${arr[$counter]}.opus"

    # اضافه کردن شمارنده
    ((counter++))
done

در مورد قدم دوم باید بگم که نمی‌دونم چجوری میخواین mp3 رو به FLAC تبدیل کنین وگرنه اسکریپت اونم براتون می‌نوشتم، یا به همین اسکریپت اضافه می‌کردم که با یه آرگومان اون کار رو انجام بده.

برای قدم سوم هم می‌تونین اسکریپت بالا رو قسمت حلقه‌ش رو اینجوری بزارین:
# یک حلقه برای انجام کار تبدیل
for i in $list; do
    # تبدیل (طبق دستوری که خودتون گفتین)
    opusenc "$i" "${arr[$counter]}.opus"

    # حذف فایل قدیمی
    rm $i
   
    # اضافه کردن شمارنده
    ((counter++))
done

اما دلیل این‌که توی اون مرحله‌ی اول نذاشتم اینه که ممکنه اسکریپت درست کار نکنه و بش مثل پایتون نیست که اگر اسکریپت یه جاش درست کار نکرد ادامه‌ش رو اجرا نکنه و ممکن بود فایل‌هاتون بدون تبدیل شدن پاک بشه.
برای تست می‌تونین حلقه‌ی مرحله‌ی اول رو با این چیزی که الان نوشتم جایگزین کنین و چند فایل رو کپی کنین توی یه پوشه و اسکریپت رو روی اون پوشه امتحان کنین که اگه درست کار نکرد کل فایل‌هاتون رو از دست ندین.
« آخرین ویرایش: 07 خرداد 1397، 12:17 ق‌ظ توسط Silvio Dante »
به ما نگفته بودند ایران در زمان احمدشاه قاجار چگونه بوده است. همیشه به ما دادند، ما هم فکر کردیم باید می‌داده‌اند و تازه خیال می‌کردیم کم‌مان است باز هم می‌خواستیم!!
فریدون فرخزاد

آفلاین علی رزم دیده

  • عضو کاربران ایرانی اوبونتو
  • *
  • ارسال: 1244
  • جنسیت : پسر
  • ali76 سابق
با سلام

برای قسمت اول می تونین از این اسکریپت استفاده کنین :
#!/bin/bash
for file in $1/*.flac ; do
    newname=`sed 's/ - /. /g' <<< $file`
    opusenc "$file" "${newname%.*}".opus
done
نحوه ی اجراش هم این طوریه که شما آدرس مسیری که فایل های flac توش هستن رو به عنوان آرگومان بهش می دین و خروجی .opus توی همون مسیر ساخته می شن برای مثال :
./script /home/asus/Desktop/Music
برای قسمت دوم می تونین از این اسکریپت استفاده کنین که فایل با اسم اصلیش و با پسوند .flac ساخته می شه:
#!/bin/bash
for file in $1/*.mp3 ; do
    ffmpeg -i "$file" "${file%.*}".flac
done
نحوه ی اجراش هم مشابه اسکریپت قبلی هستش :
./script /home/asus/Desktop/Music
و برای قسمت آخر هم می تونین خیلی راحت از این دستور استفاده کنین (دلیل اینکه این دستور رو جداگانه نوشتم و تو اسکریپت قرار ندادم اینه که شما صبر کنین تا کل عملیات های قبلی انجام بشه و بعد از اینکه از صحت خروجی مطمئن شدین فایل های اصلی رو پاک کنین):
rm /path/of/your/music/*.flac
« آخرین ویرایش: 07 خرداد 1397، 03:00 ق‌ظ توسط علی رزم دیده »

آفلاین Farhaad 1992

  • Hero Member
  • *
  • ارسال: 943
  • جنسیت : پسر
  • گنو با گنوم
ممنون از راهنمایی

@Silvio Dante, اسکریپت شما خیلی پیچیدست، لطفا تا جای ممکن آنها را ساده و کوتاه بنویسید.

@علی رزم دیده, مثل اینکه بهتره با قدم دوم شروع کنم، میخواستم با sox امتحان کنم ولی همین ffmpeg برای تبدیل MP3 به FLAC خوبه.

من به یک اسکریپت نیاز دارم برای تبدیل فایل های MP3 و OGG به FLAC با استفاده از ffmpeg و لازمه هر فایلی غیر از اینهارو نادیده بگیره چون توی فولدر آلبوم ها معمولا فایل های تصویر و نوشته و کتاب هم هستش.

همچنین لازمه در صورت موفق بودن تبدیل، فایل های ورودی را حذف کنه.

چطوری میشه تعیین کرد روی فولدرهایی که با حرف A آغاز میشوند در ابتدا روی 5 فولدر اولی کار کنه؟
* نام کاربری حساب من Fedora-Red Hat است ولی نام نمایهٔ (پروفایل) من، نام حقیقی + سال تولد من است
* از دی ۱۳۹۸ دیگر فعالیت پیوسته و دائم ندارم
* نظرات و ارسال‌های من فقط در زمان ارسال خود معتبر بودند و نشان‌دهنده طرز فکر و سطح دانش فعلی من نیستند

آفلاین علی رزم دیده

  • عضو کاربران ایرانی اوبونتو
  • *
  • ارسال: 1244
  • جنسیت : پسر
  • ali76 سابق
@علی رزم دیده, مثل اینکه بهتره با قدم دوم شروع کنم، میخواستم با sox امتحان کنم ولی همین ffmpeg برای تبدیل MP3 به FLAC خوبه.
بله ffmpeg بهتر هستش و امکانات بیشتری رو هم در اختیارتون می ذاره

من به یک اسکریپت نیاز دارم برای تبدیل فایل های MP3 و OGG به FLAC با استفاده از ffmpeg و لازمه هر فایلی غیر از اینهارو نادیده بگیره چون توی فولدر آلبوم ها معمولا فایل های تصویر و نوشته و کتاب هم هستش.
بله ، اسکریپتی که من نوشته بودم بقیه رو نادیده می گرفت و فقط mp3 ها رو که مدنظر شما بودش رو تبدیل می کرد ولی چون حالا شما ogg رو هم اضافه کردین لازمه یه تغییر کوچیک بدم :
#!/bin/bash
for file in $1/{*.mp3,*.ogg} ; do
    ffmpeg -i "$file" "${file%.*}".flac
done

همچنین لازمه در صورت موفق بودن تبدیل، فایل های ورودی را حذف کنه.
باز هم توصیه ی من اینه که بعد اجرای اسکریپت خودتون چک کنین و اگه همه چی اوکی بودش دستی پاکشون کنین :
rm /path/of/your/music/{*.mp3,*.ogg}
ولی اگه خیلی اصرار دارین که بعد هر تبدیل فایل اصلی پاک بشه می تونین از این اسکریپت استفاده کنین :
#!/bin/bash
for file in $1/{*.mp3,*.ogg} ; do
    ffmpeg -i "$file" "${file%.*}".flac && rm "$file"
done
به دلیل وجود && ، این دستور ، قسمت دوم رو تنها در صورتی اجرا می کنه که قسمت اول بدون مشکل انجام بشه. پس در صورت موفقیت آمیز بودن تبدیل ، فایل اصلی پاک می شه.

حالا چرا من اصرار می کنم خودتون دستی این کار رو انجام بدین ؟ دلیلش اینه که شاید از نظر ffmpeg خطایی وجود نداشته باشه و تبدیل با موفقیت انجام بشه ولی از نظر شما خروجی ، خروجی مطلوبی نباشه (از نظر کیفیت و ...). واس همون اصرار دارم که خودتون دستی این کار رو بکنین.

چطوری میشه تعیین کرد روی فولدرهایی که با حرف A آغاز میشوند در ابتدا روی 5 فولدر اولی کار کنه؟
این قسمت از صحبتتون رو متوجه نشدم کدوم 5 فولدر اولی ؟
همون طور که خودتون می دونین ما مفهمومی به لحاظ فولدر اولی نداریم.
اول از چه لحاظی مد نظرتون هستش حروف الفبا ؟ ترتیب عددی ؟
« آخرین ویرایش: 07 خرداد 1397، 04:41 ب‌ظ توسط علی رزم دیده »

آفلاین Farhaad 1992

  • Hero Member
  • *
  • ارسال: 943
  • جنسیت : پسر
  • گنو با گنوم
یک برنامه هست به نام GNOME SoundConverter که همه این چیزهایی که من اینجا خواستم را داره، ولی متاسفانه نسخه ارائه شده این برنامه در دبیان 9 دارای یک باگ است و نمیتواند خروجی اوپاس تولید کند:

https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=834598

برای همین این تاپیک را زدم، بقیه فرمت ها را بدون مشکل انجام میدهد.

با سلام

برای قسمت اول می تونین از این اسکریپت استفاده کنین :
#!/bin/bash
for file in $1/*.flac ; do
    newname=`sed 's/ - /. /g' <<< $file`
    opusenc "$file" "${newname%.*}".opus
done
نحوه ی اجراش هم این طوریه که شما آدرس مسیری که فایل های flac توش هستن رو به عنوان آرگومان بهش می دین و خروجی .opus توی همون مسیر ساخته می شن برای مثال :
./script /home/asus/Desktop/Music
.....

و برای قسمت آخر هم می تونین خیلی راحت از این دستور استفاده کنین (دلیل اینکه این دستور رو جداگانه نوشتم و تو اسکریپت قرار ندادم اینه که شما صبر کنین تا کل عملیات های قبلی انجام بشه و بعد از اینکه از صحت خروجی مطمئن شدین فایل های اصلی رو پاک کنین):
rm /path/of/your/music/*.flac
این اسکریپت مرحله 1 را اجرا کردم، درست کار کرد ولی باید حتما به دایرکتوری مورد نظر برم و اسکریپت را به این صورت اجرا کنم:

/path/to/script_location/./script .
اگر مسیر یک دایرکتوری را به عنوان آرگومان بهش بدم این ارور را میدهد:

No such file or directory

چندین بار امتحان کردم.

برای مرحله دوم از برنامه GNOME SoundConverter استفاده کردم و خیلی راحت و سریع کار تبدیل فایل ها، تغییر نام و حذف فایل های ورودی را انجام داد، البته فردا اسکریپت مرحله دوم را هم تست خواهم کرد.
* نام کاربری حساب من Fedora-Red Hat است ولی نام نمایهٔ (پروفایل) من، نام حقیقی + سال تولد من است
* از دی ۱۳۹۸ دیگر فعالیت پیوسته و دائم ندارم
* نظرات و ارسال‌های من فقط در زمان ارسال خود معتبر بودند و نشان‌دهنده طرز فکر و سطح دانش فعلی من نیستند

آفلاین علی رزم دیده

  • عضو کاربران ایرانی اوبونتو
  • *
  • ارسال: 1244
  • جنسیت : پسر
  • ali76 سابق
خوشحالم که مشکلتون حل شد
فقط یه مطلب اینکه لزومی بر اجرای اسکریپت تو اون مسیر نیستش ...

فک کنم شما اینو این طوری اجراش می کردین :
./script /home/asus/Desktop/Music/ولی باید این طوری اجراش کنین :
./script /home/asus/Desktop/Music
ویرایش :
اگه آرگومان رو مشابه دستور اول می دین ، می تونین از این اسکریپت استفاده کنین :

#!/bin/bash
for file in $1*.flac ; do
    newname=`sed 's/ - /. /g' <<< $file`
    opusenc "$file" "${newname%.*}".opus
done
« آخرین ویرایش: 08 خرداد 1397، 07:29 ب‌ظ توسط علی رزم دیده »

آفلاین Farhaad 1992

  • Hero Member
  • *
  • ارسال: 943
  • جنسیت : پسر
  • گنو با گنوم
.....
این قسمت از صحبتتون رو متوجه نشدم کدوم 5 فولدر اولی ؟
همون طور که خودتون می دونین ما مفهمومی به لحاظ فولدر اولی نداریم.
اول از چه لحاظی مد نظرتون هستش حروف الفبا ؟ ترتیب عددی ؟
منظورم 5 فولدر نخست بر اساس الفبا بود، ولی فراموشش کنید، همینطوری دستی بهش آدرس میدم، فقط لازمه اسکریپت مرحله یک و دو طوری اجرا بشه که زیر فولدرها را خودش شناسایی کنه، مثلا:

./scrept artist1/** artist2/** artist3/** artist4/** artist5/**
فولدر والد نام هنرمند است و در آن حداقل یک فولدر آلبوم قرار دارد، آدرس دهی تک-تک همه آلبوم ها بسیار زمان میگیره.
* نام کاربری حساب من Fedora-Red Hat است ولی نام نمایهٔ (پروفایل) من، نام حقیقی + سال تولد من است
* از دی ۱۳۹۸ دیگر فعالیت پیوسته و دائم ندارم
* نظرات و ارسال‌های من فقط در زمان ارسال خود معتبر بودند و نشان‌دهنده طرز فکر و سطح دانش فعلی من نیستند

آفلاین علی رزم دیده

  • عضو کاربران ایرانی اوبونتو
  • *
  • ارسال: 1244
  • جنسیت : پسر
  • ali76 سابق
اگه اشتباه نکنم منظورتون اینه که هم می خواین اسکریپت ، چند آرگومان رو به صورت هم زمان بگیره و هم می خواین بعد گرفتن آرگومان ها ساب فولدرها رو هم چک کنه.

برای این دو منظور ، می تونین از این دو اسکریپت استفاده کنین :

برای اسکریپت اول (تبدیل .flac به opus. و تغییر نام در صورت نیاز) :
#!/bin/bash
for dir in `find $@ -type d` ; do
    for file in $dir/*.flac ; do
        newname=`sed 's/ - /. /g' <<< $file`
        opusenc "$file" "${newname%.*}".opus
    done
done

برای اسکریپت دوم (تبدیل فایل های .mp3 و .ogg به .flac) :
#!/bin/bash
for dir in `find $@ -type d` ; do
    for file in $dir/*.{mp3,ogg} ; do
        ffmpeg -i "$file" "${file%.*}".flac && rm "$file"
    done
done

دقت کنین که اسکریپت دوم ، فایل های اولیه رو در صورت موفقیت آمیز بودن تبدیل پاک می کنه اگه نمی خواین این اتفاق بیوفته اون قسمت && rm "$file رو پاک کنین.

نحوه ی اجراش هم به این صورت هستش (دیگه وارد کردن یا نکردن / تاثیری در روند اجرای اسکریپت نداره در ضمن تعداد آرگومان ها هم دلخواه هستش) :
./script /path/of/artist1 /path/of/artist2 ... /path/of/artistn

آفلاین Farhaad 1992

  • Hero Member
  • *
  • ارسال: 943
  • جنسیت : پسر
  • گنو با گنوم
خبر خوب اینه که این دو اسکریپت آخری به خوبی کار میکنند
خبر بد اینه که هنوز با آدرس دهی مسیر فولدر ها به عنوان آرگومان مشکل دارند ولی فهمیدم مشکل از کجاست، مشکل به خاطر وجود اسپیس (فاصله) در نام فولدرها هستش، البته من همیشه با "" و یا زدن کلید تب و کامل شدن خودکار نام فولدر و قرارگرفتن \ قبل اسپیس ها، اسکریپت ها را اجرا میکردم ولی مشکل باز هم هستش.

من میتونم به راحتی تمام فولدرها را با GNOME Files انتخاب کنم و با استفاده از قابلیت bulk rename فضاها (اسپیس) را به زیرخط (ـ) تبدیل کنم، در اینصورت مشکل حل خواهد شد ولی اگر شما اسکریپت را اصلاح کنید تا این مشکل را نداشته باشد ممنون خواهم شد، البته اگر کار سخت و زمانبری هستش ولش کنید.

عبارت file name underline space را در وب جستجو کردم و نتایج جالبی داشت، توصیه شده از اسپیس در نام فایل ها استفاده نشود.
* نام کاربری حساب من Fedora-Red Hat است ولی نام نمایهٔ (پروفایل) من، نام حقیقی + سال تولد من است
* از دی ۱۳۹۸ دیگر فعالیت پیوسته و دائم ندارم
* نظرات و ارسال‌های من فقط در زمان ارسال خود معتبر بودند و نشان‌دهنده طرز فکر و سطح دانش فعلی من نیستند

آفلاین علی رزم دیده

  • عضو کاربران ایرانی اوبونتو
  • *
  • ارسال: 1244
  • جنسیت : پسر
  • ali76 سابق
خواهش می کنم دوست عزیز

این اسکریپت ها رو یه تستی بکنین به احتمال زیاد مشکلتون حل بشه.

اسکریپت اولی :
#!/bin/bash
IFS=$'\n'
for dir in `find $@ -type d` ; do
    for file in "$dir"/*.flac ; do
        newname=`sed 's/ - /. /g' <<< "$file"`
        opusenc "$file" "${newname%.*}".opus
    done
done

اسکریپت دوم :
#!/bin/bash
IFS=$'\n'
for dir in `find $@ -type d` ; do
    for file in "$dir"/*.{mp3,ogg} ; do
        ffmpeg -i "$file" "${file%.*}".flac && rm "$file"
    done
done
« آخرین ویرایش: 10 خرداد 1397، 12:51 ق‌ظ توسط علی رزم دیده »

آفلاین سید وحید رضا برهانی

  • High Hero Member
  • *
  • ارسال: 1668
  • جنسیت : پسر
  • یک مخالف نرم افزار اوپن سورس
سلام
می دونم آف تاپیک محسوب می شه ولی با اینحال چرا با خود ffmpeg مستقیم به opus تبدیل نمی کنی؟ راحت تره.
نرم افزاری که نشه سیخ انگولکش کرد (به هر دلیلی چه به‌خاطر قانون و چه پیچیدگی یا توسعه سریع)نرم افزار آزاد نیست حالا مهم نیست چه بنیادی یا چه افرادی اون رو نوشته باشند یا GPL باشه یانه!
نرم افزار آزاد یک جنبش هست نه یک تیکه کاغذ پاره(GPL)
حق فهمیدن از حق خوندن مهمتره

آفلاین Farhaad 1992

  • Hero Member
  • *
  • ارسال: 943
  • جنسیت : پسر
  • گنو با گنوم
این دو اسکریپت آخری را امروز تست خواهم کرد، لطفا همیشه آپشن -v را به فرمان rm اضافه کنید و همیشه فرمان rm را هم برای اسکریپت تبدیل flac به اوپاس اضافه کنید.

اگر بتونید اسکریپت ها را طوری بنویسید که من بهش آدرس فولدر یک هنرمند را بدم و اسکریپت فرمان ها را روی آن فولدر و 4 فولدر بعدی اجرا کنه خیلی خوب خواهد شد، یعنی در جمع 5 فولدر، من الان برای تبدیل فایل های فشرده به flac با برنامه GNOME SoundConverter همیشه 5 تا فولدر انتخاب میکنم و بعد که تبدیل از flac به اوپاس با اسکریپت شما تموم شد میرم سراغ 5 فولدر بعدی.

سلام
می دونم آف تاپیک محسوب می شه ولی با اینحال چرا با خود ffmpeg مستقیم به opus تبدیل نمی کنی؟ راحت تره.
سلام، حرف شما آف-تاپیک نیست.

تبدیل مستقیم یک فرمت صوتی فشرده به یک فرمت فشرده دیگر با افت کیفیت همراه خواهد بود، لازمه ابتدا به یک فرمت غیر-فشرده تبدیل بشه و بعد به یک فرمت فشرده، اگر قراره اینکار انجام بشه هیچ تفاوتی در اسکریپت نویسی نخواهد داشت که از چه ابزارهایی استفاده بشه یعنی مراحل کار یکیه، برای همین ترجیح میدم انکودر رسمی خود اوپاس که از کیفیت کارش اطمینان دارم آن را انجام دهد.
* نام کاربری حساب من Fedora-Red Hat است ولی نام نمایهٔ (پروفایل) من، نام حقیقی + سال تولد من است
* از دی ۱۳۹۸ دیگر فعالیت پیوسته و دائم ندارم
* نظرات و ارسال‌های من فقط در زمان ارسال خود معتبر بودند و نشان‌دهنده طرز فکر و سطح دانش فعلی من نیستند

آفلاین سید وحید رضا برهانی

  • High Hero Member
  • *
  • ارسال: 1668
  • جنسیت : پسر
  • یک مخالف نرم افزار اوپن سورس
راستش برای اینکه تاپیک از مسیرش خارج نشه یک تاپیک جدید بازکردم و اونجا ادامه می دم
https://forum.ubuntu-ir.org/index.php/topic,147966.msg1155714.html#msg1155714
نرم افزاری که نشه سیخ انگولکش کرد (به هر دلیلی چه به‌خاطر قانون و چه پیچیدگی یا توسعه سریع)نرم افزار آزاد نیست حالا مهم نیست چه بنیادی یا چه افرادی اون رو نوشته باشند یا GPL باشه یانه!
نرم افزار آزاد یک جنبش هست نه یک تیکه کاغذ پاره(GPL)
حق فهمیدن از حق خوندن مهمتره

آفلاین علی رزم دیده

  • عضو کاربران ایرانی اوبونتو
  • *
  • ارسال: 1244
  • جنسیت : پسر
  • ali76 سابق
اگه اشتباه نکنم منظور شما اینه که آدرس فولدر اول می خواین بدین و بعدش پردازش هایی که قبلاً در موردشون صحبت کردیم برای 5 فولدر (خود اون فولدر و 4 فولدر بعدی) اعمال بشه.

برای این منظور من این اسکریپت ها رو نوشتم ولی چون دقیق از منظور شما مطمئن نیستم ، اول این اسکریپت رو اجرا کنین اگر خروجی ، خروجی مورد نظر شما بودش بعدش اسکریپت های اصلی رو اجرا کنین :

#!/bin/bash
IFS=$'\n'
ls -d `dirname "$1"`/*/ | grep -A5 -P `basename "$1"`

نحوه ی اجراش هم به این صورت هستش :
./script /home/asus/Desktop/A/و خروجی به این صورت باید باشه :
/home/asus/Desktop/A/ /home/asus/Desktop/B/ /home/asus/Desktop/C/ /home/asus/Desktop/D/ /home/asus/Desktop/E/
اگه خروجی درست بودش ، حالا می تونین از این اسکریپت های اصلی استفاده کنین.

اسکریپت اول :
#!/bin/bash
IFS=$'\n'
par=$(ls -d `dirname "$1"`/*/ | grep -A5 -P `basename "$1"`)

for dir in `find $par -type d` ; do
    for file in "$dir"/*.flac ; do
        newname=`sed 's/ - /. /g' <<< "$file"`
        opusenc "$file" "${newname%.*}".opus && rm -v "$file"
    done
done

اسکریپت دوم :
#!/bin/bash
IFS=$'\n'
par=$(ls -d `dirname "$1"`/*/ | grep -A5 -P `basename "$1"`)

for dir in `find $par -type d` ; do
    for file in "$dir"/*.{mp3,ogg} ; do
        ffmpeg -i "$file" "${file%.*}".flac && rm -v "$file"
    done
done
« آخرین ویرایش: 10 خرداد 1397، 11:47 ب‌ظ توسط علی رزم دیده »