{"id":2503,"date":"2012-12-20T13:54:02","date_gmt":"2012-12-20T04:54:02","guid":{"rendered":"http:\/\/www.ka-net.org\/blog\/?p=2503"},"modified":"2013-08-19T14:13:44","modified_gmt":"2013-08-19T05:13:44","slug":"skydrive%e4%b8%8a%e3%81%ae%e3%83%95%e3%82%a9%e3%83%ab%e3%83%80%e3%83%bc%e3%81%8b%e3%82%89%e3%83%95%e3%82%a1%e3%82%a4%e3%83%ab%e3%82%92%e3%83%80%e3%82%a6%e3%83%b3%e3%83%ad%e3%83%bc%e3%83%89%e3%81%99","status":"publish","type":"post","link":"https:\/\/www.ka-net.org\/blog\/?p=2503","title":{"rendered":"SkyDrive\u4e0a\u306e\u30d5\u30a9\u30eb\u30c0\u30fc\u304b\u3089\u30d5\u30a1\u30a4\u30eb\u3092\u30c0\u30a6\u30f3\u30ed\u30fc\u30c9\u3059\u308bVBScript"},"content":{"rendered":"<p><a href=\"\/\/www.ka-net.org\/blog\/?p=2489\" title=\"\u30c9\u30e9\u30c3\u30b0&#038;\u30c9\u30ed\u30c3\u30d7\u3057\u305f\u30d5\u30a1\u30a4\u30eb\u3092SkyDrive\u4e0a\u306e\u30d5\u30a9\u30eb\u30c0\u30fc\u306b\u30a2\u30c3\u30d7\u3059\u308bVBScript\" target=\"_blank\">\u524d\u56de<\/a>\u306f<a href=\"http:\/\/msdn.microsoft.com\/ja-jp\/library\/live\/hh826521.aspx\" title=\"SkyDrive API (Live Connect)\" target=\"_blank\">SkyDrive API<\/a>\u3092\u5229\u7528\u3057\u3066\u30c9\u30e9\u30c3\u30b0&#038;\u30c9\u30ed\u30c3\u30d7\u3057\u305f\u30d5\u30a1\u30a4\u30eb\u3092SkyDrive\u4e0a\u306e\u30d5\u30a9\u30eb\u30c0\u30fc\u306b\u30a2\u30c3\u30d7\u3059\u308bVBScript\u3092\u7d39\u4ecb\u3057\u307e\u3057\u305f\u304c\u3001\u4eca\u56de\u306f\u9006\u306bSkyDrive\u4e0a\u306e\u30d5\u30a9\u30eb\u30c0\u30fc\u304b\u3089\u30d5\u30a1\u30a4\u30eb\u3092\u30c0\u30a6\u30f3\u30ed\u30fc\u30c9\u3059\u308bVBScript\u3092\u7d39\u4ecb\u3057\u307e\u3059\u3002<\/p>\n<p><span style=\"color: #ff0000; font-weight: bold;\">\u203b Microsoft\u30a2\u30ab\u30a6\u30f3\u30c8\u3068API\u306e\u5229\u7528\u306b\u5fc5\u8981\u306a\u30af\u30e9\u30a4\u30a2\u30f3\u30c8 ID\u306e\u53d6\u5f97\u65b9\u6cd5\u306f<a href=\"\/\/www.ka-net.org\/blog\/?p=2489\" title=\"\u30c9\u30e9\u30c3\u30b0&#038;\u30c9\u30ed\u30c3\u30d7\u3057\u305f\u30d5\u30a1\u30a4\u30eb\u3092SkyDrive\u4e0a\u306e\u30d5\u30a9\u30eb\u30c0\u30fc\u306b\u30a2\u30c3\u30d7\u3059\u308bVBScript\" target=\"_blank\">\u524d\u56de\u306e\u8a18\u4e8b<\/a>\u3092\u3054\u53c2\u7167\u304f\u3060\u3055\u3044\u3002<\/span><\/p>\n<p><!--more--><\/p>\n<pre class=\"brush: vb; title: ; notranslate\" title=\"\">Option Explicit\r\n\r\nDim IE\r\nDim FlgIeQuit\r\nDim ParamGet\r\nDim AccessToken\r\nDim AuthenticationToken\r\nDim ExpiresIn\r\nDim DateExpires\r\n\r\n'---------------------------------------------------------------------\r\n'\u203b \u8981\u5909\u66f4\r\n'---------------------------------------------------------------------\r\nConst FOLDER_NAME = &quot;\u30b5\u30f3\u30d7\u30eb\u30d5\u30a9\u30eb\u30c0\u30fc&quot;\r\n'\u30af\u30e9\u30a4\u30a2\u30f3\u30c8 ID\r\nConst CLIENT_ID = &quot;****************&quot;\r\n'\u30ea\u30c0\u30a4\u30ec\u30af\u30c8 \u30c9\u30e1\u30a4\u30f3(API\u8a2d\u5b9a\u3067\u81ea\u5206\u3067\u30c9\u30e1\u30a4\u30f3\u3092\u6307\u5b9a\u3057\u305f\u5834\u5408\u306e\u307f\u5909\u66f4)\r\nConst REDIRECT_URL = &quot;https:\/\/oauth.live.com\/desktop&quot;\r\n'---------------------------------------------------------------------\r\n\r\nInit '\u521d\u671f\u5316\r\nDownloadSkyDriveFile\r\nMsgBox &quot;\u51e6\u7406\u304c\u7d42\u4e86\u3057\u307e\u3057\u305f\u3002&quot;, 64 + 4096\r\n\r\nPrivate Sub Init()\r\n'\u5404\u5909\u6570\u521d\u671f\u5316\r\n  FlgIeQuit = 0\r\n  ParamGet = &quot;&quot;\r\n  AccessToken = &quot;&quot;\r\n  AuthenticationToken = &quot;&quot;\r\n  ExpiresIn = &quot;&quot;\r\n  DateExpires = &quot;&quot;\r\nEnd Sub\r\n\r\nPrivate Sub DownloadSkyDriveFile()\r\n'SkyDriveFile\u304b\u3089\u30d5\u30a1\u30a4\u30eb\u3092\u30c0\u30a6\u30f3\u30ed\u30fc\u30c9\r\n  Dim filePath\r\n  Dim filesInfo\r\n  Dim idFolder\r\n  Dim v, vv\r\n  Dim i\r\n  \r\n  If (DateExpires &lt;&gt; &quot;&quot;) And (Now() &lt; DateExpires) Then\r\n  Else\r\n    AuthenticateSkyDrive '\u8a8d\u8a3c\r\n  End If\r\n  If AccessToken = &quot;&quot; Then\r\n    MsgBox &quot;\u30a2\u30af\u30bb\u30b9\u30c8\u30fc\u30af\u30f3\u306e\u53d6\u5f97\u306b\u5931\u6557\u3057\u307e\u3057\u305f\u3002&quot;, 16 + 4096\r\n    Exit Sub\r\n  End If\r\n  \r\n  '\u30d5\u30a9\u30eb\u30c0\u30fc\u306e\u78ba\u8a8d\r\n  idFolder = GetSkyDriveFolderId(AccessToken, FOLDER_NAME)\r\n  If (idFolder = &quot;NoFolder&quot;) Or (idFolder = &quot;Err&quot;) Or Len(idFolder) &lt; 1 Then\r\n    MsgBox &quot;SkyDrive\u30d5\u30a9\u30eb\u30c0\u30fc\u304c\u898b\u3064\u304b\u308a\u307e\u305b\u3093\u3067\u3057\u305f\u3002&quot;, 16 + 4096\r\n    Exit Sub\r\n  End If\r\n  \r\n  '\u30d5\u30a1\u30a4\u30eb\u306e\u78ba\u8a8d\r\n  filesInfo = GetFilesInfo(AccessToken, idFolder)\r\n  If (filesInfo = &quot;NoFile&quot;) Or (filesInfo = &quot;Err&quot;) Or Len(filesInfo) &lt; 1 Then\r\n    MsgBox &quot;\u30d5\u30a1\u30a4\u30eb\u304c\u898b\u3064\u304b\u308a\u307e\u305b\u3093\u3067\u3057\u305f\u3002&quot;, 16 + 4096\r\n    Exit Sub\r\n  End If\r\n  filePath = CreateObject(&quot;WScript.Shell&quot;).SpecialFolders(&quot;Desktop&quot;) &amp; ChrW(92) '\u30d5\u30a1\u30a4\u30eb\u306e\u4fdd\u5b58\u5148:\u30c7\u30b9\u30af\u30c8\u30c3\u30d7\r\n  v = Split(filesInfo, vbCrLf)\r\n  For i = LBound(v) To UBound(v)\r\n    vv = Split(v(i), &quot;;&quot;)\r\n    DownloadFile filePath &amp; vv(0), vv(1)\r\n  Next\r\nEnd Sub\r\n\r\nPrivate Sub AuthenticateSkyDrive()\r\n'SkyDrive\u8a8d\u8a3c\r\n  Dim url\r\n  Dim scope\r\n  Dim timeLimit\r\n  \r\n  Set IE = Nothing '\u521d\u671f\u5316\r\n  scope = &quot;wl.skydrive_update wl.offline_access&quot;\r\n  url = &quot;http:\/\/oauth.live.com\/authorize?locale=ja&amp;display=page&amp;client_id=&quot; &amp; EncodeURL(CLIENT_ID) &amp; &quot;&amp;scope=&quot; &amp; EncodeURL(scope) &amp; &quot;&amp;response_type=token&amp;redirect_uri=&quot; &amp; EncodeURL(REDIRECT_URL)\r\n  Set IE = WScript.CreateObject(&quot;InternetExplorer.Application&quot;, &quot;IE_&quot;)\r\n  On Error Resume Next\r\n  With IE\r\n    .Visible = True\r\n    .Toolbar = False\r\n    .AddressBar = False\r\n    .MenuBar = False\r\n    .Top = 50\r\n    .Left = 200\r\n    .Width = 400\r\n    .Height = 500\r\n    .Navigate url\r\n    'While .Busy Or .readyState &lt;&gt; 4\r\n    '  WScript.Sleep 100\r\n    'Wend\r\n    timeLimit = DateAdd(&quot;s&quot;, 60, Now()) '\u30eb\u30fc\u30d7\u306e\u5236\u9650\u6642\u9593:60\u79d2\r\n    Do\r\n      WScript.Sleep 100\r\n      If FlgIeQuit = 1 Then Exit Do\r\n      If Now() &gt; timeLimit Then Exit Do '\u5236\u9650\u6642\u9593\u3092\u904e\u304e\u305f\u3089\u30eb\u30fc\u30d7\u3092\u629c\u3051\u308b\r\n    Loop While ParamGet = &quot;&quot;\r\n    If FlgIeQuit = 0 Then .Quit\r\n  End With\r\n  If Err.Number &lt;&gt; 0 Then\r\n    MsgBox &quot;\u30a8\u30e9\u30fc\u304c\u767a\u751f\u3057\u307e\u3057\u305f\u3002&quot; &amp; vbCrLf &amp; &quot;\u5185\u5bb9:&quot; &amp; Err.Description, 16 + 4096\r\n    Exit Sub\r\n  End If\r\n  On Error GoTo 0\r\n  If ParamGet = &quot;&quot; Then\r\n    MsgBox &quot;\u30e6\u30fc\u30b6\u30fc\u8a8d\u8a3c\u306b\u5931\u6557\u3057\u307e\u3057\u305f\u3002&quot;, 16 + 4096\r\n    Exit Sub\r\n  End If\r\n  GetToken ParamGet\r\nEnd Sub\r\n\r\nPrivate Sub GetToken(ByVal param)\r\n'\u5404\u30c8\u30fc\u30af\u30f3\u53d6\u5f97\r\n  Dim v, vv\r\n  Dim i\r\n  \r\n  param = Replace(param, REDIRECT_URL &amp; &quot;#&quot;, &quot;&quot;)\r\n  v = Split(param, &quot;&amp;&quot;)\r\n  For i = LBound(v) To UBound(v)\r\n    vv = Split(v(i), &quot;=&quot;)\r\n    Select Case LCase(Trim(vv(0)))\r\n      Case &quot;access_token&quot;: AccessToken = vv(1)\r\n      Case &quot;expires_in&quot;: ExpiresIn = vv(1): DateExpires = DateAdd(&quot;s&quot;, CDbl(ExpiresIn), Now()) '\u30a2\u30af\u30bb\u30b9\u30c8\u30fc\u30af\u30f3\u306e\u6709\u52b9\u6642\u9593\u8a2d\u5b9a\r\n      Case &quot;authentication_token&quot;: AuthenticationToken = vv(1)\r\n    End Select\r\n  Next\r\nEnd Sub\r\n\r\nPrivate Sub DownloadFile(ByVal filePath, ByVal url)\r\n'\u30d5\u30a1\u30a4\u30eb\u30c0\u30a6\u30f3\u30ed\u30fc\u30c9\r\n  Dim dat\r\n  Const adTypeBinary = 1\r\n  \r\n  On Error Resume Next\r\n  With CreateObject(&quot;Scripting.FileSystemObject&quot;)\r\n    If .FileExists(filePath) Then .DeleteFile filePath\r\n  End With\r\n  With CreateObject(&quot;MSXML2.XMLHTTP&quot;)\r\n    .Open &quot;GET&quot;, url, False\r\n    .send\r\n    If .Status = 200 Then\r\n      dat = .responseBody\r\n      With CreateObject(&quot;ADODB.Stream&quot;)\r\n        .Type = adTypeBinary\r\n        .Open\r\n        .Write dat\r\n        .SaveToFile filePath\r\n        .Close\r\n      End With\r\n    Else\r\n      MsgBox &quot;\u30d5\u30a1\u30a4\u30eb\u4fdd\u5b58\u51e6\u7406\u304c\u5931\u6557\u3057\u307e\u3057\u305f\u3002&quot;, 16 + 4096\r\n      Exit Sub\r\n    End If\r\n  End With\r\n  If Err.Number &lt;&gt; 0 Then Err.Clear: MsgBox &quot;\u30d5\u30a1\u30a4\u30eb\u4fdd\u5b58\u51e6\u7406\u304c\u5931\u6557\u3057\u307e\u3057\u305f\u3002&quot;, 16 + 4096: Exit Sub\r\n  On Error GoTo 0\r\nEnd Sub\r\n\r\nPrivate Function GetSkyDriveFolderId(ByVal code, ByVal fn)\r\n'SkyDrive\u306e\u30d5\u30a9\u30eb\u30c0\u30fcID\u53d6\u5f97\r\n'\u30d5\u30a9\u30eb\u30c0\u30fc\u306a\u3057:NoFolder, \u30d5\u30a9\u30eb\u30c0\u30fc\u3042\u308a:id, \u30a8\u30e9\u30fc:Err\r\n  Dim ret\r\n  Dim js\r\n  Dim scr\r\n  Dim d\r\n  Dim elm\r\n    \r\n  js = &quot;&quot;: ret = &quot;NoFolder&quot; '\u521d\u671f\u5316\r\n  On Error Resume Next\r\n  With CreateObject(&quot;MSXML2.XMLHTTP&quot;)\r\n    .Open &quot;GET&quot;, &quot;https:\/\/apis.live.net\/v5.0\/me\/skydrive\/files&quot;, False\r\n    .setRequestHeader &quot;Authorization&quot;, &quot;Bearer &quot; &amp; code\r\n    .send\r\n    If .Status = 200 Then js = .responseText\r\n  End With\r\n  If Len(js) &gt; 0 Then\r\n    js = Replace(js, vbCr, &quot;&quot;)\r\n    js = Replace(js, vbLf, &quot;&quot;)\r\n    js = Replace(js, vbCrLf, &quot;&quot;)\r\n    js = &quot;(&quot; &amp; js &amp; &quot;)&quot;\r\n    Set d = CreateObject(&quot;htmlfile&quot;)\r\n    Set elm = d.createElement(&quot;span&quot;)\r\n    elm.setAttribute &quot;id&quot;, &quot;result&quot;\r\n    d.appendChild elm\r\n    scr = &quot;var objects= eval('&quot; &amp; js &amp; &quot;').data;&quot;\r\n    scr = scr &amp; &quot;for(var i in objects){&quot;\r\n    scr = scr &amp; &quot;  if(objects&#x5B;i].type=='folder' &amp;&amp; objects&#x5B;i].name=='&quot; &amp; fn &amp; &quot;'){&quot;\r\n    scr = scr &amp; &quot;    document.getElementById('result').innerText=objects&#x5B;i].id;&quot;\r\n    scr = scr &amp; &quot;  }&quot;\r\n    scr = scr &amp; &quot;}&quot;\r\n    d.parentWindow.execScript scr\r\n    If Len(elm.innerText) &gt; 0 Then ret = elm.innerText\r\n  End If\r\n  If Err.Number &lt;&gt; 0 Then Err.Clear: ret = &quot;Err&quot;\r\n  On Error GoTo 0\r\n  GetSkyDriveFolderId = ret\r\nEnd Function\r\n\r\nPrivate Function GetFilesInfo(ByVal code, ByVal id)\r\n'SkyDrive\u306e\u30d5\u30a1\u30a4\u30eb\u60c5\u5831(\u30d5\u30a1\u30a4\u30eb\u540d,URL)\u53d6\u5f97\r\n'\u30d5\u30a1\u30a4\u30eb\u306a\u3057:NoFile, \u30d5\u30a1\u30a4\u30eb\u3042\u308a:\u30d5\u30a1\u30a4\u30eb\u540d;URL, \u30a8\u30e9\u30fc:Err\r\n  Dim ret\r\n  Dim js\r\n  Dim scr\r\n  Dim d\r\n  Dim elm\r\n    \r\n  js = &quot;&quot;: ret = &quot;NoFile&quot; '\u521d\u671f\u5316\r\n  On Error Resume Next\r\n  With CreateObject(&quot;MSXML2.XMLHTTP&quot;)\r\n    .Open &quot;GET&quot;, &quot;https:\/\/apis.live.net\/v5.0\/&quot; &amp; id &amp; &quot;\/files\/&quot;, False\r\n    .setRequestHeader &quot;Authorization&quot;, &quot;Bearer &quot; &amp; code\r\n    .send\r\n    If .Status = 200 Then js = .responseText\r\n  End With\r\n  If Len(js) &gt; 0 Then\r\n    js = Replace(js, vbCr, &quot;&quot;)\r\n    js = Replace(js, vbLf, &quot;&quot;)\r\n    js = Replace(js, vbCrLf, &quot;&quot;)\r\n    js = &quot;(&quot; &amp; js &amp; &quot;)&quot;\r\n    Set d = CreateObject(&quot;htmlfile&quot;)\r\n    Set elm = d.createElement(&quot;span&quot;)\r\n    elm.setAttribute &quot;id&quot;, &quot;result&quot;\r\n    d.appendChild elm\r\n    scr = &quot;var objects= eval('&quot; &amp; js &amp; &quot;').data;&quot;\r\n    scr = scr &amp; &quot;var j=0;&quot;\r\n    scr = scr &amp; &quot;for(var i in objects){&quot;\r\n    scr = scr &amp; &quot;  if(objects&#x5B;i].type=='file'){&quot;\r\n    scr = scr &amp; &quot;    if(j==0){&quot;\r\n    scr = scr &amp; &quot;      document.getElementById('result').innerText=objects&#x5B;i].name+&quot;&quot;;&quot;&quot;+objects&#x5B;i].source;&quot;\r\n    scr = scr &amp; &quot;    }else{&quot;\r\n    scr = scr &amp; &quot;      document.getElementById('result').innerText=document.getElementById('result').innerText+&quot;&quot;\\n&quot;&quot;+objects&#x5B;i].name+&quot;&quot;;&quot;&quot;+objects&#x5B;i].source;&quot;\r\n    scr = scr &amp; &quot;    }&quot;\r\n    scr = scr &amp; &quot;    j++;&quot;\r\n    scr = scr &amp; &quot;  }&quot;\r\n    scr = scr &amp; &quot;}&quot;\r\n    d.parentWindow.execScript scr\r\n    If Len(elm.innerText) &gt; 0 Then ret = elm.innerText\r\n  End If\r\n  If Err.Number &lt;&gt; 0 Then Err.Clear: ret = &quot;Err&quot;\r\n  On Error GoTo 0\r\n  GetFilesInfo = ret\r\nEnd Function\r\n\r\nPrivate Function EncodeURL(ByVal sWord)\r\n  Dim d\r\n  Dim elm\r\n  \r\n  sWord = Replace(sWord, &quot;\\&quot;, &quot;\\\\&quot;)\r\n  sWord = Replace(sWord, &quot;'&quot;, &quot;\\'&quot;)\r\n  Set d = CreateObject(&quot;htmlfile&quot;)\r\n  Set elm = d.createElement(&quot;span&quot;)\r\n  elm.setAttribute &quot;id&quot;, &quot;result&quot;\r\n  d.appendChild elm\r\n  d.parentWindow.execScript &quot;document.getElementById('result').innerText=encodeURIComponent('&quot; &amp; sWord &amp; &quot;');&quot;\r\n  EncodeURL = elm.innerText\r\nEnd Function\r\n\r\nPublic Sub IE_DocumentComplete(ByVal pDisp, url)\r\n  If InStr(url, REDIRECT_URL &amp; &quot;#access_token=&quot;) Then ParamGet = url\r\nEnd Sub\r\n\r\nPublic Sub IE_OnQuit()\r\n  FlgIeQuit = 1\r\nEnd Sub<\/pre>\n<p>\u4e0a\u8a18\u30b9\u30af\u30ea\u30d7\u30c8\u3092\u5b9f\u884c\u3059\u308b\u3068\u3001&#8221;<span style=\"color: #ff0000; font-weight: bold;\">FOLDER_NAME<\/span>&#8220;\u3067\u6307\u5b9a\u3057\u305fSkyDrive\u30d5\u30a9\u30eb\u30c0\u30fc\u5185\u306e\u30d5\u30a1\u30a4\u30eb\u3092\u30c7\u30b9\u30af\u30c8\u30c3\u30d7\u306b\u30c0\u30a6\u30f3\u30ed\u30fc\u30c9\u3057\u307e\u3059\u3002<\/p>\n","protected":false},"excerpt":{"rendered":"\u524d\u56de\u306fSkyDrive API\u3092\u5229\u7528\u3057\u3066\u30c9\u30e9\u30c3\u30b0&#038;\u30c9\u30ed\u30c3\u30d7\u3057\u305f\u30d5\u30a1\u30a4\u30eb\u3092SkyDrive\u4e0a\u306e\u30d5\u30a9\u30eb\u30c0\u30fc\u306b\u30a2\u30c3\u30d7\u3059\u308bVBScript\u3092\u7d39\u4ecb\u3057\u307e\u3057\u305f\u304c\u3001\u4eca\u56de\u306f\u9006\u306bSkyDrive\u4e0a\u306e\u30d5\u30a9\u30eb\u30c0\u30fc\u304b\u3089\u30d5\u30a1\u30a4\u30eb\u3092\u30c0\u30a6\u30f3\u30ed [&hellip;]","protected":false},"author":1,"featured_media":7132,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_jetpack_memberships_contains_paid_content":false,"footnotes":"","jetpack_publicize_message":"","jetpack_publicize_feature_enabled":true,"jetpack_social_post_already_shared":false,"jetpack_social_options":{"image_generator_settings":{"template":"highway","default_image_id":0,"font":"","enabled":false},"version":2}},"categories":[6],"tags":[97],"class_list":["post-2503","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-vbs","tag-skydrive-api"],"aioseo_notices":[],"jetpack_publicize_connections":[],"jetpack_featured_media_url":"https:\/\/www.ka-net.org\/blog\/wp-content\/uploads\/eyecatch-VBScript.png","jetpack_shortlink":"https:\/\/wp.me\/p4UZZr-En","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/www.ka-net.org\/blog\/index.php?rest_route=\/wp\/v2\/posts\/2503","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.ka-net.org\/blog\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.ka-net.org\/blog\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.ka-net.org\/blog\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.ka-net.org\/blog\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=2503"}],"version-history":[{"count":3,"href":"https:\/\/www.ka-net.org\/blog\/index.php?rest_route=\/wp\/v2\/posts\/2503\/revisions"}],"predecessor-version":[{"id":2506,"href":"https:\/\/www.ka-net.org\/blog\/index.php?rest_route=\/wp\/v2\/posts\/2503\/revisions\/2506"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.ka-net.org\/blog\/index.php?rest_route=\/wp\/v2\/media\/7132"}],"wp:attachment":[{"href":"https:\/\/www.ka-net.org\/blog\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=2503"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.ka-net.org\/blog\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=2503"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.ka-net.org\/blog\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=2503"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}