Веб-сайт загрузки и заливка формируются из командной строки

Используя командную строку Linux (оболочка Bash) мне нравится загружать определенный веб-сайт в моем браузере (обычно Firefox, но другой был бы в порядке, а также был бы длинен, это работает в соответствии с Linux), и заполните предопределенную форму некоторыми данными. На самом деле это должно работать от Make-файла. Большинство данных формы статично и будет храниться как переменные в Make-файле, просто некоторые поля должны быть заполнены вручную прежде вручную отправить форму.

Я знаю, как загрузить рассматриваемый веб-сайт из использования командной строки:

firefox <URL>

Но там не кажется никакой возможностью заполнить форму автоматически переменными, данными на командной строке. Существует ли плагин, исполняемый файл или JavaScript, который позволяет мне делать это? Любые предложения и подсказки приветствуются. Я не возражаю кодировать некоторый JavaScript.

4
задан 20.03.2011, 00:33

2 ответа

См. https://github.com/bard/mozrepl/wiki. MozRepl позволяет Вам соединиться с помощью telnet, в сочетании с netcat, это было бы точно, в чем Вы нуждаетесь.

3
ответ дан 07.12.2019, 20:08

Я решил это теперь использование сценария Механика, который копирует параметры URL в форму. Вызовы Make-файла firefox с URL включая параметры.

Это работает на мои потребности. Некоторые улучшения были бы необходимы для более сложного входа, т.е. некоторого кодирования URL.

Пользовательский сценарий:

// ==UserScript==
// @name           Fill CTAN upload form
// @namespace      http://www.scharrer-online.de/namespace/
// @description    Fills the CTAN upload form with the data provided as URL variables
// @include        http://*.ctan.org/upload.html*
// @require        http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js
// ==/UserScript==

//var $ = unsafeWindow.jQuery;

// From http://papermashup.com/read-url-get-variables-withjavascript/
// Added: decodeURI
function getUrlVars() {
    var vars = {};
    var parts = window.location.href.replace(/[?&]+([^=&]+)=([^&]*)/gi, function(m,key,value) {
        vars[key] = decodeURI(value);
    });
    return vars;
}

var vars = getUrlVars();

for (name in vars) {
    $("input[name=" + name + "]").val(vars[name]);
    $("select[name=" + name + "]").find("option:selected").removeAttr('selected');
    $("select[name=" + name + "]").find("option[value=" + vars[name] + "]")
            .attr('selected','selected');
}

if ('DoNotAnnounce' in vars) {
    var val = vars['DoNotAnnounce'].toLowerCase();
    if (val == '1' || val == 'yes' || val == 'true') {
        $("input[name=DoNotAnnounce]").attr('checked','checked');
    }
}

Make-файл:

# CTAN Upload
CTAN=http://dante.ctan.org/upload.html
CONTRIBUTION=filemod
VERSION=
NAME=John Doe
EMAIL=john.doe@somewhere.com
SUMMARY=Updated to ${VERSION}:
DIRECTORY=/macros/latex/contrib/${CONTRIBUTION}
DONOTANNOUNCE=
ANNOUNCEMENT=
NOTES=
LICENCE=free
FREEVERSION=lppl
#FILE= # can't be set because of security limitations

upload: ctanify
    firefox 'http://dante.ctan.org/upload.html?contribution=${CONTRIBUTION}&version=${VERSION}&name=${NAME}&email=${EMAIL}&summary=${SUMMARY}&directory=${DIRECTORY}&DoNotAnnounce=${DONOTANNOUNCE}&announce=${ANNOUNCEMENT}&notes=${NOTES}&license=${LICENCE}&freeversion=${FREEVERSION}' &
3
ответ дан 07.12.2019, 20:08

Теги

Похожие вопросы