트위터를 사용하다보면 동시에 여러명에게 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 까지 무료입니다. )
어떻게 사용하시느냐에 따라 좋은 전달도구가 될수도, 나쁜 광고용 도구로 전락될수도 있습니다.
국내 트위터 사용자분들을 믿습니다. 이걸 광고 및 나쁜용도로 사용하지 말아주세요.
엉뚱한 개발자 구루였습니다.