| YTFZF(5) | File Formats Manual | YTFZF(5) |
نام (NAME)
ytfzf - فایل پیکربندی برای ytfzf.
خلاصه دستور (SYNOPSIS)
~/.config/ytfzf/conf.sh
توضیحات (DESCRIPTION)
فایل پیکربندی یک فایل .sh است و میتواند به همین صورت استفاده شود. این فایل میتواند کاملاً خالی باشد و ytfzf همچنان با تنظیمات پیشفرض کار خواهد کرد. گزینهها باید به عنوان متغیرهای محیطی و توابع تنظیم شوند.
فایلهای پیکربندی (CONFIGURATION FILES)
فایلهای پیکربندی در مسیر زیر ذخیره میشوند: $XDG_CONFIG_HOME/ytfzf (یا $HOME/.config/ytfzf).
conf.sh
یک اسکریپت شل که هنگام اجرای ytfzf فراخوانی و بارگذاری (source) میشود.
subscriptions
فایلی شامل فهرستی از پیوندهای صفحه ویدیوهای کانالهای یوتیوب، مانند:
https://www.youtube.com/channel/UCtMVHI3AJD4Qk4hcbZnI9ZQ
هر پیوند باید در یک خط جداگانه قرار گیرد.
اگر
کانالی
شبیه به
"https://www.youtube.com/c/SomeOrdinaryGamers"
باشد، قبل
از افزودن
آن به فایل
اشتراکهای
خود، دستور
زیر را اجرا
کنید:
ytfzf --channel-link="https://www.youtube.com/c/SomeOrdinaryGamers"
میتوان با قرار دادن 'comment#' در یک خط مستقل یا بعد از یک پیوند، یادداشت یا کامنت ایجاد کرد. به عنوان مثال:
link-to-channel #comment link-to-channel #best channel
scrapers
پوشهای شامل فایلهای اجرایی که وبسایتها را استخراج (scrape) میکنند. برای اطلاعات بیشتر بخش اسکرپرهای سفارشی (CUSTOM SCRAPERS) را ببینید.
گزینههای پیکربندی (CONFIGURATION OPTIONS)
متغیرها (VARIABLES)
فایل conf.sh
عمدتاً
برای تنظیم
متغیرها
برای ytfzf
استفاده
میشود. اگر
متغیری
مقدار
پیشفرض
نداشته
باشد، به
این معنی
است که روی
یک رشته
خالی تنظیم
شده است.
برای تنظیم
یک متغیر در
conf.sh حتماً از
ساختار زیر
استفاده
کنید:
variable_name="value"
علامت $ را در
ابتدای نام
متغیر درج
نکنید.
فایلها و دایرکتوریها
- $cache_dir
- دایرکتوری
ذخیرهسازی
فایلهای
حافظه موقت
(کش).
اکیداً توصیه میشود این متغیر را فقط زمانی تغییر دهید که $__is_submenu برابر 0 باشد، در غیر این صورت ممکن است رفتارهای غیرمنتظرهای رخ دهد.
پیشفرض: $XDG_CACHE_HOME/ytfzf (یا $HOME/.cache/ytfzf) - $hist_file
- فایلی که
تاریخچه
تماشا در آن
نوشته
میشود اگر
$enable_hist برابر 1
باشد.
اکیداً توصیه میشود این مقدار را فقط زمانی تغییر دهید که $__is_submenu برابر 0 باشد، در غیر این صورت ممکن است رفتارهای غیرمنتظره رخ دهد.
پیشفرض: $cache_dir/watch_hist - $search_hist_file
- فایلی که
تاریخچه
جستجو در آن
نوشته
میشود اگر
$enable_search_hist برابر 1
باشد.
پیشفرض: $cache_dir/search_hist
نحوه پخش ویدیوهای انتخابشده.
- $is_detach
- تعیین
میکند که
آیا
پخشکننده
ویدیو از
ترمینال
جدا (detach) شود
یا خیر.
پیشفرض: 0 - $is_audio_only
- تعیین
میکند که
آیا فقط صدا
پخش شود یا
خیر.
پیشفرض: 0 - $url_handler
- توابع یا
برنامههایی
برای
رسیدگی به
ویدیوهای
انتخابشده.
توصیه میشود این متغیر را مستقیماً تنظیم نکنید، بلکه از دستور load_url_handler استفاده کنید.
برای مشاهده فهرست گردانندههای توکار نشانی، بخش URL handlers را ببینید. پیشفرض: multimedia_player - $yt_video_link_domain
- دامنهای
که
ویدیوهای
یوتیوب از
آن پخش
میشوند
(برای odysee و peertube
یا
لیستهای
پخش یوتیوب
اعمال
نمیشود).
اگر خالی رها شود، مقدار آن هر نمونه invidious خواهد بود که ytfzf انتخاب کرده است.
پیشفرض: https://www.youtube.com - $info_to_print
- اطلاعاتی که باید بهجای پخش ویدیو چاپ شوند. گزینههای موجود برای این متغیر عبارتند از:
- L | l | link
- چاپ URL ویدیوهای انتخابشده.
- VJ | vj | video-json
- چاپ ساختار json ویدیوهای انتخابشده.
- J | j | json
- چاپ ساختار json تمام ویدیوها در نتایج جستجو.
- F | f | format
- چاپ فرمت ویدیویی در حال استفاده.
- R | r | raw
- چاپ دادههای ویدیوهای انتخابشده، همانطور که در منو ظاهر میشود.
- $info_wait_action
- عملیاتی که
هنگام
برابر بودن
$info_wait با 1 انجام
میشود.
عملیات معتبر:
- $info_wait
- تعیین
میکند که
آیا پس از
چاپ
اطلاعات،
منتظر
ورودی
بماند یا
خیر.
پیشفرض: 0 - $video_pref
- اولیت
تصویری
مورد
استفاده
برای youtube-dl در mpv.
پیشفرض: bestvideo - $audio_pref
- اولویت
صوتی مورد
استفاده
برای youtube-dl در mpv.
پیشفرض: bestaudio - $ytdl_pref
- اولویت
مورد
استفاده
برای youtube-dl در mpv.
پیشفرض: $video_pref+$audio_pref/best/$video_pref/$audio_pref - $url_handler_opts
- گزینههایی که به گرداننده آدرس اینترنتی پاس داده میشوند؛ بهطور پیشفرض این گزینههای اضافی به mpv منتقل میشوند. این مقدار را میتوان در فایل پیکربندی نیز با url_handler_opts تنظیم کرد.
گزینههای منو
- $interface
- رابط
کاربری یا
منوی مورد
استفاده.
توصیه میشود از این متغیر مستقیماً استفاده نکنید، بلکه از دستور زیر استفاده نمایید: load_interface interface-name
گزینههای معتبر:
- $external_menu_len
- تعداد
ستونها در
interface_ext، (-D)
پیشفرض: 210 - $fzf_preview_side
- جهت نمایش
پیشنمایش
در fzf.
گزینههای معتبر:
- $preview_window_width
- میزان فضای
مورد
استفاده
برای
پیشنمایش
fzf
پیشفرض: 50% - $thumbnail_viewer
- برنامه
مورد
استفاده
برای نمایش
تصاویر
بندانگشتی
پیشنمایش
توصیه میشود مستقیماً از این متغیر استفاده نکنید، بلکه از دستور زیر استفاده کنید: load_thumbnail_viewer viewer
گزینههای معتبر:
- sixel
- iterm2
- kitty
- sway
- wayland
- ueberzug
- chafa
- chafa-16
- استفاده از chafa با ۱۶ رنگ
- chafa-tty
- استفاده از chafa با ۴ رنگ
- catimg
- catimg-256
- استفاده از catimg با ۲۵۶ رنگ
- mpv
- استفاده از
پخشکننده
mpv برای
نمایش
تصاویر
به خوبی با مدیر پنجرههای کاشیکاری (tiling) کار میکند. - imv
- مشابه mpv، اما یک نمایشدهنده اختصاصی تصویر است
- swayimg
- فقط روی کامپوزیتور sway در ویلند کار میکند
- swayimg-hyprland
- فقط روی کامپوزیتور hyprland کار میکند. از swayimg برای رندر تصاویر استفاده میکند.
- پیشفرض: ueberzug
- $show_formats
- تعیین
میکند که
آیا منوی
انتخاب
فرمت نمایش
داده شود یا
خیر.
پیشفرض: 0 - $format_selection_screen
- صفحه انتخاب فرمتی که استفاده خواهد شد. انواع:
پیشفرض: simple
- $format_selection_sort
- مقدار --format-sort
مورد
استفاده در
ytdl.
پیشفرض: height - $enable_submenus
- تعیین
میکند که
آیا
زیرمنوها
فعال شوند
یا خیر.
زیرمنو منویی است که پس از انتخاب یک لیست پخش یا کانال نمایش داده میشود. (در حال حاضر فقط با اسکرپر youtube/invidious پشتیبانی میشود) پیشفرض: 1 - $enable_actions
- تعیین
میکند که
آیا
عملیاتهایی
مانند
زیرمنوها و
دکمه
بازگشت
فعال شوند
یا خیر.
پیشفرض: 1 - $keep_vars
- تعیین میکند که آیا گزینههای ارسالشده به ytfzf به زیرمنوها نیز منتقل شوند یا خیر.
- $enable_back_button
- تعیین میکند که آیا دکمه بازگشت در زیرمنوها فعال باشد یا خیر. پیشفرض: 1
- $submenu_opts
- گزینههای مورد استفاده در زیرمنوها. پیشفرض:
- $submenu_scraping_opts
- منسوخشده (بهجای آن از submenu_opts استفاده کنید) عملیاتی مشابه $submenu_opts انجام میدهد. پیشفرض:
- $is_sort
- تعیین میکند که آیا ویدیوهای استخراجشده در منو بر اساس تاریخ مرتب شوند یا خیر. پیشفرض: 0
- $fancy_subs
- تعیین میکند که آیا بین هر اشتراک جداکنندهای قرار گیرد یا خیر. پیشفرض: 0
- $fancy_subs_left
- متنی که هنگام برابر بودن fancy_subs با 1، در سمت چپ نام کانال نمایش داده میشود. پیشفرض: -------------
- $fancy_subs_right
- متنی که هنگام برابر بودن fancy_subs با 1، در سمت راست نام کانال نمایش داده میشود. پیشفرض: $fancy_subs_left
- $show_thumbnails
- تعیین
میکند که
آیا تصاویر
بندانگشتی
در fzf نمایش
داده شوند
یا خیر.
پیشفرض: 0$async_thumbnails تعیین میکند که آیا تصاویر بندانگشتی به صورت ناهمگام (آسنکرون) بارگیری شوند یا خیر.
بارگیری ناهمگام باعث میشود منو قبل از بارگیری کامل تمام تصاویر بندانگشتی باز شود. پیشفرض: 0 - $skip_thumb_download
- تعیین
میکند که
آیا از
دانلود
تصاویر
بندانگشتی
صرفنظر
شود یا خیر.
پیشفرض: 0 - $thumbnail_quality
- انتخاب
کیفیت
تصاویر
بندانگشتی.
در حال حاضر
فقط از
یوتیوب
پشتیبانی
میکند (از API
سرویس invidious
استفاده
میکند).
این گزینه برای اسکرپر '-cS' کار نمیکند زیرا مستقیماً یوتیوب را اسکرپ میکند نه invidious (بهجای آن از 'SI' استفاده کنید).
برای سرعتهای پایینتر اینترنت، توصیه میشود از پیشفرض استفاده شود.
گزینههای موجود:
- maxres
- maxresdefault
- sddefault
- high (پیشفرض)
- medium
- default
- start
- فریم اول ویدیو (کیفیت پایین)
- middle
- فریم میانی ویدیو (کیفیت پایین)
- end
- فریم پایانی ویدیو (کیفیت پایین)
- $notify_playing
- تعیین
میکند که
آیا هنگام
نزدیک شدن
به زمان پخش
ویدیو
اعلانی
ارسال شود
یا خیر.
پیشفرض: 0 - $is_loop
- تعیین
میکند که
آیا پس از
پایان پخش
ویدیوهای
انتخابشده،
منو نمایش
داده شود یا
خیر.
پیشفرض: 0 - $search_again
- تعیین
میکند که
آیا پس از
بستن fzf
جستجوی
دیگری
انجام شود
یا خیر.
پیشفرض: 0 - $selection_meta_key
- کلید متا
برای
میانبرهایی
که یک ویدیو
را انتخاب
میکنند.
پیشفرض: alt - $download_shortcut
- کلید
میانبر
برای
دانلود
ویدیوهای
انتخابشده.
پیشفرض: $selection_meta_key-d - $video_shortcut
- کلید
میانبر
برای
تماشای
ویدیوهای
انتخابشده.
پیشفرض: $selection_meta_key-v - $audio_shortcut
- کلید
میانبر
برای شنیدن
ویدیوهای
انتخابشده.
پیشفرض: $selection_meta_key-m - $detach_shortcut
- کلید
میانبر
برای
استفاده از
پخشکننده
مجزا (detach).
پیشفرض: $selection_meta_key-e - $print_link_shortcut
- کلید
میانبر
مورد
استفاده
برای چاپ
پیوند.
پیشفرض: $selection_meta_key-l - $show_formats_shortcut
- کلید
میانبر
برای نمایش
فرمتها
پیش از پخش
ویدیو.
پیشفرض: $selection_meta_key-f - $info_shortcut
- کلید
میانبر
برای
دریافت
تمام
اطلاعات
درباره
ویدیوی
انتخابشده.
پیشفرض: $selection_meta_key-i - $search_again_shortcut
- کلید
میانبر
برای انجام
یک جستجوی
دیگر.
پیشفرض: $selection_meta_key-s - $action_meta_key
- کلید متا
برای
میانبرهایی
که عملیاتی
انجام
میدهند.
پیشفرض: ctrl - next_page_action_shortcut
- کلید
میانبر
برای
استخراج
صفحه بعدی.
پیشفرض: $action_meta_key-p - $shortcut_binds
- کلیدهایی
که در fzf
دریافت و
شنود
میشوند.
پیشفرض: Enter,double-click,$download_shortcut, $video_shortcut,$detach_shortcut,$print_link_shortcut,$show_formats_shortcut, $info_shortcut,$search_again_shortcut,$custom_shortcut_binds" - $custom_shortcut_binds
- کلیدهای
میانبر
سفارشی.
بهطور
خودکار به
انتهای $shortcut_binds
افزوده
میشوند.
اگر $shortcut_binds به صورت دستی تنظیم شود، این متغیر نیز باید دستی اضافه شود.
انتخاب خودکار
- $is_auto_select
- تعیین
میکند که
آیا -n
ویدیوی اول
به طور
خودکار
انتخاب
شوند یا خیر
(فقط زمانی
عمل میکند
که $interface=scripting باشد).
پیشفرض: 0 - $is_random_select
- تعیین
میکند که
آیا -n ویدیو
به صورت
تصادفی
انتخاب
شوند یا خیر
(فقط زمانی
عمل میکند
که $interface=scripting باشد).
پیشفرض: 0 - $is_specific_select
- تعیین
میکند که
آیا یک
ویدیوی
مشخص
انتخاب شود
یا خیر (از
$scripting_video_count برای
مشخص کردن
آن استفاده
کنید) (فقط
زمانی عمل
میکند که
$interface=scripting باشد).
پیشفرض: 0 - $scripting_video_count
- تعداد
ویدیوهایی
که باید با -a
یا -r دریافت
شوند.
پیشفرض: 1
اسکرپرها (استخراجکنندهها)
- $scrape
- وبسایتی که باید به صورت پیشفرض استخراج شود. گزینههای پشتیبانیشده فعلی عبارتند از:
- youtube,
- youtube-trending,
- youtube-subscriptions,
- peertube,
- odysee/lbry.
- youtube-playlist,
- youtube-channel,
- invidious-channel,
- video-recommended,
- playlist/json-file,
جستجو به صورت مسیری به یک فایل json خواهد بود که مطابق با ساختار فرمت ویدیویی JSON سازماندهی شده است.
- $multi_search
- تعیین میکند که آیا جستجوی چندگانه فعال باشد یا خیر. پیشفرض: 0
- $search_sort_by
- ویژگی مورد نظر برای مرتبسازی هنگام جستجو.
- $search_upload_date
- جستجوی ویدیوها در بازه زمانی:
- $search_video_duration
- تعیین جستجو برای ویدیوهای کوتاه یا بلند. گزینههای ممکن:
- $search_result_type
- نوع نتایج دریافتی.
- $nsfw
- تعیین
جستجو برای
ویدیوهای
دارای
محتوای
بزرگسالان
(nsfw) در odysee/O.
پیشفرض: false - $search_result_features
- ویژگیهایی که ویدیو باید داشته باشد (جداشده با کاما).
- $search_region
- منطقه جغرافیایی (کد کشور) برای جستجو. پیشفرض: US
- $invidious_instance
- نمونه invidious
مورد
استفاده.
پیشفرض: https://vid.puffyan.us - $pages_to_scrape
- تعداد
صفحات برای
استخراج در
یوتیوب/invidious.
پیشفرض: 1 - $pages_start
- صفحه
آغازین
برای
استخراج.
پیشفرض: 1 - $max_thread_count
- تعداد
رشتههایی
(threads) که
میتوان
هنگام
استخراج
جستجوی
یوتیوب،
لیستهای
پخش و
کانالها
استفاده
کرد. (این
مورد برای
اسکرپر
اشتراکها
اعمال
نمیشود)
پیشفرض: 20 - $odysee_video_search_count
- تعداد
ویدیوها
برای
استخراج در
odysee.
پیشفرض: 30 - $sub_link_count
- تعداد
ویدیوها
برای
استخراج به
ازای هر
کانال
هنگام
دریافت
اشتراکها.
پیشفرض: 2
متفرقه
- $gap_space
- میزان فاصله پس از عنوان در منوی نمایشدهنده بندانگشتی. پیشفرض:' '
- $scrape_search_exclude
- اسکرپرهایی
که نباید
عبارت
جستجو
درخواست
کنند.
دقت داشته باشید که در ابتدا و انتهای رشته یک فاصله قرار دهید.
پیشفرض: youtube-subscriptions S SI T youtube-trending H history - $custom_scrape_search_exclude
- اسکرپرهای
اضافی که
نباید
عبارت
جستجو
درخواست
کنند.
این مقدار بهطور خودکار به انتهای $scrape_search_exclude اضافه میشود.
علاوه بر این، نیازی به فاصله در ابتدا و انتهای آن نیست، فقط بین نام اسکرپرها فاصله بگذارید. پیشفرض: - $gap_space
- تعدادی
فاصله
معادل نصف
عرض
ترمینال
شما
پیشفرض: 115 spaces - $enable_hist
- تعیین
ذخیره و
ردیابی
تاریخچه
تماشا
پیشفرض: 1 - $enable_search_hist
- تعیین
ذخیره و
ردیابی
تاریخچه
جستجو
پیشفرض: 1 - $search_source
- نحوه دریافت عبارت جستجو. مقادیر توکار برای این متغیر عبارتند از:
- args
- استفاده از آرگومانهای خط فرمان به عنوان جستجو (پیشفرض)
- prompt
- درخواست جستجو از طریق یک اعلان (پرامپت)
- hist
- استفاده از تاریخچه جستجو.
- next
- استفاده داخلی برای بهرهگیری از جستجوی بعدی در فهرست هنگامی که multi_search فعال است.
- fn-args
- استفاده داخلی برای بهرهگیری از آرگومانهای ارسالی به تابع به عنوان منبع.
- $log_level
- میزان ثبت اطلاعات اشکالزدایی (دیباگ).
- 2
- ثبت همهچیز
- 1
- ثبت تنها هشدارها و خطاها
- 0
- ثبت تنها خطاها
- پیشفرض: 2
- $thumbnail_debug_log
- فایل لاگ برای اطلاعات اشکالزدایی بندانگشتیها. پیشفرض:/dev/null
- $useragent
- رشته useragent
مورد
استفاده
هنگام
استخراج
وبسایتها.
پیشفرض: "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.152 Safari/537.36" - $ytdl_opts
- گزینههای خط فرمان برای ارسال به youtube-dl هنگام بارگیری.
- $ytdl_path
- مسیر اجرای
youtube-dl یا
نسخههای
فورکشده
از آن برای
دانلود.
اگر yt-dlp نصب باشد، به youtube-dl ترجیح داده میشود.
پیشفرض: youtube-dl
تجزیه گزینهها (Option Parsing)
- $long_opt_char
- نویسه مورد
استفاده
برای
گزینههای
طولانی.
پیشفرض: - - $optstring
- رشته
گزینههای
مورد
استفاده
برای تابع
getopts.
اکیداً توصیه میشود این متغیر را تغییر ندهید، مگر اینکه دقیقاً بدانید چه کاری انجام میدهید.
پیشفرض: ac:de:fhi:lmn:qrstu:xADHI:LS:T:W:$long_opt_char: - $YTFZF_CHECK_VARS_EXISTS
- تعیین
بررسی وجود
قبلی
متغیرها در
محیط هنگام
تنظیم
گزینههای
پیشفرض.
این گزینه را نمیتوان در فایل پیکربندی تنظیم کرد، بلکه باید در شل راهاندازی با دستور export، یا قبل از اجرای ytfzf مشخص شود، مانند: YTFZF_CHECK_VARS_EXISTS=0 ytfzf ...
پیشفرض:1
وضعیت (State)
مقادیر
وضعیت برای
تغییر توسط
کاربر در
نظر گرفته
نشدهاند.
- $__is_submenu
- تعیین میکند که آیا اسکریپت در یک زیرمنو قرار دارد یا خیر.
- $__is_fzf_preview
- تعیین میکند که آیا اسکریپت برای نمایش پیشنمایش fzf در حال اجرا است یا خیر.
- __scrape_count
- شمارش استخراج فعلی که از 1 شروع میشود.
توابع (FUNCTIONS)
گاهی اوقات یک متغیر کافی نیست و در عوض باید توابعی تعریف شوند. برای یافتن مقدار پیشفرض این توابع، کد منبع را با جستجوی عبارت زیر بررسی کنید: function_exists "<function_you_are_looking_for>".
توابع مربوط به منو
- هنگامی که
$interface برابر ext_menu
باشد، این
تابع به جای
fzf فراخوانی
میشود.
این تابع ۱ آرگومان میپذیرد که یک رشته اعلان (prompt) است. - get_sort_by()
- این تابع
برای
دریافت
مقداری که
باید
مرتبسازی
بر اساس آن
انجام شود،
فراخوانی
میشود
هنگامی که
$is_sort برابر 1
باشد.
این تابع خطی به شکل زیر دریافت میکند: "title |channel |duration |views |date |id". - data_sort_fn()
- این تابع
دادههایی
را که به آن
پایپ
میشوند
مرتب
میکند.
این تابع هیچ آرگومانی نمیپذیرد، تمام دادهها به آن پایپ میشوند. - custom_info_wait_action_<text>()
- این تابع
زمانی
فراخوانی
میشود که
یک مقدار
ناشناخته
برای $info_wait_action
داده یا
خوانده شود.
عبارت <text> باید با متن مورد نظر از $info_wait_action جایگزین شود، به عنوان مثال: custom_info_wait_e.
این تابع هیچ آرگومانی نمیپذیرد. - video_info_text()
- این تابع
متن منوی
انتخاب را
چاپ میکند.
باید به یک خط جدید ختم شود،
نشانی url باید آخرین موردی باشد که چاپ میشود.
این تابع هیچ آرگومانی نمیپذیرد، متغیرهای مرتبط در اینجا فهرست شدهاند:
title channel duration views date urlتوصیه میشود اسکریپت را بررسی کنید تا ببینید هر مورد چگونه چاپ میشود.
- thumbnail_video_info_text()
- این تابع
متنی را در
ناحیه
پیشنمایش
fzf هنگام
فعال بودن
تصاویر
بندانگشتی
چاپ میکند.
همهچیز را میتوان به هر شکلی که مایلید چاپ کرد.
این تابع هیچ آرگومانی نمیپذیرد، متغیرهای مرتبط در اینجا فهرست شدهاند:
title channel duration views date url
- thumbnail_video_info_text_<scraper>()
- این تابع همانند thumbnail_video_info_text() برای اسکرپر مشخصشده عمل میکند.
- on_no_thumbnail()
- این تابع زمانی اجرا میشود که هیچ تصویر بندانگشتی یافت نشود
- get_ueberzug_positioning_left()
- این تابع
متغیرهای
$width، $height، $x و $y را
تنظیم
میکند. $x و $y
باید
نشاندهنده
ستونها و
خطوط باشند
نه
پیکسلها.
این متغیرها برای تعیین موقعیت و اندازه تصویر در پیشنمایش fzf هنگامی که $fzf_preview_side برابر left باشد استفاده میشوند.
این تابع ۲ آرگومان میپذیرد:
max_width max_height
- get_ueberzug_positioning_right()
-
این تابع متغیرهای $width، $height، $x و $y را تنظیم میکند. $x و $y باید نشاندهنده ستونها و خطوط باشند نه پیکسلها. این متغیرها برای تعیین موقعیت و اندازه تصویر در پیشنمایش fzf هنگامی که $fzf_preview_side برابر right باشد استفاده میشوند. این تابع ۲ آرگومان میپذیرد:
max_width max_height
- get_ueberzug_positioning_up()
-
این تابع متغیرهای $width، $height، $x و $y را تنظیم میکند. $x و $y باید نشاندهنده ستونها و خطوط باشند نه پیکسلها. این متغیرها برای تعیین موقعیت و اندازه تصویر در پیشنمایش fzf هنگامی که $fzf_preview_side برابر up باشد استفاده میشوند. این تابع ۲ آرگومان میپذیرد:
max_width max_height
- get_ueberzug_positioning_down()
-
این تابع متغیرهای $width، $height، $x و $y را تنظیم میکند. $x و $y باید نشاندهنده ستونها و خطوط باشند نه پیکسلها. این متغیرها برای تعیین موقعیت و اندازه تصویر در پیشنمایش fzf هنگامی که $fzf_preview_side برابر down باشد استفاده میشوند. این تابع ۲ آرگومان میپذیرد:
max_width max_height
- get_swayimg_positioning_left()
-
این تابع متغیرهای $x، $y، $img_w و $img_h را تنظیم میکند. $x و $y باید بر حسب پیکسل باشند. این متغیرها برای تعیین موقعیت و اندازه تصویر در پیشنمایش fzf هنگامی که $fzf_preview_side برابر left باشد استفاده میشوند. این تابع ۸ آرگومان میپذیرد:
img_w img_h max_width max_height max_height term_x term_y col_px_width line_px_height
- get_swayimg_positioning_right()
-
این تابع متغیرهای $x، $y، $img_w و $img_h را تنظیم میکند. $x و $y باید بر حسب پیکسل باشند. این متغیرها برای تعیین موقعیت و اندازه تصویر در پیشنمایش fzf هنگامی که $fzf_preview_side برابر right باشد استفاده میشوند. این تابع ۸ آرگومان میپذیرد:
img_w img_h max_width max_height max_height term_x term_y col_px_width line_px_height
- get_swayimg_positioning_up()
-
این تابع متغیرهای $x، $y، $img_w و $img_h را تنظیم میکند. $x و $y باید بر حسب پیکسل باشند. این متغیرها برای تعیین موقعیت و اندازه تصویر در پیشنمایش fzf هنگامی که $fzf_preview_side برابر up باشد استفاده میشوند. این تابع ۸ آرگومان میپذیرد:
img_w img_h max_width max_height max_height term_x term_y col_px_width line_px_height
- get_swayimg_positioning_down()
-
این تابع متغیرهای $x، $y، $img_w و $img_h را تنظیم میکند. $x و $y باید بر حسب پیکسل باشند. این متغیرها برای تعیین موقعیت و اندازه تصویر در پیشنمایش fzf هنگامی که $fzf_preview_side برابر down باشد استفاده میشوند. این تابع ۸ آرگومان میپذیرد:
img_w img_h max_width max_height max_height term_x term_y col_px_width line_px_height
-
این تابع از کاربر درخواست میکند تا یک عبارت جستجو وارد کند و متغیر $_search را روی آن عبارت تنظیم میکند. این تابع زمانی فراخوانی میشود که ytfzf بدون جستجو اجرا شود (و از رابط پیشفرض استفاده کند). این تابع هیچ آرگومانی نمیپذیرد.
- search_prompt_ext()
-
این تابع از کاربر درخواست میکند تا یک عبارت جستجو وارد کند و متغیر $_search را روی آن عبارت تنظیم میکند. این تابع زمانی فراخوانی میشود که ytfzf بدون جستجو اجرا شود (و از فلگ -D استفاده کند). این تابع هیچ آرگومانی نمیپذیرد.
-
این تابع باید ورودی کاربر را دریافت کرده و آن را برگرداند (echo کند) این تابع با -f و -q فراخوانی میشود، یا در هر زمان دیگری که به یک منوی عمومی نیاز باشد (و رابط پیشفرض استفاده شود). این تابع ۱ آرگومان میگیرد و ورودی را از stdin دریافت میکند 1: اعلانی که باید استفاده شود. stdin: مواردی که باید از بین آنها انتخاب شود (جداشده با خطوط جدید)
-
این تابع باید همان کار quick_menu() را انجام دهد این تابع در همان شرایط quick_menu() اما هنگامی که -D فعال باشد فراخوانی میشود. این تابع ۱ آرگومان میگیرد و ورودی را از stdin دریافت میکند 1: اعلانی که باید استفاده شود. stdin: مواردی که باید از بین آنها انتخاب شود (جداشده با خطوط جدید)
- info_wait_prompt()
-
اعلانی که هنگام فعال بودن info_wait استفاده میشود. این تابع هیچ آرگومانی نمیپذیرد.
- info_wait_prompt_ext()
-
مشابه info_wait_prompt() هنگامی که از -D استفاده شود. این تابع هیچ آرگومانی نمیپذیرد.
- info_wait_prompt_wrapper()
-
فراخوانی info_wait_prompt_<interface_name> این تابع هیچ آرگومانی نمیپذیرد.
- display_text()
-
چاپ متن در خروجی استاندارد. این تابع تعداد نامحدودی از آرگومانها را برای چاپ میپذیرد.
- display_text_ext()
-
چاپ متن در خروجی استاندارد. این تابع تعداد نامحدودی از آرگومانها را برای چاپ میپذیرد.
- display_text_wrapper()
-
فراخوانی display_text_<interface_name> این تابع تعداد نامحدودی از آرگومانها را برای چاپ میپذیرد.
گردانندههای نشانی وب (URL handlers)
یک گرداننده URL تابعی است که به آدرسهای ارائهشده رسیدگی میکند، گردانندههای URL باید این مقادیر اصلاحکننده را لحاظ کنند: $video_pref , $is_audio_only , و $is_detach
متغیرهای اصلاحکننده به درون یک گرداننده URL پایپ میشوند تا امکان نوشتن گردانندههای URL با هر زبان برنامهنویسی فراهم شود. آنها به ترتیبی که در بالا نشان داده شد، جداشده با فاصله پایپ خواهند شد.
- multimedia_player()
-
گردانندهای که به طور پیشفرض فراخوانی میشود. این تابع بسته به اینکه آیا $is_audio_only (-m) فعال است یا خیر، video_player() یا audio_player() را باز میکند. این تابع تعداد نامحدودی آرگومان میپذیرد که هر یک پیوندی به یک ویدیو است.
- video_player()
-
نشانیها را با یک پخشکننده ویدیو پخش میکند این تابع تعداد نامحدودی آرگومان میپذیرد که هر یک پیوندی به یک ویدیو است.
- audio_player()
-
نشانیها را با یک پخشکننده صوتی پخش میکند این تابع تعداد نامحدودی آرگومان میپذیرد که هر یک پیوندی به یک ویدیو است.
- downloader()
-
نشانیها را بارگیری (دانلود) میکند این تابع تعداد نامحدودی آرگومان میپذیرد که هر یک پیوندی به یک ویدیو است.
- get_video_format_<name>()
-
صفحه سفارشی انتخاب فرمت عبارت <name> باید مقدار مورد نظر از $format_selection_screen باشد این تابع باید مقدار ytdl_pref را تنظیم کند این تابع تمامی نشانیها را به عنوان آرگومانهای جداگانه دریافت میکند.
- on_open_url_handler_<ext>()
-
این تابع هنگام فراخوانی open_url_handler، اما قبل از اینکه گرداننده نشانی عملاً باز شود اجرا میگردد. این تابع تعداد نامحدودی آرگومان میپذیرد که هر آرگومان نشانی اینترنتی باز شده است.
- close_url_handler_<name>
-
عبارت <name> باید نام گرداننده نشانی باشد در حالی که - با _ جایگزین شده است. تابعی که پس از اتمام پخش توسط گرداننده نشانی اجرا میشود. هدف این تابع پاکسازی هر تغییری است که گرداننده نشانی انجام داده است.
- after_close_url_handler_<ext>
-
تابعی که پس از اتمام پخش توسط گرداننده نشانی و پس از اجرای close_url_handler_<name> اتفاق میافتد. اگر is_detach برابر با 1 باشد، این تابع ممکن است بلافاصله پس از باز شدن url_handler فراخوانی گردد.
تاریخچه جستجو (Search History)
- handle_search_history()
-
این تابع الحاق عبارت جستجو به فایل جستجوی دادهشده را مدیریت میکند. این تابع ۲ آرگومان میپذیرد:
- 1
-
جستجویی که باید نوشته شود
- 2
-
فایلی که باید به آن الحاق شود.
- parse_search_hist_file()
-
این تابع باید فایل تاریخچه جستجو را تجزیه کرده و هر عبارت جستجو را در یک خط جداگانه چاپ کند. فایل تاریخچه جستجو از طریق stdin به آن ارسال خواهد شد.
- get_search_from_<src>()
-
اگر search_source روی <src> تنظیم شده باشد این تابع فراخوانی خواهد شد. انتظار میرود این تابع متغیر _search را روی یک عبارت جستجو تنظیم کند. این تابع هیچ آرگومانی نمیپذیرد.
- on_search()
-
این تابع هر بار که یک وبسایت استخراج میشود فراخوانی میگردد. این تابع ۲ آرگومان میپذیرد: 1 عبارت جستجو 2 استخراج فعلی - on_search_<search_query>()
- این تابع در
صورت تطابق
جستجوی
فعلی با
<search_query>، هر بار
که یک
وبسایت
استخراج
میشود
فراخوانی
میگردد.
این تابع ۱ آرگومان میپذیرد.
- 1
- استخراج فعلی
متفرقه
- get_requested_info_<name>()
- اگر <name> در
info_to_print وجود
داشته
باشد، این
تابع اجرا
خواهد شد.
این تابع هیچ آرگومانی نمیپذیرد. - handle_playing_notifications()
- این تابع
برای
ویدیوهایی
که در شرف
پخش هستند
یک اعلان
ارسال
میکند.
این تابع تعداد نامشخصی از نشانیها را به عنوان آرگومان میپذیرد. - post_scrape()
- این تابع پس از اتمام کامل تمامی استخراجها اجرا میشود
- post_scrape_<extension-name>()
- مشابه post_scrape() اما برای هر افزونه
- on_opt_parse()
- این تابع پس
از تجزیه یک
گزینه
فراخوانی
میشود و
متغیرها را
بر اساس
گزینههای
ارسالی به
آن تنظیم
میکند. کد
خروج غیر
صفر، رفتار
پیشفرض یک
گزینه خاص
را
بازنویسی
(override) خواهد
کرد.
این تابع ۴ آرگومان میپذیرد:1 گزینه فعلی در حال تجزیه 2 آرگومان گزینه فعلی در حال تجزیه 3 گزینه دستنخورده در حال تجزیه. برای گزینهای مانند -a، این مقدار برابر با $1 خواهد بود. با این حال، برای هر گزینه طولانی --long-option این مقدار برابر با "-" خواهد بود. 4 آرگومان دستنخورده گزینه در حال تجزیه. برای گزینهای مانند -c S، این مقدار برابر با $2 خواهد بود. اما برای هر --long-option=value، این مقدار برابر با -long-option=value خواهد بود. - on_opt_parse_<opt_name>()
- این تابع
قبل از
تجزیه یک
گزینه
فراخوانی
میشود. کد
خروج غیر
صفر، رفتار
پیشفرض یک
گزینه خاص
را
بازنویسی
خواهد کرد.
این تابع ۳ آرگومان میپذیرد:
- 1
- آرگومان گزینه (optarg)
- 2
- گزینه خام
- 3
- آرگومان خام گزینه
- on_post_set_vars()
- این تابع پس
از تنظیم
تمامی
متغیرها و
تجزیه همه
گزینهها
فراخوانی
میشود.
این تابع هیچ آرگومانی نمیپذیرد. - on_clean_up()
- این تابع
زمانی
فراخوانی
میشود که
اسکریپت در
حال
پاکسازی
فایلهای
به جامانده
از جستجو
است، یا
هنگامی که
اسکریپت
خارج
میشود.
این تابع هیچ آرگومانی نمیپذیرد. - usage()
- این تابع
print_help_<ext> را به
ازای هر
افزونه
بارگذاریشده
فراخوانی
میکند.
این تابع هیچ آرگومانی نمیپذیرد. - handle_custom_keypresses()
- این تابع
درون تابع
داخلی handle_keypress()
فراخوانی
میشود. این
تابع باید
مقدار 0 را
برگرداند
تا تابع
پیشفرض handle_keypress()
بازنویسی
نشود.
این تابع ۱ آرگومان میپذیرد:1 کلید فشردهشده. - handle_custom_post_keypresses()
- این تابع
درون تابع
داخلی handle_post_keypress()
فراخوانی
میشود،
این تابع
باید 0 را
برگرداند
تا تابع
پیشفرض
handle_post_keypress()
بازنویسی
نشود.
وظیفه این تابع برگرداندن تغییرات حاصل از آخرین کلید فشردهشده است.
این تابع هیچ آرگومانی نمیپذیرد، و باید کلید فشردهشده را از $keypress_file بخواند. - handle_keypress_*()
- در نام این
تابع باید
"*" با نام
کلید
میانبر
جایگزین
شود، مثلاً:
alt_d
علاوه بر این هر "-" را با "_" جایگزین کنید.
این تابع پس از handle_custom_keypresses() در صورتی که 0 برگردانده باشد و میانبر جزو میانبرهای توکار نباشد فراخوانی میگردد.
این تابع ۰ آرگومان میپذیرد. - handle_post_keypress_*()
- در نام این
تابع باید
"*" با نام
کلید
میانبر
جایگزین
شود، مثلاً:
alt_d
علاوه بر این هر "-" را با "_" جایگزین کنید.
این تابع پس از handle_custom_post_keypresses() در صورتی که 0 برگردانده باشد و میانبر جزو میانبرهای توکار نباشد فراخوانی میگردد.
این تابع ۰ آرگومان میپذیرد. - handle_custom_action()
- این تابع
زمانی
فراخوانی
میشود که
یک عملیات
ناشناخته
(مطابق با
توضیحات
بخش فرمت
ویدیویی JSON)
ارائه شود.
این تابع ۱ آرگومان میپذیرد:عملیات.
کدهای خروج:
- 1
- بازگشت به منو
- 2
- خروج
بندانگشتیهای سفارشی (CUSTOM THUMBNAILS)
تصاویر بندانگشتی سفارشی در مسیر $YTFZF_CUSTOM_THUMBNAILS_DIR قرار دارند. نام تصویر باید به شکل زیر باشد: <video-id>.jpg
برای مشاهده یک مثال، جستجویی با ytfzf انجام دهید و پوشه thumbnails را در مسیر $cache_dir/search بیابید.
سیستم
تلاش
میکند
تصاویر
بندانگشتی
سفارشی را
قبل از
بندانگشتی
رسمی
بارگذاری
کند.
اگر هم
بندانگشتی
سفارشی و هم
بندانگشتی
رسمی وجود
نداشته
باشند، ytfzf
تلاش خواهد
کرد از
تصویر زیر
استفاده
کند: $YTFZF_CUSTOM_THUMBNAILS_DIR/YTFZF:DEFAULT.jpg
.
فرمت ویدیویی جیسان (VIDEO JSON FORMAT)
این قالبی
است که برای
لیستهای
پخش و
اسکرپرهای
سفارشی
استفاده
میشود.
ویدیوها
باید
شیءهایی (objects)
درون یک
لیست
باشند.
کلیدهای الزامی شیء:
ID (string): یک شناسه یکتا برای ویدیو url (string): نشانی اینترنتی ویدیو title (string): عنوان ویدیو scraper (string): اسکرپری که json را ایجاد کرده است (برای بندانگشتیها استفاده میشود)
thumbs (string): یک نشانی به تصویر بندانگشتی channel (string): نام کانال duration (string): مدت زمان ویدیو (استاندارد: [HH:]MM:SS) views (string): تعداد بازدیدهای ویدیو date (string): تاریخ بارگذاری (استاندارد: تاریخ به صورت نسبی نسبت به روز جاری، مثلاً: 3 days ago) action (string): یک عملیات در قالب "action [key=value key2=value2...]"
نمونه JSON:
[
{
"ID": "dQw4w9WgXcQ",
"url": "https://www.youtube.com/watch?v=dQw4w9WgXcQ",
"title": "definitely not never gonna give you up"
}
]
لیستهای پخش (PLAYLISTS)
یک لیست پخش یک فایل json در قالب فرمت ویدیویی JSON است، برای دریافت آسان json فرمتبندیشده یک ویدیو، دستور زیر را اجرا کنید: ytfzf -I VJ <search
نامهای مرتبسازی (SORT NAMES)
نام
مرتبسازی
تابعی در
فایل
پیکربندی
شما یا یک
اسکریپت شل
در مسیر $YTFZF_SORT_NAMES_DIR
است که
توابع زیر
را تعریف
میکند:
data_sort_fn()
get_sort_by()
اسکرپرهای سفارشی (CUSTOM SCRAPERS)
اسکریپتهای
شل
اسکرپرهای
سفارشی در
مسیر $YTFZF_CUSTOM_SCRAPERS_DIR
قرار دارند.
یک اسکرپر
مسئول
استخراج
ویدیوها از
یک وبسایت
و الحاق (APPEND)
آنها به
"$ytfzf_video_json_file" است.
اسکریپت شل
باید با
همان پوسته
/bin/sh شما اجرا
شود.
توابع دیگری که این اسکریپت ممکن است تعریف کند:
on_startup_<name_of_scraper>
این تابع هیچ آرگومانی نمیپذیرد.
thumbnail_video_info_text_<name_of_scraper>
این تابع عملاً همانند thumbnail_video_info_text() عمل میکند.
scrape_next_page_<scraper>
این تابع
باید
ویدیوهای
بیشتری را
از <scraper>
استخراج
کند.
برای اینکه
این تابع به
درستی با alt-p
یا ctrl-p
فراخوانی
شود،
صفحهای که
در آن متوقف
شده است
باید در
مسیر
${session_cache_dir}/<scraper>-current-page
نوشته شود.
که در آن scraper
نام اسکرپر
با
جایگزینی _
به جای - است.
عبارت <scraper> باید همان نامی باشد که در ویژگی "scraper" در فرمت ویدیویی JSON قرار داده شده است.
این تابع زمانی اجرا میشود که کاربر در fzf کلیدهای alt-p را فشار دهد.
این تابع هیچ آرگومانی نمیپذیرد.
handle_custom_action_<action_name>
این تابع به یک عملیات سفارشی رسیدگی میکند.
عبارت <action_name> باید نام عملیات باشد که در آن هر "-" با "_" جایگزین شده است.
این تابع ۱ آرگومان میپذیرد.
- 1
- آرگومانهای عملیات
- 1
- بازگشت به منو
- 2
- خروج
رابطهای کاربری سفارشی (CUSTOM INTERFACES)
رابطهای
کاربری
سفارشی
اسکریپتهای
شل هستند که
در مسیر
$YTFZF_CUSTOM_INTERFACES_DIR قرار
دارند.
یک رابط
کاربری
مسئول این
است که به
کاربر
اجازه دهد
ویدیویی را
از "$ytfzf_video_json_file"
انتخاب
کند، سپس
نشانی(های)
را در "$ytfzf_selected_urls"
بنویسد.
اسکریپت شل
باید با
همان پوسته
/bin/sh شما باشد.
علاوه بر
این،
اسکریپت
باید تابع
زیر را نیز
تعریف کند:
interface_<name_of_interface>
با
جایگزینی _
به جای -.
این تابع
میتواند
خودش
همهچیز را
مدیریت
کند، یا
برنامه
دیگری را که
به هر زبانی
نوشته شده
است برای
مدیریت آن
فراخوانی
کند.
تابع
interface_<name_of_interface> مسیر
فایل json حاوی
تمام
اطلاعات
ویدیوها را
به عنوان
آرگومان
اول دریافت
میکند.
آرگومان
دوم مسیری
به فایلی
خواهد بود
که
نشانیهای
انتخابشده
باید در آن
ذخیره شوند
(جداشده با
خط جدید).
سایر توابعی که اسکرپر ممکن است تعریف کند:
- این تابع
باید همان
کار search_prompt_menu() را
انجام دهد.
این تابع
هیچ
آرگومانی
نمیپذیرد.
اگر این تابع تعریف نشده باشد، تابع search_prompt_menu_ext() به جای آن فراخوانی خواهد شد. - این تابع
باید همان
کار quick_menu() را
انجام دهد.
این تابع
هیچ
آرگومانی
نمیپذیرد.
اگر این تابع تعریف نشده باشد، تابع quick_menu_ext() به جای آن فراخوانی خواهد شد. - display_text_<name_of_interface>()
- این تابع باید متن را به گونهای نمایش دهد که قابل کپی و چسباندن باشد. این تابع تعداد نامحدودی آرگومان میپذیرد.
- ...
- متن برای نمایش
- info_wait_prompt_<name_of_interface>()
- این تابع باید از کاربر بخواهد یکی از گزینههای info_wait_action را انتخاب کند. سپس باید متغیر info_wait_action را برابر با انتخاب کاربر قرار دهد. این تابع هیچ آرگومانی نمیپذیرد.
نمایشدهندههای تصویر بندانگشتی (THUMBNAIL VIEWERS)
نمایشدهندههای سفارشی تصویر بندانگشتی برنامههایی در $YTFZF_THUMBNAIL_VIEWERS_DIR هستند. آرگومانها:
- 1
- یک عملیات، ۴ نوع عملیات وجود دارد: start، stop، view، no-img
- 2
- مسیر فایل تصویر بندانگشتی.
- 3
- موقعیت افقی x (بر حسب ستونها) برای تصویر
- 4
- موقعیت عمودی y (بر حسب خطوط) برای تصویر
- 5
- عرض تصویر (بر حسب ستونها)
- 6
- ارتفاع تصویر (بر حسب خطوط)
- 7
- حداکثر عرض تصویر (بر حسب ستونها) (عرض در حال حاضر این را لحاظ کرده است)
- 8
- حداکثر ارتفاع تصویر (بر حسب خطوط) (ارتفاع در حال حاضر این را لحاظ کرده است)
- 9
- سمتی از
ترمینال
برای نمایش
تصویر (x، y،
عرض و
ارتفاع از
قبل این
مورد را
محاسبه
کردهاند)
این مقدار یکی از حالتهای up، down، left یا right خواهد بود
افزونهها (EXTENSIONS)
افزونهها اساساً فایلهای پیکربندی اضافهای هستند که میتوانید آنها را در فایل پیکربندی خود بارگذاری کنید.
افزونهها باید در $YTFZF_EXTENSIONS_DIR یا $YTFZF_SYSTEM_ADDON_DIR/extensions قرار گیرند.
یک افزونه میتواند هر کاری را که یک فایل پیکربندی انجام میدهد انجام دهد، این شامل اصلاح توابع کمکی پیشفرض در ytfzf نیز میشود (که میتواند اسکریپت را با مشکل مواجه کند).
به
افزونهها
متغیری به
نام $__loaded_path
داده
میشود که
مسیر کامل
افزونه
بارگذاریشده
است.
این ویژگی
هنگام نیاز
به تعیین
مسیر اجرای
فعلی
افزونه
بسیار
کاربردی
است.
برای بارگذاری یک افزونه عبارت زیر را به $YTFZF_CONFIG_FILE اضافه کنید: load_extension name-of-extension
دو افزونه
به طور
خودکار
بارگذاری
میشوند: __ytfzf__
و __ytfzf_multisearch__
افزونه __ytfzf_multisearch__
تنها زمانی
بارگذاری
میشود که
$multi_search برابر 1
باشد.
توابع مربوط به افزونهها، که در آنها <ext> با نام افزونه جایگزین میشود، و همه - با _ جایگزین میگردند:
- on_clean_up_<ext>()
- هنگام خروج اسکریپت اجرا میشود. این تابع هیچ آرگومانی نمیپذیرد.
- on_no_thumbnail_<ext>()
- زمانی که هیچ بندانگشتی یافت نشود اجرا میشود. این تابع هیچ آرگومانی نمیپذیرد.
- after_close_url_handler_<ext>()
- پس از بسته شدن گرداننده نشانی اجرا میشود. این تابع هیچ آرگومانی نمیپذیرد.
- on_post_set_vars_<ext_name>()
- نام ext_name را با نام یک افزونه جایگزین کنید (در حالی که - با _ جایگزین شده است). این تابع مشابه on_post_set_vars است
- ext_on_search_<ext>()
- قبل از استخراج وبسایت، برای هر عبارت جستجو اجرا میشود. این تابع دو آرگومان میپذیرد:
- 1
- جستجوی جاری
- 2
- نوع استخراج جاری
- post_scrape_<ext>()
- پس از پایان استخراج اجرا میشود. این تابع هیچ آرگومانی نمیپذیرد.
- on_init_search_<ext>()
- زمانی که جستجو در حال مقداردهی اولیه است اجرا میشود. این تابع یک آرگومان میپذیرد:
- 1
- عبارت جستجو
توابع کمکی (UTILITY FUNCTIONS)
یک تابع کمکی، هر تابعی است که میتواند در موارد زیر استفاده شود: فایلهای پیکربندی، افزونهها، نمایشدهندههای تصویر بندانگشتی، رابطهای کاربری، نامهای مرتبسازی،
- refresh_inv_instances()
- این تابع پاسخ دریافتی از "https://api.invidious.io/instances.json?sort_by=type,health,api" را در مسیر $cache_dir/instances.json مینویسد. این تابع هیچ آرگومانی نمیپذیرد.
- get_invidious_instances()
- این تابع نمونههای invidious دارای api را دریافت کرده و آنها را به صورت خطبهخط چاپ میکند. این تابع هیچ آرگومانی نمیپذیرد.
- create_sorted_video_data()
- این تابع یک رشته مرتبشده jsonl از ویدیوهای استخراجشده را چاپ میکند که میتواند در یک رابط کاربری مورد استفاده قرار گیرد این تابع هیچ آرگومانی نمیپذیرد.
- run_interface()
- تابع interface_<interface_name> را اجرا کرده و متغیرهای $ytfzf_video_json_file و $ytfzf_selected_urls را به آن پاس میدهد این تابع هیچ آرگومانی نمیپذیرد.
- download_thumbnails()
- اگر $skip_thumb_download
برابر 0
باشد، این
تابع
تصاویر
بندانگشتی
را دانلود
میکند. این
تابع تعداد
نامحدودی
آرگومان با
قالببندی
زیر دریافت
میکند:
<url_name>;<id>
این تابع باید <url_name> را دانلود کرده و آن را با نام <id>.jpg در پوشه $thumb_dir ذخیره کند. - prepare_for_set_args()
- این تابع متغیر $OLD_IFS را برابر با $IFS قرار میدهد، سپس $IFS را روی آرگومان اول تنظیم میکند، و در پایان دستور set -f را اجرا میکند. این تابع یک آرگومان میپذیرد.
- 1
- مقدار جدید IFS.
- end_of_set_args()
- این تابع مقدار IFS را به OLD_IFS بازمیگرداند. این تابع هیچ آرگومانی نمیپذیرد.
- modify_ifs()
- این تابع مقدار IFS را روی آرگومان اول تنظیم میکند. این تابع یک آرگومان میپذیرد.
- 1
- مقداری که باید برای IFS تنظیم شود.
- end_modify_ifs()
- این تابع متغیر $IFS را لغو (unset) میکند. این تابع هیچ آرگومانی نمیپذیرد.
- mul_str()
- این تابع تکرار رشته را انجام میدهد، سپس نتیجه را در stdout چاپ میکند. این تابع دو آرگومان میپذیرد.
- 1
- رشته مورد نظر.
- 2
- تعداد دفعات تکرار رشته.
- remove_ansi_escapes()
- این تابع دنبالههای گریز ansi را از رشتهای که از طریق stdin ارسال شده حذف میکند. سپس این تابع رشته نهایی را در stdout چاپ میکند. این تابع هیچ آرگومانی نمیپذیرد.
- do_an_event_function()
- این تابع در صورت وجود یک رویداد، آن را اجرا میکند، سپس event_<ext> را برای تمام افزونههای بارگذاریشده در $loaded_extensions (در صورت وجود) اجرا میکند. این تابع تعداد نامحدودی آرگومان میپذیرد.
- 1
- نام رویداد.
- ...
- آرگومانهایی که باید به رویداد پاس داده شوند
- detach_cmd()
- این تابع یک دستور را از ترمینال جدا (detach) میکند. این تابع تعداد نامحدودی آرگومان میپذیرد.
- 1
- دستوری که باید اجرا شود
- ...
- آرگومانهایی که به دستور ارسال میشوند.
- source_scrapers()
- این تابع تکتک اسکرپرهای موجود در $scrape را بررسی کرده و فایل مربوطه را سورس میکند. پس از سورس کردن فایل، در صورتی که $__is_fzf_preview برابر 0 باشد، تابع on_startup_<scrape> را اجرا میکند. این تابع مسیرهای زیر را برای فایل مورد نظر بررسی میکند:
- $YTFZF_CUSTOM_SCRAPERS_DIR
- $YTFZF_SYSTEM_ADDON_DIR/scrapers
- $YTFZF_CUSTOM_SCRAPERS_DIR
- $YTFZF_SYSTEM_ADDON_DIR/scrapers
- add_commas()
- این تابع به یک عدد کاما اضافه میکند (به شیوه استاندارد تفکیک ارقام). این تابع عدد را از stdin دریافت میکند و نتیجه را در stdout چاپ میکند. این تابع هیچ آرگومانی نمیپذیرد.
- command_exists()
- این تابع بررسی میکند که آیا یک دستور وجود دارد یا خیر. این تابع در صورت وجود دستور با کد وضعیت 0 و در صورت عدم وجود با 1 خارج میشود. این تابع ۱ آرگومان میپذیرد.
- 1
- دستوری که باید بررسی شود
- get_key_value()
- این تابع
مقدار یک
کلید را در
یک رشته
کلید-مقدار
(key_value) دریافت
میکند.
رشته کلید-مقدار به صورت زیر قالببندی شده است:<sep>key=value<sep>... که در آن <sep> آرگومان سوم است، و به صورت پیشفرض فاصله میباشد.
اگر فقط یک جفت کلید-مقدار وجود داشته باشد، همچنان باید <sep> در هر دو طرف آن قرار داشته باشد.
این تابع پس از چاپ مقدار در stdout، متغیر $KEY_VALUE را روی مقدار آن کلید تنظیم میکند.
این تابع در صورتی که مقدار خالی نباشد با کد وضعیت 0 و اگر خالی باشد با 1 خارج میشود.
این تابع سه آرگومان میپذیرد.
- 1
- رشته کلید-مقدار.
- 2
- کلیدی که باید مقدار آن پیدا شود.
- 3 (اختیاری)
- جداکنندهای که هر جفت کلید-مقدار را تفکیک میکند. به طور پیشفرض این مقدار یک فاصله است.
- title_str()
- این تابع حرف اول یک رشته را به حرف بزرگ تبدیل کرده و آن را در stdout چاپ میکند. این تابع یک آرگومان میپذیرد.
- 1
- رشته مورد نظر.
- shuf()
- این تابع تنها زمانی ایجاد میشود که برنامه shuf نصب نباشد. این تابع باید همانند عملکرد پایه shuf رفتار کند
- print_info()
- این تابع در صورتی که $log_level بزرگتر یا مساوی 2 باشد، اطلاعات را در stderr چاپ میکند. این تابع یک آرگومان میپذیرد.
- 1
- متن برای چاپ
- print_warning()
- این تابع در صورتی که $log_level بزرگتر یا مساوی 1 باشد، یک هشدار را در stderr چاپ میکند. این تابع یک آرگومان میپذیرد.
- 1
- متن برای چاپ
- print_error()
- این تابع در صورتی که $log_level بزرگتر یا مساوی 0 باشد، پیام خطا را در stderr چاپ میکند. این تابع یک آرگومان میپذیرد.
- 1
- متن برای چاپ
- clean_up()
- این تابع
تمام
زیرفرآیندهای
ytfzf(1) را خاتمه
میدهد، و
در صورتی که
$session_cache_dir وجود
داشته باشد
و $keep_cache برابر
0 باشد،
دایرکتوری
$session_cache_dir را حذف
میکند.
در پایان، رویداد on_clean_up را اجرا میکند. این تابع هیچ آرگومانی نمیپذیرد. - is_relative_dir()
- بررسی میکند که آیا یک رشته یک مسیر نسبی است یا خیر. این تابع در صورت نسبی بودن مسیر با کد وضعیت 0 و در غیر این صورت با 1 خارج میشود. این تابع یک آرگومان میپذیرد.
- 1
- مسیری که باید بررسی شود
- die()
- این تابع دستور print_error را با یک رشته اجرا کرده و سپس با یک کد وضعیت خارج میشود. این تابع دو آرگومان میپذیرد.
- 1
- وضعیت خروج
- 2
- متنی که باید با print_error چاپ شود.
- trim_url()
- این تابع
خطوط را از stdin
میخواند،
و نشانی url را
از آنها در
stdout چاپ
میکند.
خطوط باید
به فرمت زیر
قالببندی
شده باشند:
text....|url
این تابع هیچ آرگومانی نمیپذیرد. - get_search_from_source()
- این تابع بسته به منبع، مقدار _search را روی یک عبارت جستجو تنظیم میکند. این تابع تعداد نامحدودی آرگومان میپذیرد.
- 1
- منبعی که جستجو باید از آن دریافت شود.
- ...
- آرگومانهایی که در صورت برابر بودن $1 با fn-args به عنوان جستجو استفاده میشوند، یا اگر 1 مطابقت نداشته باشد، ... به get_search_from_<1> داده میشود.
- load_extension()
- این تابع یک
افزونه را
به متغیر
$loaded_extensions اضافه
کرده و
افزونه را
سورس
میکند. این
تابع
مکانهای
زیر را برای
یافتن
افزونه
بررسی
میکند:
$YTFZF_EXTENSIONS_DIR $YTFZF_SYSTEM_ADDON_DIR/extensions $PATH
این تابع با همان کد خروجی که هنگام بارگذاری افزونه برگردانده شد خارج میشود. این تابع یک آرگومان میپذیرد.
- 1
- افزونهای که باید بارگذاری شود
- extension_is_loaded()
- این تابع بررسی میکند که آیا یک افزونه بارگذاری شده است یا خیر. این تابع یک آرگومان میپذیرد.
- 1
- افزونهای که باید بررسی شود
- load_sort_name()
- این تابع یک
sort-name را
بارگذاری
میکند. این
تابع
مکانهای
زیر را برای
یافتن sort-name
بررسی
میکند:
$YTFZF_SORT_NAMES_DIR $YTFZF_SYSTEM_ADDON_DIR/sort-names
این تابع در صورتی که sort-name وجود نداشته باشد با کد وضعیت 1 خارج میشود، در غیر این صورت با همان کد وضعیتی که هنگام بارگذاری sort-name حاصل شد خارج خواهد شد. این تابع یک آرگومان میپذیرد.
- 1
- نام sort-name برای بارگذاری
- load_url_handler()
- این تابع
متغیر $url_handler
را روی یک url-handler
تنظیم
میکند. این
تابع
مکانهای
زیر را برای
یافتن url-handler
بررسی
میکند:
$PATH، و توابع موجود در فایل پیکربندی $YTFZF_URL_HANDLERS_DIR $YTFZF_SYSTEM_ADDON_DIR/url-handlers
اگر url-handler وجود نداشته باشد، این تابع die را اجرا میکند. این تابع یک آرگومان میپذیرد.
- 1
- گرداننده url برای بارگذاری
- load_interface()
- این تابع
متغیر $interface
را روی یک
رابط
کاربری
تنظیم
میکند. اگر
$1 برابر با
ext، scripting یا ""
باشد، $interface
روی 1 تنظیم
میشود. این
تابع
مکانهای
زیر را برای
یافتن رابط
کاربری
بررسی
میکند:
$1 $YTFZF_CUSTOM_INTERFACES_DIR $YTFZF_SYSTEM_ADDON_DIR/interfaces
این تابع یک آرگومان میپذیرد.
- 1
- رابط کاربری برای بارگذاری
- load_thumbnail_viewer()
- این تابع
متغیر $thumbnail_viewer
را روی یک
thumbnail-viewer تنظیم
میکند. اگر
$i برابر با
یک
نمایشدهنده
بندانگشتی
توکار
باشد، $thumbnail_viewer
روی آن
تنظیم
میشود. در
غیر این
صورت،
مکانهای
زیر بررسی
میشوند:
$1 $YTFZF_THUMBNAIL_VIEWERS_DIR $YTFZF_SYSTEM_ADDON_DIR
این تابع یک آرگومان میپذیرد.
- 1
- نمایشدهنده تصویر بندانگشتی برای بارگذاری
- _get_request()
- این تابع درخواستی به سرور ارسال کرده و پاسخ را چاپ میکند. این تابع تعداد نامحدودی آرگومان میپذیرد.
- 1
- نشانی اینترنتی برای ارسال درخواست
- ...
- آرگومانهایی برای ارسال به curl(1)
- _get_real_channel_link()
- این تابع
پیوند یک
کانال
یوتیوب را
که در
قالبهای
زیر باشد
تبدیل
میکند:
@user https://www.youtube.com/user/<channel-name> https://www.youtube.com/c/<channel-name>
این تابع یک آرگومان میپذیرد.
- 1
- پیوندی که باید تبدیل شود
| 2021 September | ytfzf 2.0 |