Pull to refresh

Comments 23

Автор молодец, а для интересующихся like me подробности о команде curl ( rus-linux.net/MyLDP/internet/curlrus.html )
rus-linux.net/MyLDP/internet/curlrus.html
очень странно парсер ссылки отобразил.
Я-бы не советовал класть сей скрипт в /usr/local/bin, если в системе несколько пользователей, лучше положить куда-нибудь в ~/bin, ведь в скрипте указаны логин и пароль… да, и ещё права выставить лучше 700
А я иногда пишу в тви из vim, с помощью плагина twitvim. Там же можно просматривать и таймлайн, и реплаи, постить строку из буффера или весь буффер полностью.
Вот к Хабру прикрутить такое: постить и получать фидбэк.
Добавляем проверку на 140 символов:
len=`echo "$*" | wc -c`
if [ $len -gt  140 ]; then
        echo "Too much"
        exit 1
fi

Или так

len=`echo "$*" | wc -c`

if [ $len -gt 140 ]; then
s=«Too much»
`notify-send «Twitter» "$s"`
exit 1
fi
А какая кодировка должна быть при отправке? Если системная локаль UTF-8 — русские буквы не отображаются нормально.
У меня и с русским все работает нормально, локаль UTF-8, Ubuntu 8.10.
Есть одна проблема в скрипте, при добавлении записи у которой в конце восклицательный знак, скрипт не хочет работать
Лучше использовать одинарные кавычки вместо двойных.
Или временно выключить histexpand командой set +H
экранируйте его слэшем — вот так\!
в данном случае этот способ не подходит
А можно сделать так:

#!/bin/bash
len=`echo $3 | wc -c`
if [ $len -gt 140 ]; then
echo "Too much"
exit 1
fi

curl --basic --user $1:$2 \
--data status=$3 'http://twitter.com/statuses/update.xml' -o /dev/null;


Кидаем скрипт куда-нибудь в /usr/local/bin и запускаем вот так:

$ tw user pass 'Тест'
Лучше сделать вот так, тогда скрипт для всех подойдет и не надо каждый раз набирать логин/пасс
#!/bin/bash

FILE="$HOME/.twitter"

if [! -f $FILE ]; then
echo "$FILE: does not exists."
echo «Please create this file with following contents:»
echo "[login]"
echo "[pass]"
echo «Where [login] and [pass] is your twitter login/password.»
echo «Make sure you DO NOT have an empty line in the end of file and/or spaces at start/end of the lines or authentication may fail.»
exit 1
elif [! -r $FILE ]; then
echo "$FILE: can not be read"
exit 2
fi

if [ `stat -c %a $FILE` -ne 600 ]; then
echo «WARNING: file chmod is not safe! Will try to fix.»
exec chmod 0600 $FILE
fi

LOGIN=`head -n 1 $FILE` # quick'n'dirty =)
PASSWORD=`tail -n 1 $FILE`

MSG="$*"

MSGLEN=`echo $3 | wc -c`
if [ $MSGLEN -gt 140 ]; then
echo «Too much text»
exit 3
fi

curl --basic --user $LOGIN:$PASSWORD \
--data status=$MSG 'http://twitter.com/statuses/update.xml' -o /dev/null;
Небольшая поправочка:
MSGLEN=`echo $MSG | wc -c`
Люди добрые, объясните, почему строчка
curl --basic --user twitteruser:123456789 \ --data status=«test post» 'http://twitter.com/statuses/update.xml' -o /dev/null;
мгновенно отправляет пост в твиттер а вышеприведенный скрипт с учтённой правкой выделывается.

# ./tw.sh test post
curl: (6) Couldn't resolve host ' --data'
curl: (6) Couldn't resolve host 'status=test'
<?xml version=«1.0» encoding=«UTF-8»?>
/statuses/update.xml
This method requires a POST.


еще и думает около минуты…

Sign up to leave a comment.

Articles