Найти адреса сайта и преобразовать в гиперссылки.

  • Автор темы Автор темы Dorm
  • Дата начала Дата начала
Статус
Закрыто для дальнейших ответов.
Ув. скриптописатели, возможно "прикрутить" присвоение символьного стиля к вышеуказанному скрипту? Устроит без меню. Просто понятное название.

Script to make hyperlinks live | Adobe Community
 
к найденному применяет стиль "hyper"
поменяйте на свой при желании )

Код:
#target Indesign
// --- Assumptions --- //
//https://forums.adobe.com/message/3187356
// One document open
// Hyperlinks not necessarily labeled by character style
// You want all hyperlinks to be live
// Typesetter sometimes inserts a space or return in middle of URL to force a line break
// Space or return comes before period or slash per style manual
var doc=app.activeDocument;
// Compress stray www .'s
fn_grepChange (doc, "www(\\s|\\n)\\.", "www.", "hyper");
// Normalize to http://
fn_grepChange (doc, "(http\\:\\/\\/)?(www\\.([\\w\\-\\?\\=\\&]+[\\.\\/]?)+)", "http://$2", "hyper");
// Remove ( space or return ) before ( period or slash )
fn_grepChange (doc, "(http\\:\\/\\/([\\w\\-\\?\\=\\&]+[\\.\\/]?)+)(\\s|\\n)(\\.|\\/)", "$1$4", "hyper");
// ---- Main ---- //
app.changeGrepPreferences = NothingEnum.nothing;
app.findGrepPreferences = NothingEnum.nothing;
app.findChangeGrepOptions.includeFootnotes = true;
// Regardless of character styles, find hyperlinks
app.findGrepPreferences.findWhat = 'http\\:\\/\\/([\\w\\-\\?\\=\\&]+[\\.\\/]?)+';
var found = app.findGrep();
var report = "found and activated "+String(found.length)+" links\n";
// make hyperlinks
for(i=0; i<found.length; i++)
    {
        var report = report+found[i].contents+"\n";
        
        var source = doc.hyperlinkTextSources.add(found[i]);    
        var dest=doc.hyperlinkURLDestinations.add(found[i].contents);
            
        doc.hyperlinks.add(source,dest, {visible:false, name:found[i].contents+"("+(i+1)+")"});
    
    }
// If exporting to PDF set include hyperlinks to true
PDFExportPreset.includeHyperlinks = true;
// To export to html, choose File-->Export for Dreamweaver
app.changeGrepPreferences = NothingEnum.nothing;
app.findGrepPreferences = NothingEnum.nothing;
alert ( report );
function fn_grepChange (myDocument, regexFind, regexChange, cStyle) {
    // purpose: execute a grep change, otherwise known as a regex s///;
    //Initialize.
    app.findGrepPreferences = NothingEnum.nothing;
    app.changeGrepPreferences = NothingEnum.nothing;
    //Set the find options.
    app.findChangeGrepOptions.includeFootnotes = true;
    app.findChangeGrepOptions.includeHiddenLayers = false;
    app.findChangeGrepOptions.includeLockedLayersForFind = false;
    app.findChangeGrepOptions.includeLockedStoriesForFind = false;
    app.findChangeGrepOptions.includeMasterPages = false;
    //Search and change
    app.findGrepPreferences.findWhat = regexFind;
    app.changeGrepPreferences.changeTo = regexChange;
    app.changeGrepPreferences.appliedCharacterStyle= cStyle;
    myDocument.changeGrep();
   
    //Clear the find/change preferences.
    app.findGrepPreferences = NothingEnum.nothing;
    app.changeGrepPreferences = NothingEnum.nothing;
    }

// --- end of script --- //
 
  • Спасибо
