트위터를 사용하다보면 동시에 여러명에게 DM을 보내야할 일이 가끔 생깁니다. 모임을 진행한다던지, 몇몇 지인들에게만 중요정보를 알린다던지 할때 말이죠. 공개트윗으로 날리긴 곤란하고, DM 으로 각각보내자니 힘들고.. 그래서 예전에 TweetGuru 의 MultiDM 이라는 서비스를 만들었는데요. 서버의 제약 문제 때문에 동시에 12명까지밖에 보낼수가 없게 되어있습니다. 그리고 계정정보들을 따로 저장해놨다가 하는등의 작업들이 필요했는데요. 많이들 쓰시는 Microsoft Excel 을 이용해서 DM 을 여러명에게 편하게 보낼수 있는 매쉬업을 공개합니다.
Excel 과 Twitter 매쉬업하기
지난번 파워포인트와 트위터 매쉬업하기 에서 사용했던 소스를 거의 그대로 활용합니다. VBA 코드로 되어있습니다. 아래와 같은 화면입니다.
너무 간단해서 보시면 사용법은 다 아실듯 합니다. ID 칸에 보낼사람 트윗ID를 @ 없이 적고, 메시지를 적으면 됩니다. 메시지가 빈칸이면 위칸것을 재활용합니다. 캡쳐에 있는 대로라면 @clien_net 과 @tweet_id8 까지는 “즐거운 설날되세요!” 를 받고, 나머지 @tweet_id9-16 은 “즐거운 설날되세요! 새해 복많이 받으세요!” 를 받게 됩니다. 버튼을 누르면 작은창이 떠서 트위터 ID 와 암호를 물어봅니다.
주의하실 점은 화면에 있는 대로 트위터 자체의 제한인 일일 DM 250 개 제한과 시간당 API 150번 호출제한을 염두에 두세요.
이 파일로 150명에게 DM 보내고 나면 트위터 클라이언트가 바로 리밋걸리게 됩니다. 한시간동안 웹으로 밖에 못쓰시게 되는거죠.
그리고 정말 중요! 트위터의 정책상 같은 DM 을 반복해서 보내면 스팸으로 인식되어 계정사용에 문제가 생길수도 있습니다. 조심해서 사용하세요.
혹시 이 파일로 인해 생기는 문제는 제가 책임지지 않습니다.
아래는 이 엑셀+트위터 매쉬업의 코드입니다.
Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
Function DM(touser, tweetmsg, uid, pwd)
Dim objHTTP As Object
Set objHTTP = CreateObject("Microsoft.XMLHTTP")
objHTTP.Open "POST", "http://twitter.com/direct_messages/new.xml", False, uid, pwd
objHTTP.send "user=" & touser & "&text=" & tweetmsg
DM = objHTTP.responseText
Set objHTTP = Nothing
End Function
Function getStringBetween(str, sstart, send)
PosStart = InStr(str, sstart)
PosEnd = InStr(str, send)
If (PosStart > 0) And (PosEnd > 0) Then
getStringBetween = Mid(str, PosStart + Len(sstart), PosEnd - PosStart - Len(sstart))
Else
getStringBetween = ""
End If
End Function
Function Send_DM()
Load frmLogin
frmLogin.Show
strUID = frmLogin.txtUID
strPWD = frmLogin.txtPWD
Unload frmLogin
If Len(strUID) = 0 Or Len(strPWD) = 0 Then Exit Function
' Twitter Limits 250 DM per day. You can't exceed this
Application.Cursor = xlWait
For i = 2 To 151
TweetID = Cells(i, 1)
If Len(Cells(i, 2)) > 0 Then
tweetmsg = Cells(i, 2)
End If
If Len(TweetID) > 0 Then
res = DM(TweetID, tweetmsg, strUID, strPWD)
Cells(i, 5) = res
If (Len(getStringBetween(res, "id", "/id")) > 0) Then
Cells(i, 3) = "성공"
Else
Cells(i, 3) = "실패"
End If
Else
Exit For
End If
' 혹시 몰라서 한건의 DM당 1초씩 딜레이를 뒀습니다. 트위터 서버측에 부하를 줄이기 위함입니다.
' 시간이 문제가 안되시는분은 5000 정도로 해서 5초 딜레이를 주시면 전혀 무리없을듯 합니다.
Sleep 1000
Next i
Application.Cursor = xlDefault
End Function
가지고 계신 트위터 사용자들 주소록이 있다면, 간단히 ID 부분에만 복사하셔서 쉽게 메시지 보내시면 됩니다.
주의! 다운 받아서 오픈한후 보안경고 창에서 매크로 사용토록 확인해주셔야 기능이 동작됩니다.
▶ 엑셀파일 다운로드 : Excel + Twitter Multi DM 엑셀 다운받기 – 제 Dropbox 입니다.
( 혹시 Dropbox 사용 안해보신분들은 꼭 만들어 두세요 윈도우/맥/아이폰 모두 연동되는 쓰기편한 웹하드로 2 Giga 까지 무료입니다. )
어떻게 사용하시느냐에 따라 좋은 전달도구가 될수도, 나쁜 광고용 도구로 전락될수도 있습니다.
국내 트위터 사용자분들을 믿습니다. 이걸 광고 및 나쁜용도로 사용하지 말아주세요.
엉뚱한 개발자 구루였습니다.
핑백: hanjool's me2DAY
어찌 이런 멋진 걸 만드셨나요. 대단하심다. 애는 잘 크죠??
고맙습니다. 애기는 정말 쑥쑥 크고 있습니다 🙂
핑백: youthink's me2DAY
안녕하세요. 구루님 팔로워 중 1인입니다. ^^ 댓글에 안달린거 보니… 아무도 그런 현상이 발생하지 않나봐요. 매크로 실행하려고 전 트위터아이디,메시지를 첫줄에다가 입력하고 send버튼을 누르면 트위터패스워드 입력창에 문자가 입력이 안됩니다. 숫자만 키인이 되고요. copy&paste로는 문자도 들어가네요.
엑셀 실행하자마자 버튼을 누르면 패스워드에 문자 keyin이 되지만 첫줄 id,메시지만 입력하면 불가능하네요.. 고향집 excel 2003, 제집 excel 2007 모두 그런 증상이 나오네요. 살펴보아주세요.
감사합니다.
혹시 한영키 버튼 한번 눌러보셨나요 ? 패스워드 입력창인데 한글입력모드라 그럴수 있을듯 한데요.
아. 한글입력모드라서 그렇네요. ID는 영어로 입력했는데 패스워드창에서 한글로 바뀌는 모양이네요. 감사합니다.
핑백: jinu49's me2DAY
우와~~ 트위터계의 개척자~ ㅋㅋ 감사합니다~ 나중에 필요할때 유용하게 써먹어야겠네요~ ^^
아직 리트윗조차도 개념못잡고 있던 한사람으로서 부럽습니다…나이 마흔이 넘도록 뭘하며 살았는지 모를 정도로 기술의 발전은 눈부시군요..게다가 님과같은 열정적인 분들이 있어 저같은 문명치들이 인터넷에서 보물을 건지나 봅니다… 열정적인 삶이 부럽습니다..
지금 님께 팔로우 했네요 ,,^^
궁금한게 있는데요.. twtkr.com에서는 이런 기능이 없는데 twirrer.com에서 자기 Username을 변경할 수 있더군요.. 그러면 이 Username에서 follow 했을 때와 Username을 변경하고나서의 follow는 계속 유지가 되는건가요?
네 유지됩니다. Twitter.com 의 사용자 아이디는 내부에선 숫자로 관리됩니다. Username 은 아무때나 변경해도 팔로워는 유지됩니다.
엑셀파일을 다운 받아 사용해 보았는데, 결과란에 실패로 나타나는 이유를 모르겠습니다. 자세한 설명 부탁드립니다…
DM은 자신을 Follow 하지 않은 사용자에게는 보내지지 않고 실패합니다.
팔로우 안되어 있는 상태에서, 여러 상대방에게 맞팔로우 신청하려면 어떻게 해야하나요?
직접 @ 멘션으로 얘기나누셔야 합니다.
감사합니다.
구루님, 너무 훌륭하십니다.
윤석민 올림.
아..멋지십니다.ㅋ
단체 DM 찾았더니 여기도 결국 구루님 손바닥이군요.ㅋㅋㅋ
그런데 곧 OAuth 체계로 바뀔거라 이게 동작이 안될듯 합니다. 🙁
너무 좋아요~! 그런데 특정 아이디에선 되고 어떤 아이디에선 안되는 이유는 무엇일까요?
Follow 한 ID 에만 DM이 가능합니다
ㅎ 정말 유용한 정봅니다. 감사합니다. 팔로우 할께여….^^
구루님 맞팔인데도 왜 실패로 뜰까요?ㅠㅠ전부 실팹니다..ㅠㅠ
트위터 정책이 바뀌어서 Basic Auth 는 동작이 안됩니다. 이 소스는 Basic Auth 기반이라 현재 사용이 불가능합니다 ^^;
구루님 이거 코드 수정해서 되게 할 수 있는 방법이 없을까요? 유용하게 쓰다가 안되니깐 불편해지네요. ㅠㅠ
현재 OAuth 를 엑셀안에서 해결할 방법이 없어서요. 불가능합니다 ㅠㅠ