色々なコードを混ぜて作ったTwitter apiブラウザ

未完成故バグも多いです
色々な所からコードを引っ張ってきてるので不都合あれば削除します

未完成故バグも多いです
色々な所からコードを引っ張ってきてるので不都合あれば削除します

  • タグ:
  • タグはありません
//------------------------------------------------------------------------------
// by
//==============================================================================
// @URL(https://msdn.microsoft.com/ja-jp/library/cc448053.aspx)→MultiByteToWideChar
// @URL(https://msdn.microsoft.com/ja-jp/library/cc448089.aspx)→WideCharToMultiByte
//------------------------------------------------------------------------------
#include "Kernel32.as"
//--------------------------------------
// (API)
//--------------------------------------
#const global CP_ACP $00000000
//--------------------------------------
//
//--------------------------------------
dim UnicodeTable1,($04FF-$0000+1) ; 1280×4 5
dim UnicodeTable2,($9FFF-$2000+1) ;32768×4128├165
dim UnicodeTable3,($FFFF-$E000+1) ; 8192×4 32
;
MakeSJisToUnicode
;
SaveBinFile "meta.bin"
;
goto *koko
//--------------------------------------
// SJISUnicode
//--------------------------------------
#deffunc MakeSJisToUnicode\
local szUnicode,\
local strBuff,\
local posBuff
;
sdim strBuff,1024*100 ;100KB
;0x8140-0x9FFC
repeat($9F-$81+1),$81:c=cnt
repeat($FC-$40+1),$40:d=cnt
if(d==$7F):continue
poke strBuff,posBuff,c:posBuff++
poke strBuff,posBuff,d:posBuff++
loop
loop
;0xE040-0xFCFC
repeat($FC-$E0+1),$E0:c=cnt
repeat($FC-$40+1),$40:d=cnt
if(d==$7F):continue
poke strBuff,posBuff,c:posBuff++
poke strBuff,posBuff,d:posBuff++
loop
loop
poke strBuff,posBuff,$00
;SJIS⇒Unicode
sdim szUnicode,posBuff+2
MultiByteToWideChar CP_ACP,0,varptr(strBuff),-1,varptr(szUnicode),(posBuff+2)/2
;
repeat(stat-1)
c=peek(szUnicode,cnt*2+0)
d=peek(szUnicode,cnt*2+1)
k=(d<<8)|c
c=peek(strBuff,cnt*2+0)
d=peek(strBuff,cnt*2+1)
if($0000<=k)and(k<=$04FF):UnicodeTable1(k-$0000)=(c<<8)|d:continue
if($2000<=k)and(k<=$9FFF):UnicodeTable2(k-$2000)=(c<<8)|d:continue
if($E000<=k)and(k<=$FFFF):UnicodeTable3(k-$E000)=(c<<8)|d:continue
loop
return
//--------------------------------------
//
//--------------------------------------
#deffunc SaveBinFile str _fname_
bsave(_fname_),UnicodeTable1,-1
bsave(_fname_),UnicodeTable2,-1,length(UnicodeTable1)*4
bsave(_fname_),UnicodeTable3,-1,length(UnicodeTable1)*4+length(UnicodeTable2)*4
return
//--------------------------------------
//
//--------------------------------------
#deffunc LoadBinFile str _fname_
bload(_fname_),UnicodeTable1,-1
bload(_fname_),UnicodeTable2,-1,length(UnicodeTable1)*4
bload(_fname_),UnicodeTable3,-1,length(UnicodeTable1)*4+length(UnicodeTable2)*4
return
//------------------------------------------------------------------------------
// End of sample215a().hsp
//------------------------------------------------------------------------------
*koko
#define CONSUMER_KEY ""
#define CONSUMER_SECRET ""
//CONSUMER_KEY https://apps.twitter.com/
//======================================================================
// TsubuyakiSoup_mod
//----------------------------------------------------------------------
// HSPTwitter
// OAuthAPI1.1
//----------------------------------------------------------------------
// Version : 2.2
// Author : Takaya
// Modification : kanahiron
// CreateDate : 10/07/29
// LastUpdate : 17/06/07
//======================================================================
/* [HDL module infomation]
%dll
TsubuyakiSoup
%ver
2.2
%date
2017/06/07
%note
TsubuyakiSoup_mod.as
%port
Win
%*/
#include "encode.as"
#undef sjis2utf8n(%1, %2)
#define global sjis2utf8n(%1, %2) _FromSJIS@mod_encode %2, CODEPAGE_S_JIS, %1, CODEPAGE_UTF_8
#undef utf8n2sjis(%1)
#define global ctype utf8n2sjis(%1) _ToSJIS@mod_encode(%1, CODEPAGE_UTF_8, CODEPAGE_S_JIS)
#module tCup
#uselib "advapi32.dll"
#cfunc _CryptAcquireContext "CryptAcquireContextA" var, sptr, sptr, int, int
#cfunc _CryptCreateHash "CryptCreateHash" sptr, int, int, int, var
#cfunc _CryptHashData "CryptHashData" sptr, sptr, int, int
#cfunc _CryptSetHashParam "CryptSetHashParam" sptr, int, var, int
#cfunc _CryptGetHashParam "CryptGetHashParam" sptr, int, sptr, var, int
#cfunc _CryptImportKey "CryptImportKey" sptr, var, int, int, int, var
#func _CryptDestroyKey "CryptDestroyKey" int
#func _CryptDestroyHash "CryptDestroyHash" int
#func _CryptReleaseContext "CryptReleaseContext" int, int
#cfunc _CryptDeriveKey "CryptDeriveKey" int, int, int, int, var
#cfunc _CryptEncrypt "CryptEncrypt" int, int, int, int, int, var, int
#cfunc _CryptDecrypt "CryptDecrypt" int, int, int, int, var, var
//---------------
// wininet.dll
//---------------
#uselib "wininet.dll"
#cfunc _InternetOpen "InternetOpenA" sptr, int, sptr, sptr, int
#cfunc _InternetOpenUrl "InternetOpenUrlA" int, str, sptr, int, int, int
#func _InternetReadFile "InternetReadFile" int, var, int, var
#func _InternetCloseHandle "InternetCloseHandle" int
#cfunc _InternetConnect "InternetConnectA" int, str, int, sptr, sptr, int, int, int
#cfunc _HttpOpenRequest "HttpOpenRequestA" int, sptr, str, sptr, sptr, sptr, int, int
#cfunc _HttpSendRequest "HttpSendRequestA" int, sptr, int, sptr, int
#cfunc _HttpQueryInfo "HttpQueryInfoA" int, int, var, var, int
#func _InternetQueryDataAvailable "InternetQueryDataAvailable" int, var, int, int
#func _InternetSetOption "InternetSetOptionA" int, int, int, int
//---------------
// crtdll.dll
//---------------
#uselib "crtdll.dll"
#func _time "time" var
#define HP_HMAC_INFO 0x0005
#define PLAINTEXTKEYBLOB 0x8
#define CUR_BLOB_VERSION 2
#define PROV_RSA_FULL 1
#define CRYPT_IPSEC_HMAC_KEY 0x00000100
#define HP_HASHVAL 0x0002
#define ALG_CLASS_HASH (4 << 13)
#define ALG_TYPE_ANY (0)
#define ALG_SID_SHA1 4
#define ALG_SID_HMAC 9
#define ALG_CLASS_DATA_ENCRYPT (3 << 13) // 0x6000
#define ALG_TYPE_BLOCK (3 << 9) // 0x0600
#define ALG_SID_RC2 2 // 0x0002
#define CALG_SHA1 (ALG_CLASS_HASH | ALG_TYPE_ANY | ALG_SID_SHA1)
#define CALG_HMAC (ALG_CLASS_HASH | ALG_TYPE_ANY | ALG_SID_HMAC)
#define CALG_RC2 (ALG_CLASS_DATA_ENCRYPT|ALG_TYPE_BLOCK|ALG_SID_RC2)
#define CRYPT_NEWKEYSET $00000008
#define CRYPT_VERIFYCONTEXT $F0000000
#define CRYPT_DELETEKEYSET $00000010
#define CRYPT_MACHINE_KEYSET $00000020
//
#define INTERNET_OPEN_TYPE_DIRECT 1
#define INTERNET_OPTION_CONNECT_TIMEOUT 2
#define INTERNET_OPTION_HTTP_DECODING 65
#define INTERNET_DEFAULT_HTTPS_PORT 443
#define INTERNET_SERVICE_HTTP 3
#define INTERNET_FLAG_RELOAD 0x80000000
#define INTERNET_FLAG_SECURE 0x00800000
#define INTERNET_FLAG_NO_CACHE_WRITE 0x04000000
#define INTERNET_FLAG_DONT_CACHE INTERNET_FLAG_NO_CACHE_WRITE
#define INTERNET_FLAG_IGNORE_CERT_DATE_INVALID 0x00002000
#define INTERNET_FLAG_IGNORE_CERT_CN_INVALID 0x00001000
#define HTTP_QUERY_MIME_VERSION 0
#define HTTP_QUERY_CONTENT_TYPE 1
#define HTTP_QUERY_CONTENT_TRANSFER_ENCODING 2
#define HTTP_QUERY_CONTENT_ID 3
#define HTTP_QUERY_CONTENT_DESCRIPTION 4
#define HTTP_QUERY_CONTENT_LENGTH 5
#define HTTP_QUERY_CONTENT_LANGUAGE 6
#define HTTP_QUERY_ALLOW 7
#define HTTP_QUERY_PUBLIC 8
#define HTTP_QUERY_DATE 9
#define HTTP_QUERY_EXPIRES 10
#define HTTP_QUERY_LAST_MODIFIED 11
#define HTTP_QUERY_MESSAGE_ID 12
#define HTTP_QUERY_URI 13
#define HTTP_QUERY_DERIVED_FROM 14
#define HTTP_QUERY_COST 15
#define HTTP_QUERY_LINK 16
#define HTTP_QUERY_PRAGMA 17
#define HTTP_QUERY_VERSION 18
#define HTTP_QUERY_STATUS_CODE 19
#define HTTP_QUERY_STATUS_TEXT 20
#define HTTP_QUERY_RAW_HEADERS 21
#define HTTP_QUERY_RAW_HEADERS_CRLF 22
#define HTTP_QUERY_CONNECTION 23
#define HTTP_QUERY_ACCEPT 24
#define HTTP_QUERY_ACCEPT_CHARSET 25
#define HTTP_QUERY_ACCEPT_ENCODING 26
#define HTTP_QUERY_ACCEPT_LANGUAGE 27
#define HTTP_QUERY_AUTHORIZATION 28
#define HTTP_QUERY_CONTENT_ENCODING 29
#define HTTP_QUERY_FORWARDED 30
#define HTTP_QUERY_FROM 31
#define HTTP_QUERY_IF_MODIFIED_SINCE 32
#define HTTP_QUERY_LOCATION 33
#define HTTP_QUERY_ORIG_URI 34
#define HTTP_QUERY_REFERER 35
#define HTTP_QUERY_RETRY_AFTER 36
#define HTTP_QUERY_SERVER 37
#define HTTP_QUERY_TITLE 38
#define HTTP_QUERY_USER_AGENT 39
#define HTTP_QUERY_WWW_AUTHENTICATE 40
#define HTTP_QUERY_PROXY_AUTHENTICATE 41
#define HTTP_QUERY_ACCEPT_RANGES 42
#define HTTP_QUERY_SET_COOKIE 43
#define HTTP_QUERY_COOKIE 44
#define HTTP_QUERY_REQUEST_METHOD 45
#define HTTP_QUERY_MAX 45
#define HTTP_QUERY_CUSTOM 65535
#define HTTP_QUERY_FLAG_REQUEST_HEADERS 0x80000000
#define HTTP_QUERY_FLAG_SYSTEMTIME 0x40000000
#define HTTP_QUERY_FLAG_NUMBER 0x20000000
#define HTTP_QUERY_FLAG_COALESCE 0x10000000
#define HTTP_QUERY_MODIFIER_FLAGS_MASK (HTTP_QUERY_FLAG_REQUEST_HEADERS|HTTP_QUERY_FLAG_SYSTEMTIME|HTTP_QUERY_FLAG_NUMBER|HTTP_QUERY_FLAG_COALESCE)
#define HTTP_QUERY_HEADER_MASK (~HTTP_QUERY_MODIFIER_FLAGS_MASK)
//------------------------------
//
//------------------------------
//HTTP
#define global METHOD_GET 0
#define global METHOD_POST 1
#define global METHOD_DELETE 2
#define global METHOD_PUT 3
#define global FORMAT_JSON 0
#define global FORMAT_XML 1
//============================================================
/* [HDL symbol infomation]
%index
tCupInit
TsubuyakiSoup
%prm
p1, p2, p3
p1 = :
p2 = : Consumer Key
p3 = : Consumer Secret
p4 = 0(30) : ()
%inst
TsubyakiSoupTwitter使
p1SearchAPIAPI
p2Consumer Keyp3Consumer SecretConsumer KeyConsumer SecretTwitter
p4Twitter
%href
TS_End
%group
TwitterAPI
%*/
//------------------------------------------------------------
#deffunc _tCupInit str p1, str p2, str p3, int p4
//
; rateLimit(0) = -1 // 15API
; rateLimit(1) = -1 // API
; rateLimit(2) = -1 //
accessToken = "" // AccessToken
accessSecret = "" // AccessTokenSecret
requestToken = "" // RequestToken
requestSecret = "" // RequestTokenSecret
consumerKey = p2 // ConsumerKey
consumerSecret = p3 // ConsumerSecret
screenName = ""
userId = ""
formatType = "json"
responseHeader = ""
responseBody = ""
timeOutTime = p4*1000
gzipFlag = 1 // true /-------------------
//
hInet = _InternetOpen( p1, INTERNET_OPEN_TYPE_DIRECT, 0, 0, 0)
if hInet = 0:return -1
_InternetSetOption hInet, INTERNET_OPTION_CONNECT_TIMEOUT, varptr(timeOutTime), 4
_InternetSetOption hInet, INTERNET_OPTION_HTTP_DECODING, varptr(gzipFlag), 4
return 0
#define global tCupInit(%1,%2,%3,%4=30) _tCupInit %1, %2, %3, %4
//============================================================
//============================================================
/* [HDL symbol infomation]
%index
tCupWash
TsubuyakiSoup
%inst
TsubyakiSoup
%href
TS_Init
%group
TwitterAPI
%*/
//------------------------------------------------------------
#deffunc tCupWash onexit
//
if (hRequest) : _InternetCloseHandle hRequest
if (hConnect) : _InternetCloseHandle hConnect
if (hInet) : _InternetCloseHandle hInet
return
//============================================================
//============================================================
/* [HDL symbol infomation]
%index
getHmacSha1
HMAC-SHA1
%prm
(p1, p2)
p1 = :
p2 = :
%inst
SHA-1使HMAC
p1
p2
%href
sigEncode
%group
TsubuyakiSoup
%*/
//------------------------------------------------------------
#deffunc getHmacSha1 str _p1, str _p2, var ghc_dest
ghc_p1 = _p1
ghc_p2 = _p2
hProv = 0
hKey = 0
hHash = 0
ghc_dataLength = 0
sdim hmacInfo,14
lpoke hmacInfo, 0, CALG_SHA1
ghc_p2Length = strlen(ghc_p2)
dim keyBlob, 3+(ghc_p2Length/4)+1
poke keyBlob, 0, PLAINTEXTKEYBLOB
poke keyBlob, 1, CUR_BLOB_VERSION
wpoke keyBlob, 2, 0
lpoke keyBlob, 4, CALG_RC2
lpoke keyBlob, 8, ghc_p2Length
memcpy keyBlob, ghc_p2, ghc_p2Length, 12, 0
sdim ghc_dest, 20
ghc_dest = "Error"
//
if ( _CryptAcquireContext(hProv, 0, 0, PROV_RSA_FULL, CRYPT_VERIFYCONTEXT) ) {
//
if ( _CryptImportKey(hProv, keyBlob, (12+ghc_p2Length), 0, CRYPT_IPSEC_HMAC_KEY, hKey) ) {
if ( _CryptCreateHash(hProv, CALG_HMAC, hKey, 0, hHash) ) {
if ( _CryptSetHashParam(hHash, HP_HMAC_INFO, hmacInfo, 0) ) {
if ( _CryptHashData(hHash, ghc_p1, strlen(ghc_p1), 0) ) {
if ( _CryptGetHashParam(hHash, HP_HASHVAL, 0, ghc_dataLength, 0) ) {
ghc_dest = ""
if ( _CryptGetHashParam(hHash, HP_HASHVAL, varptr(ghc_dest), ghc_dataLength, 0) ) {
}
}
}
}
//
_CryptDestroyHash hHash
}
//
_CryptDestroyKey hKey
}
//
_CryptReleaseContext hProv, 0
}
return
//============================================================
//============================================================
/* [HDL symbol infomation]
%index
sigEncode
OAuth/xAuth
%prm
(p1, p2)
p1 = :
p2 = :
%inst
OAuth/xAuth
p1
p2
Twitter
UTF-8URLp1URLp2HAMAC-SHA1BASE64URL
%href
HMAC_SHA1
%group
TsubuyakiSoup
%*/
//------------------------------------------------------------
#defcfunc sigEncode str se_p1, str se_p2
//utf-8
sjis2utf8n SigTmp, se_p1
sjis2utf8n SecretTmp, se_p2
//URL
SigEnc = form_encode(SigTmp, 0)
SecretEnc = form_encode(SecretTmp, 0)
getHmacSha1 SigEnc, SecretEnc, HmacSha1
if (HmacSha1 == "Error"):return "Error"
sdim base64HmacSha1,40
Base64Encode HmacSha1,20,base64HmacSha1
return form_encode(str(base64HmacSha1), 0)
//============================================================
// str p1 API
// array p2 argument
// int p3 http method
#deffunc execRestApi str era_p1, array era_p2, int era_p3
api = era_p1
if (api != "media/upload.json") {
arrayCopy era_p2, arguments
argumentLength = length(arguments)
} else {
exist era_p2
picsize = strsize
sdim picdata,picsize+1
bload era_p2,picdata
sdim base64data,int(1.5*picsize)
Base64Encode picdata,picsize,base64data
}
methodType = era_p3
switch methodType
case METHOD_GET
method = "GET"
swbreak
case METHOD_POST
method = "POST"
swbreak
case METHOD_PUT
method = "PUT"
swbreak
case METHOD_DELETE
method = "DELETE"
swbreak
default
return 0
swbreak
swend
sigArrayLength = 6+argumentLength
sdim sigArray, 500, sigArrayLength
hConnect = 0 // InternetConnect
hRequest = 0 // HttpOpenRequest
statcode = 0 //
dataLength = 0 //
rsize = 1024 //
hsize = 0 //
apiVersion = "1.1" // TwitterAPI
RequestURL = "api.twitter.com"
if (api = "media/upload.json") {
RequestURL = "upload.twitter.com"
}
apiUrl = apiVersion +"/"+ api
transStr = method +" https://"+RequestURL+"/"+ apiVersion +"/"+ api +" "
if (strmid(api,0,5) = "oauth") {
apiUrl = api
transStr = method +" https://api.twitter.com/"+ api +" "
}
usePort = 443
requestFlag = INTERNET_FLAG_RELOAD
requestFlag |= INTERNET_FLAG_SECURE
requestFlag |= INTERNET_FLAG_DONT_CACHE
requestFlag |= INTERNET_FLAG_IGNORE_CERT_DATE_INVALID
requestFlag |= INTERNET_FLAG_IGNORE_CERT_CN_INVALID
tokenStr = accessToken
sigKey = consumerSecret+" "+accessSecret
logmes "sigkey="+sigKey
if (api = "oauth/access_token") {
tokenStr = requestToken
sigKey = consumerSecret+" "+requestSecret
}
//
sigNonce = getRandomString(8, 32)
_time sigTime
sigArray(0) = "oauth_consumer_key=" + consumerKey
sigArray(1) = "oauth_nonce=" + sigNonce
sigArray(2) = "oauth_signature_method=HMAC-SHA1"
sigArray(3) = "oauth_timestamp=" + sigTime
sigArray(4) = "oauth_token="+ tokenStr
sigArray(5) = "oauth_version=1.0"
if (api != "media/upload.json") {
repeat argumentLength
sigArray(6+cnt) = arguments(cnt)
loop
}
_sortStrArray sigArray, 0, sigArrayLength-1
repeat sigArrayLength
logmes sigArray(cnt)
if sigArray(cnt) = "" : continue
transStr += sigArray(cnt) +"&"
loop
transStr = strmid(transStr, 0, strlen(transStr)-1)
signature = sigEncode(transStr, sigKey)
if (methodType = METHOD_POST) {
sdim boundary,128
boundary = "-------------"+getRandomString(24, 32)
sdim RequestHeader,1024*2
RequestHeader = "Authorization: OAuth "
repeat sigArrayLength
RequestHeader += sigArray(cnt)+","
loop
RequestHeader += "oauth_signature=" +signature
RequestHeader += "\r\nAccept-Encoding: gzip, deflate;"
if (api = "media/upload.json") {
RequestHeader += "\r\nContent-Type: multipart/form-data; boundary= "+boundary
} else {
RequestHeader += "\r\nContent-Type: application/x-www-form-urlencoded"
}
RequestHeader += "\r\n"
RequestHeaderLength = strlen(RequestHeader)
if (api = "media/upload.json") {
sdim PostData,1024*4+strlen(base64data)
PostData += "--"+boundary+"\n"
PostData += "Content-Disposition: form-data; name=\"media_data\";\n\n"
PostData += base64data
PostData += "\n"
PostData += "--"+boundary+"--\n"
} else {
sdim PostData,1024*4
repeat argumentLength
PostData += arguments(cnt)+"&"
loop
PostData = strmid(PostData, 0, strlen(PostData)-1) //&
}
PostDataLength = strlen(PostData)
}
if (methodType = METHOD_GET) {
apiUrl += "?"
repeat sigArrayLength
apiUrl += sigArray(cnt) +"&"
loop
apiUrl += "oauth_signature=" +signature
RequestHeader = "Accept-Encoding: gzip, deflate;\nContent-Type: application/x-www-form-urlencoded"
RequestHeaderLength = strlen(RequestHeader)
PostData = 0
PostDataLength = 0
}
//
hConnect = _InternetConnect(hInet, RequestURL, INTERNET_DEFAULT_HTTPS_PORT, 0, 0, INTERNET_SERVICE_HTTP, 0, 0)
if (hConnect = 0) {
//Connect
return -4
}
//
hRequest = _HttpOpenRequest(hConnect, method, apiUrl, "HTTP/1.1", 0, 0, requestFlag, 0)
if (hRequest = 0) {
//Request
_InternetCloseHandle hConnect
return -3
}
//
if ( _HttpSendRequest(hRequest, RequestHeader, RequestHeaderLength, PostData, PostDataLength)) {
//
responseHeaderSize = 3000
sdim responseHeader, responseHeaderSize
//
if ( _HttpQueryInfo(hRequest, HTTP_QUERY_RAW_HEADERS_CRLF, responseHeader, responseHeaderSize, 0) ) {
//
notesel responseHeader
repeat notemax
noteget headerLine, cnt
headerTokenPos = instr(headerLine, 0, "status: ") //
if (headerTokenPos != -1) : statcode = int(strmid(headerLine, headerTokenPos+8, 3))
headerTokenPos = instr(headerLine, 0, "content-length: ") //
if (headerTokenPos != -1) : responseBodyLength = int(strmid(headerLine, -1, strlen(headerLine)-headerTokenPos+16))
; API_buf = instr(API_BufStr, 0, "X-RateLimit-Limit: ") //60API
; if (API_Buf != -1) : TS_RateLimit(0) = int(strmid(API_BufStr, -1, strlen(API_BufStr)-(API_buf+19)))
; API_buf = instr(API_BufStr, 0, "X-RateLimit-Remaining: ") //API
; if (API_Buf != -1) : TS_RateLimit(1) = int(strmid(API_BufStr, -1, strlen(API_BufStr)-(API_buf+23)))
; API_buf = instr(API_BufStr, 0, "X-RateLimit-Reset: ") //
; if (API_Buf != -1) : TS_RateLimit(2) = int(strmid(API_BufStr, -1, strlen(API_BufStr)-(API_buf+19)))
loop
noteunsel
logmes ""+responseBodyLength
//
_InternetQueryDataAvailable hRequest, rsize, 0, 0
//
logmes "srize : "+ rsize
sdim responseBuffer, rsize+1
sdim responseBody, 10240
repeat
_InternetReadFile hRequest, responseBuffer, rsize, hsize
if (hsize = 0) : break
responseBody += strmid(responseBuffer, 0, hsize)
await 0
loop
} else {
//
return -1
}
//Request
_InternetCloseHandle hRequest
} else {
//
return -2
}
sdim picdata
sdim base64data
sdim RequestHeader
sdim PostData
return statcode
//===========================================================
#defcfunc getResponseHeader
return responseHeader
#defcfunc getResponseBody
return responseBody
//============================================================
/* [HDL symbol infomation]
%index
SetAccessToken
AccessTokenSecret
%prm
p1, p2
p1 = : Access Token
p2 = : Access Secret
%inst
TsubuyakiSoupAccess TokenAccess Secret
p1Access Tokenp2Access Secret
Access TokenAccess SecretGetAccessTokenGetxAuthToken
%href
GetAccessToken
GetxAuthToken
%group
TwitterAPI
%*/
//------------------------------------------------------------
#deffunc setAccessToken str sat_p1, str sat_p2
accessToken = sat_p1
accessSecret = sat_p2
return
//============================================================
//============================================================
/* [HDL symbol infomation]
%index
setRequestToken
RequestTokenSecret
%prm
p1, p2
p1 = : Request Token
p2 = : Request Secret
%inst
TsubuyakiSoupRequest TokenRequest Secret
p1Request Tokenp2Request Secret
%href
setAccessToken
%group
TwitterAPI
%*/
//------------------------------------------------------------
#deffunc setRequestToken str srt_p1, str srt_p2
requestToken = srt_p1
requestSecret = srt_p2
return
//============================================================
//============================================================
/* [HDL symbol infomation]
%index
getRequestToken
RequestTokenSecret
%prm
()
%inst
%href
setAccessToken
%group
TwitterAPI
%*/
//------------------------------------------------------------
#defcfunc getRequestToken
return requestToken
//============================================================
//============================================================
/* [HDL symbol infomation]
%index
getRequestSecret
RequestTokenSecret
%prm
()
%inst
%href
setAccessToken
%group
TwitterAPI
%*/
//------------------------------------------------------------
#defcfunc getRequestSecret
return requestSecret
//============================================================
//============================================================
/* [HDL symbol infomation]
%index
setConsumerToken
AccessTokenSecret
%prm
p1, p2
p1 = : Consumer Token
p2 = : Consumer Secret
%inst
TsubuyakiSoupConsumer TokenConsumer Secret
p1Consumer Tokenp2Consumer Secret
%href
tCupInit
%group
TwitterAPI
%*/
//------------------------------------------------------------
#deffunc setConsumerToken str sct_p1, str sct_p2
consumerToken = sct_p1
consumerSecret = sct_p2
return
//============================================================
//============================================================
/* [HDL symbol infomation]
%index
setUserInfo
%prm
p1, p2
p1 = :
p2 = : ID
%inst
TsubuyakiSoupID
p1p2ID
TsubuyakiSoup2ID
%href
GetAccessToken
GetxAuthToken
%group
TwitterAPI
%*/
//------------------------------------------------------------
#deffunc setUserInfo str sui_p1, str sui_p2
screenName = sui_p1
userId = sui_p2
return
//============================================================
#global
#module
#uselib "kernel32.dll"
#cfunc _MultiByteToWideChar "MultiByteToWideChar" int, int, sptr, int, int, int
/*------------------------------------------------------------*/
//12
//
// isByte(p1)
// p1...
// [0:1byte/1:2byte]
//
#defcfunc isByte int p1
return (p1>=129 and p1<=159) or (p1>=224 and p1<=252)
/*------------------------------------------------------------*/
// quick sort
// http://ja.wikipedia.org/wiki/%E3%82%AF%E3%82%A4%E3%83%83%E3%82%AF%E3%82%BD%E3%83%BC%E3%83%88
#deffunc _sortStrArray array p1, int p2, int p3
p = p1((p2+p3)/2)
i = p2
j = p3
repeat
// i
repeat
if strcmp(p1(i), p) >= 0 : break
i++
loop
// j
repeat
if strcmp(p1(j), p) <= 0 : break
j--
loop
//
if (i < j) {
tmp = p1(i)
p1(i) = p1(j)
p1(j) = tmp
} else {
break
}
i++
j--
loop
if ( i-p2 > 1 ) : _sortStrArray p1, p2, i-1
if ( p3-j > 1 ) : _sortStrArray p1, j+1, p3
return
#defcfunc strcmp str _p1, str _p2
p1n = _p1
p2n = _p2
p1v = peek(p1n, 0)
p2v = peek(p2n, 0)
n = 0
while (p1v = p2v)
if (p1v = 0 or p2v = 0) : _break
n++
p1v = peek(p1n, n)
p2v = peek(p2n, n)
wend
return p1v - p2v
#deffunc arrayCopy array ary1, array ary2
dimtype ary2, vartype(ary1), length(ary1)
foreach ary1
ary2(cnt) = ary1(cnt)
loop
return
/*------------------------------------------------------------*/
//
//
// mb_strmid(p1, p2, p3)
// p1...
// p2...
// p3...
//
#defcfunc mb_strmid var p1, int p2, int p3
if vartype != 2 : return ""
s_size = strlen(p1)
trim_start = 0
trim_num = 0
repeat p2
if (Is_Byte(peek(p1,trim_start))) : trim_start++
trim_start++
loop
repeat p3
if (Is_Byte(peek(p1,trim_start+trim_num))) : trim_num++
trim_num++
loop
return strmid(p1,trim_start,trim_num)
//p2 0 : '&' 1 : '%20'
#defcfunc form_encode str p1, int p2
/*
09 az AZ - . _ ~
*/
fe_str = p1
fe_p1Long = strlen(p1)
sdim fe_val, fe_p1Long*3
repeat fe_p1Long
fe_flag = 0
fe_tmp = peek(fe_str, cnt)
if (('0' <= fe_tmp)&('9' >= fe_tmp)) | (('A' <= fe_tmp)&('Z' >= fe_tmp)) | (('a' <= fe_tmp)&('z' >= fe_tmp)) | (fe_tmp = '-') | (fe_tmp = '.') | (fe_tmp = '_') | (fe_tmp = '~') :{
poke fe_val, strlen(fe_val), fe_tmp
} else {
if fe_tmp = ' ' {
if p2 = 0 : fe_val += "&"
if p2 = 1 : fe_val += "%20" //
} else {
fe_val += "%" + strf("%02X",fe_tmp)
}
}
loop
return fe_val
//
//p1p2
#defcfunc getRandomString int p1, int p2
;randomize
RS_Strlen = rnd(p2-p1+1) + p1
sdim RS_val, RS_Strlen
repeat RS_Strlen
RS_rnd = rnd(3)
if RS_rnd = 0 : RS_s = 48 + rnd(10)
if RS_rnd = 1 : RS_s = 65 + rnd(26)
if RS_rnd = 2 : RS_s = 97 + rnd(26)
poke RS_val, cnt, RS_s
loop
return RS_val
#global
//================================================================================
// mbase64 Version 1.00
//
// Windows 2000 ,XP ,Vista ,7 (HSP3)
// 2010.01.26
// 2010.01.26
//HSP 3.2a + Microsoft Visual C++ 2008 Express Edition
//================================================================================
//URL : http://homepage2.nifty.com/MJHS/
//================================================================================
// Base64!
#module "_machinebase64_"
#uselib "kernel32.dll"
#func VirtualProtect "VirtualProtect" var,int,int,var
#define xdim(%1,%2) dim %1,%2: VirtualProtect %1,%2*4,$40,AZSD
#deffunc Base64Encode var src, int size, var dest
base64="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"
xdim base64enc,54
base64enc.0 = 0x51EC8B55, 0x10558B51, 0xC9335653, 0x33F63357, 0x0C4D39FF, 0x89FC4D89
base64enc.6 = 0x8E0FF84D, 0x000000AC, 0x8B08458B, 0xB60FF85D, 0xE3C10704, 0x89C30B08
base64enc.12 = 0xF983F845, 0x6A377502, 0x458B5912, 0x145D8BF8, 0xE083F8D3, 0x18048A3F
base64enc.18 = 0xFF420288, 0x8346FC45, 0x0E754CFE, 0x420D02C6, 0x420A02C6, 0x4583F633
base64enc.24 = 0xE98302FC, 0x33D37906, 0xF84D89C9, 0x474101EB, 0x7C0C7D3B, 0x01F983AB
base64enc.30 = 0x036A527C, 0x2BC78B5F, 0x0C4589C1, 0x097EC085, 0x65C1C88B, 0x754908F8
base64enc.36 = 0x59126AF9, 0x7F0C7D39, 0xF8458B12, 0xD3145D8B, 0x3FE083F8, 0x8818048A
base64enc.42 = 0xC603EB02, 0xFF423D02, 0x8346FC45, 0x0E754CFE, 0x420D02C6, 0x420A02C6
base64enc.48 = 0x4583F633, 0x834F02FC, 0xC87906E9, 0x5FFC458B, 0x0002C65E, 0x10C2C95B
prm.0 = varptr(src), size, varptr(dest), varptr(base64)
return callfunc(prm, varptr(base64enc), 4)
#deffunc Base64Decode var src, int size, var dest//,var d1,var d2,var d3,var d4
base64="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"
xdim base64dec,56
base64dec.0 = 0x51EC8B55, 0x8B565351, 0xC0331075, 0x33D23357, 0x0C4539FF, 0x89F84589
base64dec.6 = 0x8E0FFC45, 0x0000008A, 0x8A084D8B, 0xD98A0F0C, 0xC141EB80, 0xFB8006E2
base64dec.12 = 0x0F087719, 0xE983C9BE, 0x8A22EB41, 0x61EB80D9, 0x7719FB80, 0xC9BE0F08
base64dec.18 = 0xEB47E983, 0x80D98A10, 0xFB8030EB, 0x0F0A7709, 0xC183C9BE, 0xEBD10B04
base64dec.24 = 0x2BF9801C, 0xCA830575, 0x8012EB3E, 0x05752FF9, 0xEB3FCA83, 0x3DF98008
base64dec.30 = 0x45FF2375, 0x03F883F8, 0x45011875, 0x59106AFC, 0xF8D3C28B, 0x83460688
base64dec.36 = 0xF47908E9, 0xC033D233, 0xEB4006EB, 0x06FAC103, 0x0C7D3B47, 0xFF768C0F
base64dec.42 = 0x046AFFFF, 0x85C82B59, 0xC1067EC9, 0x754906E2, 0xFC458BFA, 0x8359106A
base64dec.48 = 0xDA8B03C0, 0x1E88FBD3, 0x08E98346, 0x452BF479, 0x06C65FF8, 0xE8835E00
base64dec.54 = 0xC2C95B03, 0x00000010
prm.0 = varptr(src), size, varptr(dest), varptr(base64)
//prm.4 = varptr(d1),varptr(d2),varptr(d3),varptr(d4) ;<- debug
return callfunc(prm, varptr(base64dec), 4)
#global
// json
// TsubuyakiSoup.hsp
#module jsonParse
#deffunc json_sel str p1
if vartype(mssc) != vartype("comobj") {
newcom mssc, "MSScriptControl.ScriptControl"
mssc("Language") = "JScript"
}
sdim tmp, strlen(p1)+1
sdim jsontext, strlen(p1)+1
tmp = p1
jsontext = utf8n2sjis(tmp)
sdim tmp, 0
mssc -> "addCode" "obj = "+ jsontext +";"
return
#defcfunc json_val str p1
comres result
mssc -> "Eval" "obj"+ p1 +" === null"
if (result == -1) : return ""
mssc -> "Eval" "obj"+ p1
return result
#defcfunc json_length str p1
comres result
mssc -> "Eval" "obj"+ p1 +".length"
return result
#deffunc json_unsel
sdim jsontext,0
return
#global
#module
//============================================================
/* [HDL symbol infomation]
%index
getAuthorizeAddress
URL
%prm
()
%inst
Twitter"Error"
%group
TwitterAPI
%*/
//------------------------------------------------------------
#defcfunc getAuthorizeAddress
//
sdim arguments
arguments(0) = "oauth_callback=oob"
execRestApi "oauth/request_token", arguments, METHOD_GET
if stat != 200 : return "Error"
//
gaa_body = getResponseBody()
;request_token
TokenStart = instr(gaa_body, 0, "oauth_token=") + 12
TokenEnd = instr(gaa_body, TokenStart, "&")
requestToken = strmid(gaa_body, TokenStart, TokenEnd)
;request_token_secret
SecretStart = instr(gaa_body, 0, "oauth_token_secret=") + 19
SecretEnd = instr(gaa_body, SecretStart, "&")
requestSecret = strmid(gaa_body, SecretStart, SecretEnd)
setRequestToken requestToken, requestSecret
return "https://api.twitter.com/oauth/authorize?oauth_token="+ requestToken
//============================================================
//============================================================
/* [HDL symbol infomation]
%index
GetAccessToken
OAuthAccessTokenSecret
%prm
p1, p2, p3, p4
p1 = : Access Token
p2 = : Access Secret
p3 = :
p4 = : PIN
%inst
TwitterAPIoauth/access_tokenOAuthAccess TokenAccess Secret
p1, p2Access Token, Access Secret
p3ID,
p4PINPINGetAuthorizeAdressURL
Access TokenSecret使TwitterAccess TokenSecret
Access TokenSecretOAuth/xAuth
%href
GetAuthorizeAdress
GetxAuthToken
SetAccessToken
%group
TwitterAPI
%*/
//------------------------------------------------------------
#deffunc publishAccessToken var p1, var p2, var p3, str p4
sdim p1
sdim p2
sdim p3
sdim arguments
arguments(0) = "oauth_verifier=" + p4
execRestApi "oauth/access_token", arguments, METHOD_POST
statcode = stat
pat_body = getResponseBody()
if statcode = 200 {
//
;request_token
TokenStart = instr(pat_body, 0, "oauth_token=") + 12
TokenEnd = instr(pat_body, TokenStart, "&")
p1 = strmid(pat_body, TokenStart, TokenEnd)
;request_token_secret
TokenStart = instr(pat_body, 0, "oauth_token_secret=") + 19
TokenEnd = instr(pat_body, TokenStart, "&")
p2 = strmid(pat_body, TokenStart, TokenEnd)
;User
TokenStart = instr(pat_body, 0, "user_id=") + 8
TokenEnd = instr(pat_body, TokenStart, "&")
p3 = strmid(pat_body, TokenStart, TokenEnd) +","
TokenStart = instr(pat_body, 0, "screen_name=") + 12
TokenEnd = strlen(pat_body)
p3 += strmid(pat_body, TokenStart, TokenEnd)
}
return statcode
//============================================================
#deffunc getMentionsTimeline int count
sdim arguments
arguments(0) = "count="+ count
execRestApi "statuses/mentions_timeline.json", arguments, METHOD_GET
return stat
#deffunc getUserTimeline str screen_name, int count
sdim arguments
arguments(0) = "screen_name="+ screen_name
arguments(1) = "count="+ count
execRestApi "statuses/user_timeline.json", arguments, METHOD_GET
return stat
#deffunc getHomeTimeline int count
sdim arguments
arguments(0) = "count="+ count
execRestApi "statuses/home_timeline.json", arguments, METHOD_GET
return stat
#deffunc getRetweetsOfMe int count
sdim arguments
arguments(0) = "count="+ count
execRestApi "statuses/retweets_of_me.json", arguments, METHOD_GET
return stat
#deffunc getRetweets str id
sdim arguments
execRestApi "statuses/retweets/"+id+".json", arguments, METHOD_GET
return stat
#deffunc showStatus str id
sdim arguments
execRestApi "statuses/show/"+id+".json", arguments, METHOD_GET
return stat
#deffunc destoryStatus str id
sdim arguments
execRestApi "statuses/destroy/"+id+".json", arguments, METHOD_POST
return stat
#deffunc retweetStatus str id
sdim arguments
execRestApi "statuses/retweet/"+id+".json", arguments, METHOD_POST
return stat
#deffunc postfavo str idc
sdim arguments
ida = "id="+ idc
idb = ida + "&include_entities=true"
execRestApi "favorites/create.json", idb, METHOD_POST
id =0
return stat
//============================================================
/* [HDL symbol infomation]
%index
Tweet
%prm
p1, p2
p1 = :
p2 = : (reply)ID
%inst
TwitterAPIstatuses/updateTwitter稿SetFormatType
p1140140140
p2(reply)IDp2
TwitterAPIIDp1@@
TwitterAPIstat
APIAPI使11000(API稿)
%href
DelTweet
ReTweet
%group
TwitterAPI
%*/
//------------------------------------------------------------
#deffunc _Tweet str p1, str p2, str p3, str p4, str p5, str p6
tmpBuf = p1
tmpStr = ""
//utf-8
sjis2utf8n tmpStr, tmpBuf
//POST
sdim arguments,256
arguments(0) = "status="+ form_encode(tmpStr, 1)
if p2 != "" : arguments(1) = "in_reply_to_status_id="+ p2
if p3 != "" : arguments(2) = "media_ids="+form_encode(p3, 1)
if p4 != "" : arguments(3) = p4
if p5 != "" : arguments(4) = p5
if p6 != "" : arguments(5) = p6
execRestApi "statuses/update.json", arguments, METHOD_POST
return stat
#define global Tweet(%1, %2="", %3="", %4="", %5="", %6="") _Tweet %1, %2, %3, %4, %5, %6
//============================================================
#deffunc media_upload array p1 ,int p3,var p2
sdim rawtext,512
sdim p2,512
sdim picname,256
status = 0
repeat p3
exist p1(cnt)
if strsize <= 0:status = -2:break
picname = p1(cnt)
execRestApi "media/upload.json", picname, METHOD_POST
if stat != 200 :status = -1:break
rawtext = "["+getResponseBody()+"]"
json_sel rawText
p2 += json_val("[0].media_id_string") + ","
json_unsel
await 50
loop
p2 = strmid(p2, 0, strlen(p2)-1)
return status
#global
#module
#uselib "user32.dll"
#func DrawText "DrawTextA" int,sptr,int,sptr,int
#deffunc GetStrRect int p1, str p2, array p3
rc = 0,0,0,0
DrawText p1, p2, -1, varptr(rc), $00000400
p3.0 = rc.2
p3.1 = rc.3
return
;
; StrInsert pstr, pstrin, in
; pstrinpstrin
;
#defcfunc StrInsert var pstr, var pstrin, int in
if in<0 : ina = 0 : else : ina = in
;
if MbsbType(pstr,ina)>1 : ina--
return strmid(pstr, 0, ina) + pstrin + strmid(pstr, ina, strlen(pstr)-ina)
#global
*Init
title ""
dim UnicodeTable1,($04FF-$0000+1) ; 1280×4 5
dim UnicodeTable2,($9FFF-$2000+1) ;32768×4128├165
dim UnicodeTable3,($FFFF-$E000+1) ; 8192×4 32
*Main
screen 0,700,750,SCREEN_NORMAL|SCREEN_FIXEDSIZE
;
LoadUnicodeFile "meta.bin"
if(stat<0):dialog "Unicode",1,"":end
font "BIZ UD",12
sdim s1,1024
sdim s2,1024
exist "meta.hsp"
if (strsize < 0){
tCupInit "testClient", CONSUMER_KEY, CONSUMER_SECRET, 10
address = getAuthorizeAddress()
response = "##### HEADER ######\n"+getResponseHeader()+"\n\n##### BODY #####\n"+getResponseBody()
exec address,16
PIN = ""
pos 0,0
mes ""
input PIN,100,20
button "OK",*ok2
stop
*ok2
userdata = ""
ACCESS_TOKEN = ""
ACCESS_SECRET = ""
publishAccessToken ACCESS_TOKEN,ACCESS_SECRET,userdata,PIN
sdim savetext,1024
savetext += userdata+"\n"
savetext += ACCESS_TOKEN+"\n"
savetext += ACCESS_SECRET
exist "meta.hsp"
if strsize > 0:delete "meta.hsp"
bsave "meta.hsp",savetext,strlen(savetext)
}
sdim tokenTxt,strsize+1
pos 0,0
bload "meta.hsp",tokenTxt
notesel tokenTxt
noteget ACCESS_TOKEN,1
noteget ACCESS_SECRET,2
noteunsel
tCupInit "test", CONSUMER_KEY, CONSUMER_SECRET, 10
setAccessToken ACCESS_TOKEN, ACCESS_SECRET
TweetText = ""
getHomeTimeline 10
s1 = getResponseBody()
s2 = UnicodeToSJIS(s1)
i = 0
kai = 0
*hata
screen 0,700,750,SCREEN_NORMAL|SCREEN_FIXEDSIZE
i = 0
k = 0
pos 0,0
repeat
font "BIZ UD",12
time2 = 0
time3 = 0
time = 0
value = 0
x = 0
y = 0
name = 0
name2 = 0
name3 = 0
name4 = 0
name5 = 0
name6 = 0
nameend = 0
x2 = 0
x3 = 0
xz = 0
xz2 = 0
xz3 = 0
color rnd(230),rnd(230),rnd(230)
time2 = instr(s2,i , "id") +i
time3 = instr(s2, i,"created_at") +i
time = strmid(s2,time3,time2-time3)
mes time
value = instr(s2, i, "RT")
y = instr(s2, i, "truncated") - instr(s2, i,"text")
x = strmid(s2,instr(s2, i, "text")+i,y)
key = "\n"
repeat
a = instr(x, 0, "\\n") : if a == -1 : break
wpoke x, a, wpeek(key) ; wpeek(key) ⇔ 2573
loop
xhp = instr(x, ,"http")
if (xhp=-1){}else{
xz3= strmid(x,0,xhp)
x =xz3}
y1=instr(x,,"\n")
if(y1=-1){
if(y>=90){
xz= strmid(x,0,80)
xz2=strmid(x,79,y)
}
}
xcl=instr(x,,"text_color")
if(xcl=-1){}else{
goto *iplus}
if value = -1{
name = instr(s2,i,"name")
name++
name7 = name+i
name2 = instr(s2, name7,"name")
name3 = name + name2 //i
name3++
name5 = name3 + i//
name4 = instr(s2,name5,"name")
name6 = name4 +name5
nameend = instr(s2,i,"description")//i
nameend++
nameend5 = nameend - name3//
nameend7 =nameend+i
nameend2 = instr(s2,nameend7,"description")
nameend4 = nameend + nemeend2//i
nameend3 = nameend4 +i
nameend6 = nameend3 - name6
x2 = strmid(s2,name5,nameend5)
x3 = strmid(s2,name6,nameend6)
mes x2
mes x3
}else{
name = instr(s2,i,"name")
name++
name7 = name+i
name2 = instr(s2, name7,"name")
name3 = name + name2 //i
name3++
name5 = name3 + i//
name4 = instr(s2,name5,"name")
name6 = name4 +name5
nameend = instr(s2,i,"description")//i
nameend++
nameend5 = nameend - name3//
nameend7 = nameend+i
nameend2 = instr(s2,nameend,"description")
nameend4 = nameend + nemeend2//i
nameend3 = nameend4 +i
nameend6 = nameend3 - name6
x2 = strmid(s2,name5,nameend5)
x3 = strmid(s2,name6,nameend6)
mes x2
mes x3
}
font "BIZ UD",16
if(xz=0){
mes x
}else{
mes xz
mes xz2
}
font "BIZ UD",12
mes
time2 = time2+4
id = strmid(s2,time2,19)
objsize 100, 20
k++
if(k=1){
id1=id
z1=x
button "",*favo1
}if (k=2){
id2=id
z2=x
button "",*favo2
}if (k=3){
id3=id
z3=x
button "",*favo3
}if (k=4){
id4=id
z4=x
button "",*favo4
}if (k=5){
id5=id
zo=x
button "",*favo5
}if (k=6){
id6=id
z6=x
button "",*favo6
}if (k=7){
id7=id
z7=x
button "",*favo7
}if (k=8){
id8=id
z8=x
button "",*favo8
}if (k=9){
id9=id
z9=x
button "",*favo9
}if (k=10){
id10=id
z10=x
button "",*favo10
}
*iplus
i++
f= instr(s2,i,"},{")
i = f+i
if f=-1: count = cnt : break
loop
pos 0,680
font "BIZ UD",20
objmode 2
input TweetText,400,80,0
font "BIZ UD",12
pos 400,680
objsize 200, 40
button "OK",*ok
button "",*Init
repeat 1000
await 65
loop
goto *Init
stop
*ok
Tweet TweetText
pos 0,0
if kai < 1000 : goto *Init
stop
//--------------------------------------
//
//--------------------------------------
#defcfunc UnicodeToSJIS str _s_,\
local inBuff,\
local outBuff,\
local outPos
;
inBuff=(_s_)
sdim outBuff,1024*1024 ;1MB
;
repeat strlen(inBuff)
c=peek(inBuff,cnt)
;\
if(c!='\\'){
poke outBuff,outPos,c:outPos++
continue
}
;\u
d=peek(inBuff,cnt+1)
if(d!='u'){
poke outBuff,outPos,c:outPos++
poke outBuff,outPos,d:outPos++
continue(cnt+2)
}
;\uXXXX
k=int("$"+strmid(inBuff,cnt+2,4))
repeat 1
if($0000<=k)and(k<=$04FF):k=UnicodeTable1(k-$0000):break
if($2000<=k)and(k<=$9FFF):k=UnicodeTable2(k-$2000):break
if($E000<=k)and(k<=$FFFF):k=UnicodeTable3(k-$E000):break
;
k=$0000
loop
;
if(k==$0000):k=$8145 ;
;
poke outBuff,outPos,((k>>8)& $FF):outPos++
poke outBuff,outPos,((k>>0)& $FF):outPos++
continue(cnt+6)
loop
poke outBuff,outPos,$00 ;NULL
return outBuff
//--------------------------------------
// Unicode
//--------------------------------------
#deffunc LoadUnicodeFile str _fname_
exist(_fname_)
if(strsize<0):return -1
;
bload(_fname_),UnicodeTable1,-1
bload(_fname_),UnicodeTable2,-1,length(UnicodeTable1)*4
bload(_fname_),UnicodeTable3,-1,length(UnicodeTable1)*4+length(UnicodeTable2)*4
return 0
stop
*favo1
id =id1
postfavo id
screen 0,700,750,SCREEN_NORMAL|SCREEN_FIXEDSIZE
font "BIZ UD",20
pos 0,0
mes z1
mes ""
repeat 100
await 10
loop
goto *hata
stop
*favo2
id =id2
postfavo id
screen 0,700,750,SCREEN_NORMAL|SCREEN_FIXEDSIZE
font "BIZ UD",20
pos 0,0
mes z2
mes ""
repeat 100
await 10
loop
goto *hata
stop
*favo3
id =id3
postfavo id
screen 0,700,750,SCREEN_NORMAL|SCREEN_FIXEDSIZE
font "BIZ UD",20
pos 0,0
mes z3
mes ""
repeat 100
await 10
loop
goto *hata
stop
*favo4
id =id4
postfavo id
screen 0,700,750,SCREEN_NORMAL|SCREEN_FIXEDSIZE
font "BIZ UD",20
pos 0,0
mes z4
mes ""
repeat 100
await 10
loop
goto *hata
stop
*favo5
id =id5
postfavo id
screen 0,700,750,SCREEN_NORMAL|SCREEN_FIXEDSIZE
font "BIZ UD",20
pos 0,0
mes zo
mes ""
repeat 100
await 10
loop
goto *hata
stop
*favo6
id =id6
postfavo id
screen 0,700,750,SCREEN_NORMAL|SCREEN_FIXEDSIZE
font "BIZ UD",20
pos 0,0
mes z6
mes ""
repeat 100
await 10
loop
goto *hata
stop
*favo7
id =id7
postfavo id
screen 0,700,750,SCREEN_NORMAL|SCREEN_FIXEDSIZE
font "BIZ UD",20
pos 0,00
mes z7
mes ""
repeat 100
await 10
loop
goto *hata
stop
*favo8
id =id8
postfavo id
screen 0,700,750,SCREEN_NORMAL|SCREEN_FIXEDSIZE
font "BIZ UD",20
pos 0,0
mes z8
mes ""
repeat 100
await 10
loop
goto *hata
stop
*favo9
id =id9
postfavo id
screen 0,700,750,SCREEN_NORMAL|SCREEN_FIXEDSIZE
font "BIZ UD",20
pos 0,0
mes z9
mes ""
repeat 100
await 10
loop
goto *hata
stop
*favo10
id =id10
postfavo id
screen 0,700,750,SCREEN_NORMAL|SCREEN_FIXEDSIZE
font "BIZ UD",20
pos 0,0
mes z10
mes ""
repeat 100
await 10
loop
goto *hata
stop
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX