Страница 49 из 52

Добавлено: Вс авг 04, 2019 00:40
Dimsok
Правильно могут быть переименованы 2 субтитра - название фильма.rus.srt/sub/ass/ssa, название фильма.eng.srt/sub/ass/ssa. Если они существуют, то ничего не делать.

Не понимаю, что значит вперемешку. Переименовываться ведь по одному файлу за раз будет.

Добавлено: Вс авг 04, 2019 07:16
Flasher
Какая разница, за сколько раз?
В папке 5 файлов:
1. Name.sub
2. Name.rus.srt
3. Name.rus.ass
4. Name.eng.ssa
5. Name.mp4

Под курсором первый файл. Следуя твоей логике, eng добавлять нельзя, т.к. остальные имеют только 2 rus вместо 3-х, но и rus нельзя, т.к. уже есть srt с такой добавкой. Вот тебе и гремучая смесь.

Добавлено: Пн авг 05, 2019 02:02
Dimsok
Я же пишу, что в таком случае ничего не делать (если уже имеются 2 (или 3) и 4).

Добавлено: Пн авг 05, 2019 12:57
Flasher
Хотя бы один из трёх.
Так это ответ был? Я подумал, что это повторение моих слов (аля цитата). Т.е. я правильно понимаю, что игнорировать в случае, когда есть любая из 6-ти комбинаций eng/rus? "2 (или 3) и 4" — это уже не то же самое, и ты об этом нигде не писал.

Добавлено: Вт авг 06, 2019 01:11
Dimsok
Хотя бы один из трёх.
Я думал, это было достаточно ясно. Ну посуди, зачем мне 2 (и тем более 3) разных типа субтитров для одного языка. Это же не марки или монеты.

Добавлено: Вт авг 06, 2019 01:20
Flasher
Ты мне на 2-й вопрос ответишь, ядрён батон? )
Зачем/не зачем — скрипту без разницы. Нужно отшить ложные срабатывания.

Добавлено: Вт авг 06, 2019 01:38
Dimsok
Если есть любая из 4-х комбинаций rus (srt,sub,ass,ssa), именовать в eng того расширения, которое имеет выделенный файл субтитра. Если и eng имеет уже любую из 4-х комбинаций, то ничего не делать.

Добавлено: Вт авг 06, 2019 02:52
Flasher
Тестируй:

Код: Выделить всё

'============================ VBS =============================
' Переименование базового имени субтитра под курсором в базовое
' имя одиночного видеофайла и подходящее языковое расширение

' Параметры: %V <маска расширений видео>
' Пример:    %V *.avi;*.mkv;*.mp4
'==============================================================
Option Explicit: Dim Items, F, BN, Ext, sExt, Exts, E
With CreateObject("Scripting.FileSystemObject")
  F = WSH.Arguments(0)
  If .FileExists(F) Then
    Set Items = CreateObject("Shell.Application")._
    NameSpace(.GetParentFolderName(F)).Items
    Items.Filter 8256, WSH.Arguments(1)
    If Items.Count <> 1 Then WSH.Quit
    BN = .GetBaseName(Items.Item(0).Path)
    Ext = .GetExtensionName(F) : Set Items = Nothing
    If InStr("|srt|sub|ass|ssa|", "|" & LCase(Ext) & "|") Then
    If InStr("|.eng|.rus|", "|" & Right(LCase(BN), 4) & "|") = 0 Then
      sExt = ".rus." : Exts = "srt sub ssa ass"
      For Each E in Split(Exts)
        If .FileExists(BN & sExt & E) Then sExt = ".eng." : Exit For
      Next
      If sExt = ".eng." Then
        For Each E in Split(Exts)
          If .FileExists(BN & sExt & E) Then WSH.Quit
        Next
      End If
      .GetFile(F).Name = BN & sExt & Ext
    End If
    End If
  End If
End With

Добавлено: Вт авг 06, 2019 03:01
Dimsok
Строка 22
Символ 76
Предполагается наличие ')'

Добавлено: Вт авг 06, 2019 03:07
Flasher
Исправил.

Добавлено: Вт авг 06, 2019 03:16
Dimsok
Имя субтитра не меняется, только добавляется языковая метка.
11.srt в 11.rus.srt, хотя имя видео другое совсем.

Добавлено: Вт авг 06, 2019 03:24
Flasher
Мда. Не заглянул в первый код. См. сейчас.

Добавлено: Вт авг 06, 2019 03:29
Dimsok
Работает как и в первом варианте. При наличии файл.avi и файл.rus.srt выделенному субтитру sub даётся тот же язык - файл.rus.sub (а надо eng).

Добавлено: Вт авг 06, 2019 03:41
Flasher
Обновил.

Добавлено: Вт авг 06, 2019 03:49
Dimsok
На том же примере, если файл.rus.sub srt, то:
Строка 30
Символ 8
Файл уже существует.