1 #define _CRT_SECURE_NO_WARNINGS 1 //vc++
\82Ì
\82¨
\82¹
\82Á
\82©
\82¢
\82È
\8cx
\8d\90\82ð
\8fÁ
\82·
\83}
\83N
\83\8d
2 #define _CRT_NON_CONFORMING_SWPRINTFS 1 //vc++
\82Ì
\82¨
\82¹
\82Á
\82©
\82¢
\82È
\8cx
\8d\90\82ð
\8fÁ
\82·
\83}
\83N
\83\8d
7 #include <nlib\nlib_define.h>
13 #include <qwerty\windebuger.h>
17 static void *nlibmemory;
18 static BROWSERTYPE browserType;
19 static unsigned int WINAPI commentthread(VOID *usadata);
20 NicoLiveStream_P NicoLiveStream_new(){
22 NicoLiveStream_P rslt = (NicoLiveStream_P)malloc(sizeof(NicoLiveStream));
23 ZeroMemory(rslt,sizeof(*rslt));
24 rslt->endEvent = CreateEvent(NULL,TRUE,FALSE,NULL);
25 rslt->receveEvent = CreateEvent(NULL,TRUE,FALSE,NULL);
29 VOID NicoLiveStream_delete(NicoLiveStream_P* self){
31 NicoLiveStream_disConnect(*self);
32 CloseHandle((*self)->endEvent);
33 CloseHandle((*self)->receveEvent);
39 NicoVideoAuth_P NicoVideoAuth_new(){
41 return (NicoVideoAuth_P)malloc(65536);
44 VOID NicoVideoAuth_delete(NicoVideoAuth_P *self){
51 NLIB_RESULT InitializeNLIB(HINTERNET hInternet){
53 nlibmemory = malloc(65536);
64 NLIB_RESULT NicoVideoAuth_getNicoVideoAuth(NicoVideoAuth_P self,BROWSERTYPE browserType){
66 ::browserType = browserType;
71 #ifndef TEST_CONNECT_RESULT_CHECK
73 NLIB_RESULT NicoLiveStream_connect(NicoLiveStream_P self,NicoVideoAuth_P nicoVideoAuth,LPCWSTR url,NicoRecvCallBack callback,LPVOID option){
75 NLIB_RESULT rslt = NLIB_ERR_OK;
77 NicoLiveStream_disConnect(self);
79 self->callback = callback;
80 self->option = option;
81 self->threadHandle = (HANDLE)_beginthreadex(NULL,0,commentthread,self,0,NULL);
89 #ifdef TEST_CONNECT_RESULT_CHECK
90 NLIB_RESULT NicoLiveStream_connect(NicoLiveStream_P self,NicoVideoAuth_P nicoVideoAuth,LPCWSTR url,NicoRecvCallBack callback,LPVOID option){
92 static NLIB_RESULT rslt = NLIB_ERR_OK;
104 VOID NicoLiveStream_disConnect(NicoLiveStream_P self){
106 SetEvent(self->endEvent);
107 if(self->threadHandle != INVALID_HANDLE_VALUE){
108 WaitForSingleObject(self->threadHandle,INFINITE);
109 CloseHandle(self->threadHandle);
114 self->threadHandle = NULL;
116 ResetEvent(self->endEvent);
120 StreamStatus_P NicoLiveStream_getStreamStatus(NicoLiveStream_P self){
122 self->stream.base_time = 1324709820;
123 self->stream.open_time = 1324709820;
124 self->stream.end_time = 1324713599;
125 self->stream.start_time = 1324710000;
127 _tcscpy(self->stream.id,TEXT("lv75313550"));
128 _tcscpy(self->stream.default_community,TEXT("co1345577"));
130 self->stream.is_owner = FALSE;
131 self->stream.provider_type = COMMUNITY_PROVIDER_TYPE;
134 return &self->stream;
137 NLIB_RESULT NicoLiveStream_sendChat(NicoLiveStream_P self,LPCWSTR chatbuf,LPCWSTR *mail,LPCWSTR *extends){
143 void commentthread_inteanal(void* userdata){
145 NicoLiveStream_P self = (NicoLiveStream_P)userdata;
148 rslt = WaitForSingleObject(self->endEvent,500);
150 if(rslt != WAIT_TIMEOUT){
154 SetEvent(self->receveEvent);
160 VOID NicoLiveStrream_setResFrom(NicoLiveStream_P self,INT_PTR res){
165 unsigned int WINAPI commentthread(VOID *usadata){
167 NicoLiveStream_P self = (NicoLiveStream_P)usadata;
169 NicoLiveThreadComment threadcomment;
170 threadcomment.last_res = TEXT("256");
171 threadcomment.server_time = 12345467;
172 threadcomment.thread = TEXT("1234567");
173 threadcomment.ticket = TEXT("0x12334445");
174 self->callback(NICOLIVE_EVENT_RECEVE_CONNECTRESULT,self,self->option,(NICOLIVE_PARAM)&threadcomment,0);
176 NicoLiveChat liveChat;
177 TCHAR noBuf[sizeof(UINT_PTR) * 8];
178 liveChat.anonymity = TEXT("");
179 TCHAR user_idBuffer[256];
180 liveChat.date = TEXT("1324713598");
181 liveChat.locale = TEXT("jp");
182 LPTSTR mails[] = {TEXT("184"),NULL};
183 liveChat.mail = &mails[0];
184 liveChat.mailCount = ARRAY_LENGTH(mails) - 1;
185 liveChat.name = TEXT("");
187 liveChat.premium = TEXT("1");
188 liveChat.thread = TEXT("1000254");
189 LPCTSTR user_id_format = TEXT("testuser%d");
190 liveChat.user_id = user_idBuffer;
191 liveChat.vpos = TEXT("8852");
192 int commentcount = 0;
195 srand((unsigned int)time(NULL));
197 for(int indexfirst = 0; indexfirst < STARTRECEVECOUNT;indexfirst++){
198 liveChat.chatBuf = commentcount % 2 == 0 ? TEXT("http://live.nicovideo.jp/watch/lv79715214?alert=1 2545 http://live.nicovideo.jp/watch/lv79715214?alert=1") : TEXT("test");
199 _stprintf((LPTSTR)liveChat.user_id,user_id_format,rand() % 15);
201 _stprintf((LPTSTR)liveChat.no,TEXT("%u"),commentcount);
203 self->callback(NICOLIVE_EVENT_RECEVE_CHAT,self,self->option,(NICOLIVE_PARAM)&liveChat,commentcount);
207 _beginthread(commentthread_inteanal,0,self);
208 HANDLE eventarray[] = {self->endEvent,self->receveEvent};
209 for(int index = 0,index2; index < RECEVECOUNT;index++){
212 for(index2 = 0;index2 < ONERECEVECHATCOUNT;index2++){
214 liveChat.chatBuf = commentcount % 2 == 0 ? TEXT("http://live.nicovideo.jp/watch/lv79715214?alert=1 254 http://live.nicovideo.jp/") : TEXT("<font color=FF0000>sm552447 sm1543514 lv25447 </font >");
215 _stprintf((LPTSTR)liveChat.user_id,TEXT("%s"),TEXT("0NsZs9X9GFLJaE9Ru3QuV2StCIM"));
217 _stprintf((LPTSTR)liveChat.no,TEXT("%u"),commentcount);
219 self->callback(NICOLIVE_EVENT_RECEVE_CHAT,self,self->option,(NICOLIVE_PARAM)&liveChat,commentcount);
223 self->callback(NICOLIVE_EVENT_RECEVE_CHATSETTLE,self,self->option,100,commentcount);
224 ResetEvent(self->receveEvent);
225 rslt = WaitForMultipleObjects(ARRAY_LENGTH(eventarray),eventarray,FALSE,INFINITE);
227 //
\83G
\83\89\81[
\82Ì
\8fê
\8d\87
228 if(rslt == WAIT_OBJECT_0 ){
244 //
\83X
\83g
\83\8a\81[
\83\80\83X
\83e
\81[
\83^
\83X
\8aÖ
\98A
248 ///
\83X
\83g
\83\8a\81[
\83\80\83X
\83e
\81[
\83^
\83X
\82ÌID
\82ð
\8eæ
\93¾
250 NLIB_DECLSPEC LPCTSTR StreamStatus_getId(StreamStatus_P self){
257 ///
\83X
\83g
\83\8a\81[
\83\80\83X
\83e
\81[
\83^
\83X
\82Ì
\83R
\83~
\83\85\83j
\83e
\83B
\94Ô
\8d\86\82ð
\8eæ
\93¾
259 NLIB_DECLSPEC LPCTSTR StreamStatus_getDefaultCommunity(StreamStatus_P self){
261 return self->default_community;
266 ///
\83X
\83g
\83\8a\81[
\83\80\83X
\83e
\81[
\83^
\83X
\82Ì
\83v
\83\8d\83o
\83C
\83_
\83^
\83C
\83v
\82ð
\8eæ
\93¾
268 PROVIDERTYPE StreamStatus_getProviderType(StreamStatus_P self){
270 return self->provider_type;
275 ///
\83X
\83g
\83\8a\81[
\83\80\83X
\83e
\81[
\83^
\83X
\82Ì
\83I
\81[
\83i
\81[
\83t
\83\89\83O
\82ð
\8eæ
\93¾
277 BOOL StreamStatus_isOwner(StreamStatus_P self){
279 return self->is_owner;
283 ///
\83X
\83g
\83\8a\81[
\83\80\83X
\83e
\81[
\83^
\83X
\82Ì
\8aJ
\8en
\8e\9e\8d\8f\82ð
\8eæ
\93¾
285 time_t StreamStatus_getStartTime(StreamStatus_P self){
287 return self->start_time;
291 ///
\83X
\83g
\83\8a\81[
\83\80\83X
\83e
\81[
\83^
\83X
\82Ì
\8fI
\97¹
\8e\9e\8d\8f\82ð
\8eæ
\93¾
293 time_t StreamStatus_getEndTime(StreamStatus_P self){
295 return self->end_time;
299 ///
\83X
\83g
\83\8a\81[
\83\80\83X
\83e
\81[
\83^
\83X
\82Ì
\8aJ
\8fê
\8e\9e\8d\8f\82ð
\8eæ
\93¾
301 time_t StreamStatus_getOpenTime(StreamStatus_P self){
303 return self->open_time;
308 ///
\83X
\83g
\83\8a\81[
\83\80\83X
\83e
\81[
\83^
\83X
\82Ì
\83x
\81[
\83X
\8e\9e\8d\8f\82ð
\8eæ
\93¾
310 time_t StreamStatus_getBaseTime(StreamStatus_P self){
312 return self->base_time;
317 BOOL NicoLiveStream_isPremium(NicoLiveStream_P self){
325 ///
\83n
\81[
\83g
\83r
\81[
\83g
\82Ì
\8aÔ
\8au
\82ð
\90Ý
\92è
\81i
\83~
\83\8a\95b)
327 VOID NicoLiveStream_setHeartBeatMsec(NicoLiveStream_P self,DWORD msec){
335 ///
\83n
\81[
\83g
\83r
\81[
\83g
\82Ì
\8aÔ
\8au
\82ð
\8eæ
\93¾(
\83~
\83\8a\95b)
337 DWORD NicoLiveStream_getHeartBeatMsec(NicoLiveStream_P self){
345 ///
\83n
\81[
\83g
\83r
\81[
\83g
\97L
\8cø
\81E
\96³
\8cø
\90Ý
\92è
347 VOID NicoLiveStream_setHeartBeatFlag(NicoLiveStream_P self,BOOL flag){
355 ///
\83n
\81[
\83g
\83r
\81[
\83g
\97L
\8cø
\83t
\83\89\83O
\8eæ
\93¾
357 BOOL NicoLiveStream_getHeartBeatFlag(NicoLiveStream_P self){
366 ///
\83L
\81[
\83v
\83A
\83\89\83C
\83u
\82Ì
\8aÔ
\8au
\82ð
\90Ý
\92è(
\83~
\83\8a\95b)
368 VOID NicoLiveStream_setKeapALiveMsec(NicoLiveStream_P self,DWORD msec){
370 #ifdef USE_NLIB_KEEPALIVE
371 self->chatManager.keepAliveTime = msec;
372 WSASetEvent(self->chatManager.setKeepAliveTimeEvent);
379 ///
\83L
\81[
\83v
\83A
\83\89\83C
\83u
\82Ì
\8aÔ
\8au
\82ð
\8eæ
\93¾(
\83~
\83\8a\95b)
381 DWORD NicoLiveStream_getKeapALiveMsec(NicoLiveStream_P self){
383 #ifdef USE_NLIB_KEEPALIVE
384 return self->chatManager.keepAliveTime;
393 ///
\83L
\81[
\83v
\83A
\83\89\83C
\83u
\97L
\8cø
\81E
\96³
\8cø
\90Ý
\92è
395 VOID NicoLiveStream_setKeapALiveFlag(NicoLiveStream_P self,BOOL flag){
397 #ifdef USE_NLIB_KEEPALIVE
398 self->chatManager.keapALiveFlag = flag;
404 ///
\83L
\81[
\83v
\83A
\83\89\83C
\83u
\83t
\83\89\83O
\8eæ
\93¾
406 BOOL NicoLiveStream_getKeapALiveFlag(NicoLiveStream_P self){
408 #ifdef USE_NLIB_KEEPALIVE
409 return self->chatManager.keapALiveFlag;
418 INT_PTR NicoLiveStream_getResFrom(NicoLiveStream_P self){
423 NLIB_RESULT NicoLiveStream_sendHeartBeat(NicoLiveStream_P self){
430 ///
\83X
\83g
\83\8a\81[
\83\80\83X
\83e
\81[
\83^
\83X
\82ÌID
\82ð
\8eæ
\93¾
432 LPCTSTR NicoLiveStream_getId(NicoLiveStream_P self){
433 static const LPCTSTR rslt = TEXT("lv000002");
439 ///
\83X
\83g
\83\8a\81[
\83\80\83X
\83e
\81[
\83^
\83X
\82Ì
\83R
\83~
\83\85\83j
\83e
\83B
\94Ô
\8d\86\82ð
\8eæ
\93¾
441 LPCTSTR NicoLiveStream_getDefaultCommunity(NicoLiveStream_P self){
442 static const LPCTSTR rslt = TEXT("co1345577");
448 ///
\83X
\83g
\83\8a\81[
\83\80\83X
\83e
\81[
\83^
\83X
\82Ì
\83v
\83\8d\83o
\83C
\83_
\83^
\83C
\83v
\82ð
\8eæ
\93¾
450 PROVIDERTYPE NicoLiveStream_getProviderType(NicoLiveStream_P self){
457 ///
\83X
\83g
\83\8a\81[
\83\80\83X
\83e
\81[
\83^
\83X
\82Ì
\83I
\81[
\83i
\81[
\83t
\83\89\83O
\82ð
\8eæ
\93¾
459 BOOL NicoLiveStream_isOwner(NicoLiveStream_P self){
467 ///
\83X
\83g
\83\8a\81[
\83\80\83X
\83e
\81[
\83^
\83X
\82Ì
\8aJ
\8en
\8e\9e\8d\8f\82ð
\8eæ
\93¾
469 time_t NicoLiveStream_getStartTime(NicoLiveStream_P self){
475 ///
\83X
\83g
\83\8a\81[
\83\80\83X
\83e
\81[
\83^
\83X
\82Ì
\8fI
\97¹
\8e\9e\8d\8f\82ð
\8eæ
\93¾
477 time_t NicoLiveStream_getEndTime(NicoLiveStream_P self){
483 ///
\83X
\83g
\83\8a\81[
\83\80\83X
\83e
\81[
\83^
\83X
\82Ì
\8aJ
\8fê
\8e\9e\8d\8f\82ð
\8eæ
\93¾
485 time_t NicoLiveStream_getOpenTime(NicoLiveStream_P self){
492 ///
\83X
\83g
\83\8a\81[
\83\80\83X
\83e
\81[
\83^
\83X
\82Ì
\83x
\81[
\83X
\8e\9e\8d\8f\82ð
\8eæ
\93¾
494 time_t NicoLiveStream_getBaseTime(NicoLiveStream_P self){
501 ///
\83X
\83g
\83\8a\81[
\83\80\83X
\83e
\81[
\83^
\83X
\82Ì
\83^
\83C
\83g
\83\8b\8eæ
\93¾
503 LPCTSTR NicoLiveStream_getTitle(NicoLiveStream_P self){
504 #ifdef PLAYERSTATUS_GET_TITLE
505 return self->playerStatus.stream.title;
507 static const LPCTSTR rslt = TEXT("");
515 LPCTSTR NicoVideoAuth_getUserSession(NicoVideoAuth_P self){
517 static const LPCTSTR rslt = TEXT("user_session=user_session_14018634_55619152528064910");