Реакции: LeonidB
Добрый день. Реанимирую тему, т.к. проблема актуальна.
Скрипт, написанный в посте 22 хорош, но некоторые вещи не делает:
1. Не делает гиперлинки в https (https://en.wikisource.org/wiki)
2. "Спотыкается" о конструкцию
Код:
http://vip-basa.fvds.ru/%D0%9F%D1%80%D0%B8%D0%BA%D0%B0%D0%B7+%D0%9C%D0%9E+%D0%A0%D0%A4+%E2%84%96+250%D0%B4%D1%81%D0%BF.html.
В гипелинк вносится только http://vip-basa.fvds.ru/.

Помогите, пжл, скрипт доработать.

Спс
 
Может быть стоит создать копию скрипта и в нем "http\\:" заменить на "https\\:"??? И запускать два скрипта последовательно
 
Может быть стоит создать копию скрипта и в нем "http\\:" заменить на "https\\:"? И запускать два скрипта последовательно
Зачем же так грубо? Насколько я в грепе чайник, но, имхо, в скрипте во всех греп запросах поменять буквосочетание
Код:
http
на
Код:
htt\(p|ps)
как то так
 
  • Спасибо
Реакции: izrukvruki
Добрый день. Реанимирую тему, т.к. проблема актуальна.
Скрипт, написанный в посте 22 хорош, но некоторые вещи не делает:
1. Не делает гиперлинки в https (https://en.wikisource.org/wiki)

В трёх местах (строки 13, 15 и 21) заменить http на https? (со знаком вопроса).

2. Спотыкается о конструкцию
Код:
http://vip-basa.fvds.ru/%D0%9F%D1%80%D0%B8%D0%BA%D0%B0%D0%B7+%D0%9C%D0%9E+%D0%A0%D0%A4+%E2%84%96+250%D0%B4%D1%81%D0%BF.html.
В гиперлинк вносится только http://vip-basa.fvds.ru/.

21-ю строку дать в виде:
Код:
app.findGrepPreferences.findWhat = 'https?\\:\\/\\/([\\w\\-\\?\\=\\&]+([\\.\\/]?[\\%\\+]?)+)+';
 
Выдает ошибку: Выделенный объект уже используется другой гиперссылкой.


Не по теме:
Картинку прикрепить не получается
 
Я может чего-то не понимаю?

В теме обсуждается скрипт, который я прошу дописать (пост 22). Мне коллега в посте №26 предложил заменить строки в этом скрипте. При запуске измененного скрипта, появляется ошибка (пост 27). Прикрепить изображение в "интуитивном" интерфейсе форума у меня не получилось.

Теперь ситуация прояснилась?
 
Выдает ошибку: Выделенный объект уже используется другой гиперссылкой.[/off]
Да, действительно, повторный запуск скрипта (хоть с изменениями, хоть без них) приводит к этой ошибке. Попробуйте в новом файле, а с этой ошибкой, возможно, удастся разобраться позже с помощью автора скрипта :)
 
Теперь ситуация прояснилась?
Нет, не прояснилась
В самом скрипте такое предупреждение, повторяю, отсутствует, не видя его сложно ванговать, откуда оно берется вообще.
Прикрепить изображение в "интуитивном" интерфейсе форума у меня не получилось.
Все абсолютно интуитивно - внизу справа средняя кнопочка по русски называется "Загрузить изображение" Если же у вас даже, внезапно, огнелис изувеченный флеш-играми, то в окне ввода текста работает обычное Ctrl-C - Ctrl-V
 
Нет, не прояснилась
В самом скрипте такое предупреждение, повторяю, отсутствует, не видя его сложно ванговать, откуда оно берется вообще.

Все абсолютно интуитивно - внизу справа средняя кнопочка по русски называется "Загрузить изображение" Если же у вас даже, внезапно, огнелис изувеченный флеш-играми, то в окне ввода текста работает обычное Ctrl-C - Ctrl-V

Только благодаря Вашим стараниям, я догадался где искать кнопочку "Загрузить картинку" . Спс. Я редко пользуюсь форумом, потому эту процедуру пока еще не довел до автоматизма.

Вот так у меня выглядит интерфейс форума, и из-за этого возникло непонимание (Без имени-2.jpg).

Вернемся к скрипту и к вопросу по нему:
1. Есть скрипт в посте 22.
2. Как его необходимо изменить, что бы скрипт делал, то что описано в посте 23.

Спс
 

Вложения

  • Без имени-2.jpg
    Без имени-2.jpg
    112.8 КБ · Просм.: 1 061
По поводу кнопочки (а именно ее отсутствия) вот
А по поводу скрипта - и где картинка искомого предупреждения?
 
Сам скрипт
Код:
#target Indesign
// --- Assumptions --- //
//https://forums.adobe.com/message/3187356
// One document open
// Hyperlinks not necessarily labeled by character style
// You want all hyperlinks to be live
// Typesetter sometimes inserts a space or return in middle of URL to force a line break
// Space or return comes before period or slash per style manual
var doc=app.activeDocument;
// Compress stray www .'s
fn_grepChange (doc, "www(\\s|\\n)\\.", "www.", "hyper");
// Normalize to http://
fn_grepChange (doc, "(htt\(p|ps)\\:\\/\\/)?(www\\.([\\w\\-\\?\\=\\&]+[\\.\\/]?)+)", "http://$2", "hyper");
// Remove ( space or return ) before ( period or slash )
fn_grepChange (doc, "(htt\(p|ps)\\:\\/\\/([\\w\\-\\?\\=\\&]+[\\.\\/]?)+)(\\s|\\n)(\\.|\\/)", "$1$4", "hyper");
// ---- Main ---- //
app.changeGrepPreferences = NothingEnum.nothing;
app.findGrepPreferences = NothingEnum.nothing;
app.findChangeGrepOptions.includeFootnotes = true;
// Regardless of character styles, find hyperlinks
app.findGrepPreferences.findWhat = 'htt\(p|ps)\\:\\/\\/([\\w\\-\\?\\=\\&]+[\\.\\/]?)+';
// app.findGrepPreferences.findWhat = 'https?\\:\\/\\/([\\w\\-\\?\\=\\&]+([\\.\\/]?[\\%\\+]?)+)+';
var found = app.findGrep();
var report = "found and activated "+String(found.length)+" links\n";
// make hyperlinks
for(i=0; i<found.length; i++)
    {
        var report = report+found[i].contents+"\n";
        
        var source = doc.hyperlinkTextSources.add(found[i]);   
        var dest=doc.hyperlinkURLDestinations.add(found[i].contents);
            
        doc.hyperlinks.add(source,dest, {visible:false, name:found[i].contents+"("+(i+1)+")"});
    
    }
// If exporting to PDF set include hyperlinks to true
PDFExportPreset.includeHyperlinks = true;
// To export to html, choose File-->Export for Dreamweaver
app.changeGrepPreferences = NothingEnum.nothing;
app.findGrepPreferences = NothingEnum.nothing;
alert ( report );
function fn_grepChange (myDocument, regexFind, regexChange, cStyle) {
    // purpose: execute a grep change, otherwise known as a regex s///;
    //Initialize.
    app.findGrepPreferences = NothingEnum.nothing;
    app.changeGrepPreferences = NothingEnum.nothing;
    //Set the find options.
    app.findChangeGrepOptions.includeFootnotes = true;
    app.findChangeGrepOptions.includeHiddenLayers = false;
    app.findChangeGrepOptions.includeLockedLayersForFind = false;
    app.findChangeGrepOptions.includeLockedStoriesForFind = false;
    app.findChangeGrepOptions.includeMasterPages = false;
    //Search and change
    app.findGrepPreferences.findWhat = regexFind;
    app.changeGrepPreferences.changeTo = regexChange;
    app.changeGrepPreferences.appliedCharacterStyle= cStyle;
    myDocument.changeGrep();
  
    //Clear the find/change preferences.
    app.findGrepPreferences = NothingEnum.nothing;
    app.changeGrepPreferences = NothingEnum.nothing;
    }

// --- end of script --- //

Ошибка:
 

Вложения

  • Без имени-3.jpg
    Без имени-3.jpg
    110.5 КБ · Просм.: 821
Воот!!!!
Этого я от вас и добивался столько времени!
Попробуйте взять кусок кода
Код:
for(i=0; i<found.length; i++)
    {
        var report = report+found[i].contents+"\n";
        
        var source = doc.hyperlinkTextSources.add(found[i]);   
        var dest=doc.hyperlinkURLDestinations.add(found[i].contents);
            
        doc.hyperlinks.add(source,dest, {visible:false, name:found[i].contents+"("+(i+1)+")"});
    
    }
и заменить на
Код:
for(i=0; i<found.length; i++)
try    {
        var report = report+found[i].contents+"\n";
        
        var source = doc.hyperlinkTextSources.add(found[i]);   
        var dest=doc.hyperlinkURLDestinations.add(found[i].contents);
            
        doc.hyperlinks.add(source,dest, {visible:false, name:found[i].contents+"("+(i+1)+")"});
    
    } catch ( err) {};
 
  • Спасибо
Реакции: LeonidB
Статус
Закрыто для дальнейших ответов.