Замена исходников в проекте.

  • Автор темы Автор темы Tyrendd
  • Дата начала Дата начала

Tyrendd

New Member
22 Мар 2018
2
0
1
29
Добрый день.
Заранее извиняюсь, если создаю дубликат какой-то темы. Похожие искал, не нашёл. Лишь некая статья от 2015 года, где @Michael оставлял две ссылки на ныне мёртвые страницы на гитхаб.
Столкнулся со следующей задачей: необходимо заменить в нескольких проектах исходники, не трогая итемы.
Старые и новые файлы имеют одинаковые названия, разница только в формате.
Сначала пробовал в файле проекта в текстовом редакторе через find and replace тупо переписать форматы на необходимые. Но этот метод не сработал. В файле проекта и кириллица выглядит абракадаброй, но и латиноязычные файлы в проекте не читаются, offline. Думаю идентификаторы iguid; guid ругаются.
Через интерфейс нужную строчку не нашёл. А то что нашёл работает с одним конкретным итемом или исходником, не анализируя их.
В ручную же их заменять достаточно абсурдно. Фиг с ним, с точным таймингом расположения итемов в сессиях живых записей. По привязке можно выпрямить. Там 210± итемов под замену, и разница в названии, в основном, в нескольких цифрах от даты и времени компиляции объекта. С ума сойти можно, пока выберешь нужный.
Кто-нибудь знает, как можно решить эту задачу?
Заранее благодарен.
 
Если имена совпадают (быстро) или вы можете произвести соответствие одних файлов другим(долго), то вручную не проблема, при загрузке проекта.
В ином случае откуда рипер узнает что должно чему соответствовать
 
@Tyrendd, Личного опыта нет такого, но есть идея. Была у меня утилитка, под названием renamer если не ошибаюсь. Думаю нагуглить не сложно. Идея в том, чтобы с помощью этой утилитки переименовать файлы скопом. Если я правильно понял у них другое расширение и возможно, проблема может быть в нём. Все файлы проекта из папки удалить, а когда рипер спросит где файлы, скормить ему папку с новыми файлами, с соответствующими именами. Есть вероятность что прокатит.
 
Старые и новые файлы имеют одинаковые названия, разница только в формате.
Там 210± итемов под замену,
Айтемов 210 или исходников ?
Если айтемов 210, а исходников мало, то вот скрипты в помощь, первый выделяет все исходники в проекте по выделенному айтему, второй заменяет все на нужный файл.
Archie_Item; Select all items in project with sources of selected items.lua
Archie_Item; Set source for all of selected items.lua


Если исходников много, то вот:
Слаживаешь все новые файлы в какую нибудь папку.
Имена старых и новых файлов должны быть полностью одинаковые!!! За исключением расширения.
Выделяешь в проекте айтемы которые будут заменятся
Запускаешь скрипт и в появившемся окне указываешь путь папки, в которой все новые файлы, жмешь ок.
Все.
Принцип работы скрипта:
Скрипт проверяет имя исходника у выделенного айтема, затем ищет файл в папке, которую вы указали, с таким же именем и если находит, то подменяет его в айтеме.
PHP:
    local retval, path = reaper.GetUserInputs('',1,'Directory:,extrawidth=300','');
    if not retval then return end;
    newPath = reaper.EnumerateFiles(path,0);
    if not newPath then return end;



    for i = 1, reaper.CountSelectedMediaItems(0) do;
   
        local SelItem = reaper.GetSelectedMediaItem(0,i-1);
        local take = reaper.GetActiveTake(SelItem);
        local source = reaper.GetMediaItemTake_Source(take)
        local filenamebuf = reaper.GetMediaSourceFileName(source,'');
        local filenamebuf2 = filenamebuf:match('.*[/\\](.+)%..*$')
        if filenamebuf2 and filenamebuf2 ~= '' then;
       
            for i2 = 1,math.huge do;
                local newFile = reaper.EnumerateFiles(path,i2-1);
                if not newFile or newFile == '' then;
                    break;
                else;
                    local newFile2 = newFile:match('(.+)%..*$');
                    if newFile2 == filenamebuf2 then;
                        reaper.BR_SetTakeSourceFromFile(take,path.."/"..newFile,true);
                        break;
                    end;
                end
            end;
       
        end;
    end;


    --------------------------------------------------
    local ShowStatusWindow = reaper.SNM_GetIntConfigVar("showpeaksbuild",0);
    if ShowStatusWindow == 1 then;
        reaper.SNM_SetIntConfigVar("showpeaksbuild",0);
    end;
    ---
    reaper.Main_OnCommand(40047,0)
    ---
    if ShowStatusWindow == 1 then;
        reaper.SNM_SetIntConfigVar("showpeaksbuild",1);
    end;
    --------------------------------------------------
    reaper.UpdateArrange();
 
