Twitterskript

Här diskuterar vi skal, kommandon och klassiska linuxverktyg.
Användarvisningsbild
micke_nordin
Inlägg: 1539
Blev medlem: 21 aug 2008, 17:03
OS: Ubuntu
Utgåva: 22.10 Kinetic Kudu
Kontakt:

Twitterskript

Inlägg 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
Senast redigerad av 1 micke_nordin, redigerad totalt 14 gånger.
Användarvisningsbild
Rasmus
Inlägg: 2291
Blev medlem: 07 sep 2006, 18:33
OS: Ubuntu
Utgåva: 24.04 Noble Numbat LTS
Ort: Svalsta

Re: Twitterskript

Inlägg 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]
Användarvisningsbild
micke_nordin
Inlägg: 1539
Blev medlem: 21 aug 2008, 17:03
OS: Ubuntu
Utgåva: 22.10 Kinetic Kudu
Kontakt:

Re: Twitterskript

Inlägg 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
Användarvisningsbild
micke_nordin
Inlägg: 1539
Blev medlem: 21 aug 2008, 17:03
OS: Ubuntu
Utgåva: 22.10 Kinetic Kudu
Kontakt:

Re: Twitterskript

Inlägg 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
Användarvisningsbild
Rasmus
Inlägg: 2291
Blev medlem: 07 sep 2006, 18:33
OS: Ubuntu
Utgåva: 24.04 Noble Numbat LTS
Ort: Svalsta

Re: Twitterskript

Inlägg 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.ö.
Användarvisningsbild
micke_nordin
Inlägg: 1539
Blev medlem: 21 aug 2008, 17:03
OS: Ubuntu
Utgåva: 22.10 Kinetic Kudu
Kontakt:

Re: Twitterskript

Inlägg 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
Användarvisningsbild
Dimi
Inlägg: 703
Blev medlem: 24 dec 2006, 00:04
OS: Ubuntu
Utgåva: Vet inte/ingen utgåva passar
Ort: Stockholm

Re: Twitterskript

Inlägg 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. :-)
Användarvisningsbild
micke_nordin
Inlägg: 1539
Blev medlem: 21 aug 2008, 17:03
OS: Ubuntu
Utgåva: 22.10 Kinetic Kudu
Kontakt:

Re: Twitterskript

Inlägg 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
Användarvisningsbild
Dimi
Inlägg: 703
Blev medlem: 24 dec 2006, 00:04
OS: Ubuntu
Utgåva: Vet inte/ingen utgåva passar
Ort: Stockholm

Re: Twitterskript

Inlägg 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
Användarvisningsbild
micke_nordin
Inlägg: 1539
Blev medlem: 21 aug 2008, 17:03
OS: Ubuntu
Utgåva: 22.10 Kinetic Kudu
Kontakt:

Re: Twitterskript

Inlägg 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
Användarvisningsbild
Dimi
Inlägg: 703
Blev medlem: 24 dec 2006, 00:04
OS: Ubuntu
Utgåva: Vet inte/ingen utgåva passar
Ort: Stockholm

Re: Twitterskript

Inlägg 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
Användarvisningsbild
micke_nordin
Inlägg: 1539
Blev medlem: 21 aug 2008, 17:03
OS: Ubuntu
Utgåva: 22.10 Kinetic Kudu
Kontakt:

Re: Twitterskript

Inlägg 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
Användarvisningsbild
Dimi
Inlägg: 703
Blev medlem: 24 dec 2006, 00:04
OS: Ubuntu
Utgåva: Vet inte/ingen utgåva passar
Ort: Stockholm

Re: Twitterskript

Inlägg 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 :-).
Användarvisningsbild
micke_nordin
Inlägg: 1539
Blev medlem: 21 aug 2008, 17:03
OS: Ubuntu
Utgåva: 22.10 Kinetic Kudu
Kontakt:

Re: Twitterskript

Inlägg av micke_nordin »

Märkligt, works for me, som sagt.

/Micke
Skriv svar

Återgå till "Terminalforum"