Sida 1 av 1

Twitterskript

Postat: 14 jun 2009, 15:16
av micke_nordin
Jag har skrivit ett skript som gör att man kan twittra från bash:
spara skriptet som "twitter.sh" och kör sedan:

Kod: Markera allt

chmod +x twitter.sh
sedan startas skriptet med

Kod: Markera allt

./twitter.sh
Du behöver curl och xmlstarlet för att det skall funka

Kod: Markera allt

#!/bin/bash
###############################
# Dependencies:               #              
# curl xmlstarlet             #
#                             #
# Written by:                 #
# Micke Nordin 2009           #
#                             # 
# License:                    #
# http://sam.zoy.org/wtfpl/   #
#                             #  
# Note:                       #
# You can create a file       #
# called user.inc and place   #
# it in the same dirctory     #
# as twitter.sh.              #
# This file should contain    #
# your username and password  #
# in this format:             #
#                             #
# username=your_username_here #
# password=your_password_here #
#                             #
# and nothing else            #
###############################

function auth()
{
	filename="`dirname $0`/user.inc"
	if [ -f "$filename" ];  then
		source "$filename"
	else
		echo "Enter username: "
		read username
		echo "Enter password (nothing is shown on screen): "
		stty_orig=`stty -g`
		stty -echo
		read password
		stty $stty_orig
	fi
}

function tweet()
{
	echo "What is your tweet?"
	read tweet
	curl -u $username:$password -d status="$tweet" http://twitter.com/statuses/update.xml &> /dev/null
}

function update()
{
	curl -g -u $username:$password http://twitter.com/statuses/friends_timeline.rss -s | xmlstarlet sel --template --match "/rss/channel/item/description" --value-of "." --nl
}

function public()
{
	curl -g http://twitter.com/statuses/public_timeline.rss -s | xmlstarlet sel --template --match "/rss/channel/item/description" --value-of "." --nl
}

function follow()
{
	echo "Who do you want to follow?"
	read follower
	curl -u $username:$password -d "" "http://twitter.com/friendships/create/$follower.xml?follow=true" &> /dev/null
}

function unfollow()
{
	echo "Who do you want to unfollow?"
	read unfollower
	curl -u $username:$password -d "" "http://twitter.com/friendships/destroy/$unfollower.xml" &> /dev/null
}

function loop()
{
	choice=""
	while [ "$choice" != "q" ]; do
		echo "choose f/h(help)/p/q/s/t/u"
		read choice
		if [ "$choice" = "f" ]; then
			follow
		fi 
		if [ "$choice" = "h" ]; then
			echo "f = follow
h = this cruft
p = see public timeline
q = quit
s = send tweet
t = see updates on your timeline
u = unfollow"
		fi 
		if [ "$choice" = "t" ]; then
			update
		fi 
		if [ "$choice" = "p" ]; then
			public
		fi 
		if [ "$choice" = "s" ]; then
			tweet  
		fi 
		if [ "$choice" = "u" ]; then
			unfollow  
		fi 
	
	done
}

auth
loop
exit 0
Lite mer om skriptet finns på min blogg: http://mickenordin.se/blog/index.php/20 ... er-i-bash/

edit: har uppdaterat skriptet

Re: Twitterskript

Postat: 14 jun 2009, 17:01
av Rasmus
Det där var taskigt, nu blev man ju tvungen att regga sig på twitter också :P

Utanför ämnet: Äntligen har det hänt!

Kod: Markera allt

rasmus@rasmus-desktop:~$ sudo apt-get install curl xmlstarlet

We trust you have received the usual lecture from the local System
Administrator. It usually boils down to these three things:

    #1) Respect the privacy of others.
    #2) Think before you type.
    #3) With great power comes great responsibility.

[sudo] password for rasmus: 
Jag vet inte hur texten kom dit, men jag har länge velat ha den.[/ot]

Re: Twitterskript

Postat: 14 jun 2009, 17:24
av micke_nordin
Nu har jag lagt till lite mer funktionalitet i skriptet, så att man även kan följa/avfölja användare vi skriptet. Koden uppdaterad ovan och om man laddar hem det via bloggen.

/Micke

Re: Twitterskript

Postat: 14 jun 2009, 17:27
av micke_nordin
Utanför ämnet: vad blev det för användarnamn? Så kan jag testa den nya follow-funktionen på dig menar jag ;D
Själv heter jag Micke_Nordin på twitter
/Micke

Re: Twitterskript

Postat: 14 jun 2009, 17:31
av Rasmus
micke_nordin skrev:Utanför ämnet: vad blev det för användarnamn? Så kan jag testa den nya follow-funktionen på dig menar jag ;D
Själv heter jag Micke_Nordin på twitter
/Micke
Utanför ämnet: PieOrPaj
Är twitter som en blogg? jag ska alltså skriva vad jag vill?


Grymt skript f.ö.

Re: Twitterskript

