Показать сообщение отдельно
Старый 22.04.2005, 20:27     # 939
tolbazbI
Junior Member
 
Аватар для tolbazbI
 
Регистрация: 06.11.2004
Адрес: Россия, Башкортостан, Толбазы
Сообщения: 67

tolbazbI Путь к славе только начался
Вот доработанный вариант VBS-скрипта для интеграции Reget в контекстное меню браузера Opera.

Основные отличия от старого варианта скрипта:

Теперь скрипт корректно обрабатывает искаженные ссылки, которые часто публикуются на различных форумах с целью умышленно скрыть прямую ссылку. Например искаженная ссылка вида _hххp://server.com/file.zip. при помощи скрипта будет преобразованна в корректную, полностью работоспособную ссылку вида http://server.com/file.zip и сразу же отправится на закачку в Reget. Примеры преобразований искаженных ссылок в нормальные:

_http:// - преобразует в http:// и отправит на закачку в Reget
hххp:// - преобразует в http:// и отправит на закачку в Reget
_фтп:// - преобразует в ftp:// и отправит на закачку в Reget
fxp:// - преобразует в ftp:// и отправит на закачку в Reget
и т.п.
Также удаляются знаки препинания в самом конце ссылки(после имени файла), которые во всех случаях являются лишними.

Чтобы использовать возможность закачки искаженных ссылок, необходимо прописать эти строчки в файл вашего меню, в секцию [Hotclick Popup Menu]:


Item, "Загрузить с помощью ReGet" = Execute program, "wscript", "AddLinkReGet.vbs %l %T %u"
Item, "Загрузить с помощью ReGet (Без подтверждения)" = Execute program, "wscript", "AddLinkReGet.vbs %l %T %u NoConfirm"


Создайте файл AddLinkReGet.vbs с этим содержанием:
Code:

desc=""

ref=""

addr=""

Confirm=True

if WScript.Arguments.Count>1 then

desc=WScript.Arguments(1)

end if

if WScript.Arguments.Count>2 then

ref=WScript.Arguments(2)

end if

if WScript.Arguments.Count>3 then

if CStr(WScript.Arguments(3))="NoConfirm" then Confirm=False

end if

addr = WScript.Arguments(0)

if Left(addr,1) = "_" then addr = Right(addr,Len(addr)-1)

If Right(addr,1) = "." Then addr = Left(addr,Len(addr)-1)

If Right(addr,1) = "," Then addr = Left(addr,Len(addr)-1)

If Right(addr,1) = "?" Then addr = Left(addr,Len(addr)-1)

If Right(addr,1) = "!" Then addr = Left(addr,Len(addr)-1)

If Right(addr,1) = ":" Then addr = Left(addr,Len(addr)-1)

If Right(addr,1) = ";" Then addr = Left(addr,Len(addr)-1)

addr = Replace(addr,"hxxp://", "http://")

addr = Replace(addr,"hххp://", "http://")

addr = Replace(addr,"хттп://", "http://")

addr = Replace(addr,"h__p://", "http://")

addr = Replace(addr,"fxp://", "ftp://")

addr = Replace(addr,"фтп://", "ftp://")

if Left(addr,4) = "ftp." then

addr = "ftp://" + addr

elseif Left(addr,7) <> "http://" and Left(addr,6) <> "ftp://" then

addr = "http://" + addr

end if

AddLink WScript.Arguments(0), desc, ref, Confirm

Sub AddLink(ByVal Url, ByVal Info, ByVal Refer, ByVal Confirm)

Set Catch = CreateObject("ReGetDx.ReGetDownloadApi")

With Catch

.Info = Info

.Confirmation = Confirm

.Url = Url

.Referer = Refer

.AddDownload

End With

End Sub




Переместите этот файл в папку браузера Opera

В своём файле меню в разделы [Link Popup Menu], [Image Link Popup Menu], [Hotclick Popup Menu] добавьте следующие строки:

Item, "Загрузить с помощью ReGet" = Execute program, "wscript", "AddLinkReGet.vbs %l %T %u"
Item, "Загрузить с помощью ReGet (Без подтверждения)" = Execute program, "wscript", "AddLinkReGet.vbs %l %T %u NoConfirm"

Сохраняем файл меню в кодировке UTF-8.

Что получаем:

В контекстном меню ссылки появляются команды "Загрузить с помощью Reget" и "Загрузить с помощью ReGet (Без подтверждения)". Выполняют они одно и то же (запускают, если не запущен, ReGet и добавляют в него закачку), но вторая не выводит никаких диалоговых окон.
При добавлении заполняются свойства закачки Referrer (Ссылка) и Описание. Выделите какой нибудь текст на странице перед вызовом контекстного меню, он будет служить описанием.
Теперь можно закачивать "текстовые" ссылки, в том числе намеренно искаженные приставками "_http://", "hxxp://" и тому подобные. А в тех ссылках, где не указан протокол, скрипт автоматически добавит приставку "http://" или "ftp://".
tolbazbI вне форума