Последнее редактирование:
@Tyrendd, да, если файлов мало, то можно вообще открыть файл проекта в текстовом редакторе и заменить форматы. Файл проекта рипера - обычный текстовый файл.
 
@Tyrendd, да, если файлов мало, то можно вообще открыть файл проекта в текстовом редакторе и заменить форматы. Файл проекта рипера - обычный текстовый файл.
Сначала пробовал в файле проекта в текстовом редакторе через find and replace тупо переписать форматы на необходимые. Но этот метод не сработал. В файле проекта и кириллица выглядит абракадаброй, но и латиноязычные файлы в проекте не читаются
 
  • Like
Реакции: vitalker
Как я архивирую проект:
1) сначала все файлы из wav конвертирую в wv (WavPack), делаю это фубаром (нравится, быстро, надёжно), новые файлы с таким же названием как исходники, но с другим расширением, размещаются там же, где исходники;
2) затем удаляю все исходники в корзину (можно как вариант переместить их в другую папку, поменять/удалить расширение, добавить какой-то символ в названии с помощью группового переименования в любом коммандере);
3) запускаю проект, он начинает ругаться, что не находит файл (он же их по очереди загружает). Нажимаю кнопку BROWSE, в поле поиска/названия удаляю в расширении одну букву - "A" чтобы из WAV получилось WV открываю папку, где лежат новые файлы (и лежали старые), нажимаю ОК. Вуаля!
4) проверяю, всё-ли играет, после этого можно очистить корзину.
Уже несколько лет так делаю, подменяю файлы сотнями и даже тысячами, терабайты уже поменял.

P.S. Если файлы раскиданы по дискам, можно сначала собрать их в одну папку. Это можно либо из Project Bay сделать, либо пересохранить проект в другую папку, поставив галку "Copy All Media to Project Directiry"
 
Столкнулся со следующей задачей: необходимо заменить в нескольких проектах исходники, не трогая итемы.
Короче решение оказалось простым:

Можно ещё View->Track manager и там вкладка Source media, выбрать файл, правой кнопкой и Replace in project->All instances->Browse for file.
 

Вложения

  • replace.gif
    replace.gif
    632,5 KB · Просмотры: 108
  • Like
Реакции: Alx_g
Короче решение оказалось простым:

Можно ещё View->Track manager и там вкладка Source media, выбрать файл, правой кнопкой и Replace in project->All instances->Browse for file.

Да, действительно. Несколько похожий способ решил мою проблему. Указать в качестве нового и "использовать поохожие" 1 файл из проекта всё е лучше, чем все.


Если исходников много, то вот:
Слаживаешь все новые файлы в какую нибудь папку.
Имена старых и новых файлов должны быть полностью одинаковые!!! За исключением расширения.
Выделяешь в проекте айтемы которые будут заменятся
Запускаешь скрипт и в появившемся окне указываешь путь папки, в которой все новые файлы, жмешь ок.
Все.
Принцип работы скрипта:
Скрипт проверяет имя исходника у выделенного айтема, затем ищет файл в папке, которую вы указали, с таким же именем и если находит, то подменяет его в айтеме.

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

Всем спасибо за участие, вы мне очень помогли.
 
@sytch, а почему просто не пересохранить проект с конвертацией в wv?
Можно и так, но тогда придётся пересохранять в другую папку. К тому же конвертор в Foobar2000 автоматом выбирает разрядность, что удобно, т.к. в проекте могут быть файлы c разной длиной слова.
1589963084493.png
Я, кстати, был бы очень рад, если бы в Рипере была бы функция "Конвертировать медиа в формат *... И ЗАМЕНИТЬ В ПРОЕКТЕ", а то первая половина есть, а второй нет.
1589963381227.png
Прикрутить бы такой экшн в Project Bay - было бы отлично!
 
  • Like
Реакции: vit.kin

Сейчас просматривают