Postat: 14 jun 2009, 19:01
av micke_nordin
Rasmus skrev: Utanför ämnet: PieOrPaj
Är twitter som en blogg? jag ska alltså skriva vad jag vill?


Grymt skript f.ö.
Utanför ämnet: Twitter brukar kallas "mikroblogg" och ja, du skall skriva vad du vill.

Kul att du gillar det!

/Micke

Re: Twitterskript

Postat: 17 jun 2009, 07:59
av Dimi
Som sagt grymt skript. Nu kanske det blir lite fart på mitt twittrande. Om inte annat så är det bara skönt att bli av med det klegiga och fula interfacet!!!

Så här ska det se ut. :-)

Re: Twitterskript

Postat: 18 jun 2009, 10:09
av micke_nordin
Jag har utökat skriptet lite och nu finns det faktiskt två, man kan hämta en tarball här: http://mickenordin.se/files/twitter.tar.gz

twitter_friends.sh är ett skript som automatiskt hämtar uppdateringar från friends-timeline varannan minut.

Hashtag sökningen i twitter.sh är inte riktigt implementerad ännu och hämtar bara xml.

Jag kör bägge skripten samtidigt i screen, så att jag har uppdateringar i en flik och kan twittra från den andra.

/Micke

Re: Twitterskript

Postat: 18 jun 2009, 18:23
av Dimi
micke_nordin skrev:Jag har utökat skriptet lite och nu finns det faktiskt två, man kan hämta en tarball här: http://mickenordin.se/files/twitter.tar.gz

twitter_friends.sh är ett skript som automatiskt hämtar uppdateringar från friends-timeline varannan minut.

Hashtag sökningen i twitter.sh är inte riktigt implementerad ännu och hämtar bara xml.

Jag kör bägge skripten samtidigt i screen, så att jag har uppdateringar i en flik och kan twittra från den andra.

/Micke
Hej Micke roliga grejer det här. För min del blir det tyvärr ingen skillnad på om jag väljer f eller l i twitter_friends.sh skriptet.

Undrar om jag gör någe knas.

Mvh

Re: Twitterskript

Postat: 18 jun 2009, 18:32
av micke_nordin
Dimi skrev: Hej Micke roliga grejer det här. För min del blir det tyvärr ingen skillnad på om jag väljer f eller l i twitter_friends.sh skriptet.

Undrar om jag gör någe knas.

Mvh
Mycket konstigt, när du väljer l (litet L), så pipas nämligen outputen via tac till stdout, vilket vänder på ordningen. Testa det här i terminalen:
echo "test 1
test 2
test 3" | tac


Du skall få denna output:
test 3
test 2
test 1


/micke

Re: Twitterskript

Postat: 24 jun 2009, 16:56
av Dimi
micke_nordin skrev:
Dimi skrev: Hej Micke roliga grejer det här. För min del blir det tyvärr ingen skillnad på om jag väljer f eller l i twitter_friends.sh skriptet.

Undrar om jag gör någe knas.

Mvh
Mycket konstigt, när du väljer l (litet L), så pipas nämligen outputen via tac till stdout, vilket vänder på ordningen. Testa det här i terminalen:
echo "test 1
test 2
test 3" | tac


Du skall få denna output:
test 3
test 2
test 1


/micke
Japp det stämmer när jag skriver ovan nämnda kod så får jag den output som du visar. Konstigt att det inte fungerar i skriptet då. Hur som helst så är det inte något som stör mig. Tänkte bara det var värt att notera. Tycker ändå att skriptet gör twitter roligare att använda.

mvh

Re: Twitterskript

Postat: 26 jun 2009, 09:32
av micke_nordin
Ja det är märkligt, för det funkar för mig. Du kan ju testa att leta efter | tac i skriptet och kolla så att koden ser rätt ut, det kan ju vara så att du fått tag på nån äldre version av skriptet eller nått.

/Micke

Re: Twitterskript

Postat: 26 jun 2009, 10:52
av Dimi
micke_nordin skrev:Ja det är märkligt, för det funkar för mig. Du kan ju testa att leta efter | tac i skriptet och kolla så att koden ser rätt ut, det kan ju vara så att du fått tag på nån äldre version av skriptet eller nått.

/Micke
Alltså jag är verkligen inte rätt person att granska kod. Jag kan inte ens stava till vitt bälte när det gäller programering. Men jag finner ändå ett stycke med innehållet

Kod: Markera allt

   else   
                curl -g -u $username:$password http://twitter.com/statuses/friends_timeline.rss -s | xmlstarlet sel --template --match "/rss/channel/item/description" --value-of "." --nl | tac
        fi
det verkar ju vara rätt i mina ögon, men som sagt, jag är ingen kodgranskare av rang :-).

Re: Twitterskript

Postat: 26 jun 2009, 13:12
av micke_nordin
Märkligt, works for me, som sagt.

/Micke