{"action":"created","comment":{"url":"https://api.github.com/repos/CrisisTextLine/Elmer/pulls/comments/86454735","pull_request_review_id":7114908,"id":86454735,"diff_hunk":"@@ -0,0 +1,158 @@\n+'use strict';\n+const CronJob = require('cron').CronJob;\n+const request = require('request-promise');\n+const fs = require('fs');\n+\n+new CronJob(CONFIG.time_interval.request_VolunteerMatches, handleVMCSVRetrieval, null, true);\n+\n+// Pull CSV of people who have clicked interested in Volunteer Match \n+// and add them to a mailChimp list\n+\n+function handleVMCSVRetrieval () {\n+  loginVolunteerMatch()\n+  .then(getVolunteerMatchTSV)\n+  .then(TSVtoCSV)\n+  .then(CSV => {\n+    return Promise.all([\n+                       ...postToMailchimp(CSV), \n+                       exportCSV(CSV)\n+                       ]);\n+  })\n+  .then(returnArr => {\n+    CONSOLE_WITH_TIME(`returnArr ${returnArr[returnArr.length-1]}`);\n+  })\n+  .catch((err) => CONSOLE_WITH_TIME(`[ERROR] in handleVMCSVRetrieval: ${err}`));\n+}\n+\n+function loginVolunteerMatch () {\n+  const options = {\n+    url: 'http://www.volunteermatch.org/flowController',\n+    method: 'POST',\n+    form: {\n+      username: KEYS.VolunteerMatch.username,\n+      password: KEYS.VolunteerMatch.password,\n+      submitAction: `login`,\n+      submit_login: true\n+    },\n+    resolveWithFullResponse: true\n+  };\n+\n+  return request(options).then(res => {\n+    // cookies are separated by ; not , \n+    const cookies = res.headers['set-cookie'].join( ).split(';');\n+    // find the cookie that indicates the user\n+    const userCookie = cookies.filter(cook=>/user=/g.test(cook))[0];\n+    // Extract the significant part\n+    // This still works if we did it on the whole cookie header string\n+    // but I'm not confident that would always be the case. \n+    return userCookie.match(/\"(.*?)\"/ )[1];\n+  });\n+}\n+\n+function getVolunteerMatchTSV (userCookie) {\n+  return request({\n+    url: 'http://www.volunteermatch.org/track/referral_lists.jsp?opp_id=0&months=1&pageSize=20&id=733308&export_type=TSV&export=Export&id=733308&sortedBy=opp.title&sortedDir=desc&pageStart=0',\n+    headers: {\n+      'cookie': `user=${userCookie}`\n+    }\n+  });\n+}\n+\n+function TSVtoCSV (TSV) {\n+  return TSV.replace(/,/g, '-').replace(/\\t/g, ',');\n+}\n+\n+function postToMailchimp (CSV) {\n+  const CSVlines = CSV.split(`\\n`);\n+  const headers = CSVlines.shift().split(',').slice(1);\n+  const CSVbatch = [];\n+\n+  let i = 0;\n+  while(i < CSVlines.length) {\n+    if (i+CONFIG.mailChimpAPICallLimit>CSVlines.length) {\n+      CSVbatch.push(CSVlines.slice(i, CSVlines.length));\n+      break;\n+    }\n+    CSVbatch.push(CSVlines.slice(i, i += CONFIG.mailChimpAPICallLimit));\n+  }\n+\n+  const requestBodies = CSVbatch.map(CSVpart => {\n+    return {\n+      'members': csvMailChimpJSON(headers, CSVpart), \n+      'update_existing': true\n+    };\n+  });\n+\n+  return requestBodies.map(requestBody => {\n+    const options = {\n+      header: {\n+        'content-type': 'application/json',\n+      },\n+      method: 'POST',\n+      auth: {\n+        user: 'api-key', \n+        password: KEYS.mailchimp.api_key\n+      },\n+      url: `https://${KEYS.mailchimp.instance}.api.mailchimp.com/3.0/lists/${KEYS.mailchimp.lists.VMatch}`,\n+      body: JSON.stringify(requestBody)\n+    };\n+    request(options).then(res => `mailchimp ${res}`);\n+  });\n+}\n+\n+function csvMailChimpJSON (headers, CSVLines) {\n+  const removeDups = {};\n+  const results = [];\n+\n+  CSVLines.forEach(lineText => {\n+    const lineArr = lineText.split(',');\n+\n+    // If the email address has not been used already\n+    const userEmail = lineArr.shift().toLowerCase();\n+\n+    if (!removeDups[userEmail]) {\n+      removeDups[userEmail] = {};\n+      lineArr.forEach((entry, i) => {\n+        if (entry !== 'NULL') {\n+          if (headers[i] === 'Opportunity Title') {\n+            removeDups[userEmail].OPP = entry;\n+          } else if (headers[i] === 'Full Address') {\n+            removeDups[userEmail].ADDRESS = entry;\n+          } else if (headers[i] === 'Street Address') {\n+            removeDups[userEmail].STREET = entry;\n+          } else if (headers[i] === 'Street Address 2') {\n+            removeDups[userEmail].STREET2 = entry;\n+          } else if (headers[i] === 'Referral Date') {\n+            const date = entry.split(' ')[0].replace(/-/g, '/');\n+            const MCdate = date.slice(5)+'/'+date.slice(0,4);\n+            removeDups[userEmail].RDATE = MCdate;\n+          } else if (headers[i]){\n+            removeDups[userEmail][headers[i].toUpperCase()] = entry;\n+          } else {\n+            CONSOLE_WITH_TIME(`[ERROR] csvMailChimpJSON could not add ${entry} because the header does not exist, user: ${userLine}`);\n+          }\n+        }\n+      });\n+    }\n+  });\n+\n+  for (let email in removeDups) {\n+    results.push({\n+      'email_address': email,\n+      'status_if_new': 'subscribed',\n+      'merge_fields': removeDups[email]\n+    });\n+  }\n+\n+  return results;\n+}\n+\n+function exportCSV (CSVString) {\n+  return new Promise(function(resolve, reject) {\n+    fs.writeFile('./VMVolunteers.csv', CSVString, 'utf8', (err) => {","path":"jobs/recruitment/volunteerMatches.js","position":152,"original_position":152,"commit_id":"e39aa8d96204e4d2a7f40c802798fc1acc13af77","original_commit_id":"e39aa8d96204e4d2a7f40c802798fc1acc13af77","user":{"login":"tongxiang","id":5678066,"avatar_url":"https://avatars.githubusercontent.com/u/5678066?v=3","gravatar_id":"","url":"https://api.github.com/users/tongxiang","html_url":"https://github.com/tongxiang","followers_url":"https://api.github.com/users/tongxiang/followers","following_url":"https://api.github.com/users/tongxiang/following{/other_user}","gists_url":"https://api.github.com/users/tongxiang/gists{/gist_id}","starred_url":"https://api.github.com/users/tongxiang/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/tongxiang/subscriptions","organizations_url":"https://api.github.com/users/tongxiang/orgs","repos_url":"https://api.github.com/users/tongxiang/repos","events_url":"https://api.github.com/users/tongxiang/events{/privacy}","received_events_url":"https://api.github.com/users/tongxiang/received_events","type":"User","site_admin":false},"body":"comment this out for now","created_at":"2016-11-03T22:13:13Z","updated_at":"2016-11-03T22:13:13Z","html_url":"https://github.com/CrisisTextLine/Elmer/pull/232#discussion_r86454735","pull_request_url":"https://api.github.com/repos/CrisisTextLine/Elmer/pulls/232","_links":{"self":{"href":"https://api.github.com/repos/CrisisTextLine/Elmer/pulls/comments/86454735"},"html":{"href":"https://github.com/CrisisTextLine/Elmer/pull/232#discussion_r86454735"},"pull_request":{"href":"https://api.github.com/repos/CrisisTextLine/Elmer/pulls/232"}}},"pull_request":{"url":"https://api.github.com/repos/CrisisTextLine/Elmer/pulls/232","id":92068734,"html_url":"https://github.com/CrisisTextLine/Elmer/pull/232","diff_url":"https://github.com/CrisisTextLine/Elmer/pull/232.diff","patch_url":"https://github.com/CrisisTextLine/Elmer/pull/232.patch","issue_url":"https://api.github.com/repos/CrisisTextLine/Elmer/issues/232","number":232,"state":"open","locked":false,"title":"Get volunteer matches","user":{"login":"apackin","id":10517945,"avatar_url":"https://avatars.githubusercontent.com/u/10517945?v=3","gravatar_id":"","url":"https://api.github.com/users/apackin","html_url":"https://github.com/apackin","followers_url":"https://api.github.com/users/apackin/followers","following_url":"https://api.github.com/users/apackin/following{/other_user}","gists_url":"https://api.github.com/users/apackin/gists{/gist_id}","starred_url":"https://api.github.com/users/apackin/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/apackin/subscriptions","organizations_url":"https://api.github.com/users/apackin/orgs","repos_url":"https://api.github.com/users/apackin/repos","events_url":"https://api.github.com/users/apackin/events{/privacy}","received_events_url":"https://api.github.com/users/apackin/received_events","type":"User","site_admin":false},"body":"#### What's this PR do?\r\nRetrieves information for all volunteers that are interested in VM and adds them to a MailChimp List\r\n#### Where should the reviewer start?\r\n#### How should this be manually tested?\r\n1) Add global.Keys and .config\r\n2) run the file\r\n3) check that the .csv was created correctly\r\n4) users listed in the csv should all be present in MailChimp List: https://us5.admin.mailchimp.com/lists/members/?id=189493#p:1-s:100-so:false\r\n\r\n#### Any background context you want to provide?\r\n#### What are the relevant tickets?\r\nhttps://admin.crisistextline.org/jira/secure/RapidBoard.jspa?rapidView=5&view=detail&selectedIssue=INT-323\r\nhttps://admin.crisistextline.org/jira/secure/RapidBoard.jspa?rapidView=5&view=detail&selectedIssue=INT-409\r\n#### Questions:\r\n","created_at":"2016-11-02T22:34:53Z","updated_at":"2016-11-03T22:13:13Z","closed_at":null,"merged_at":null,"merge_commit_sha":"dc833a30a2d88fde2e2a2f8a88d75c9788d46ace","assignee":null,"assignees":[],"milestone":null,"commits_url":"https://api.github.com/repos/CrisisTextLine/Elmer/pulls/232/commits","review_comments_url":"https://api.github.com/repos/CrisisTextLine/Elmer/pulls/232/comments","review_comment_url":"https://api.github.com/repos/CrisisTextLine/Elmer/pulls/comments{/number}","comments_url":"https://api.github.com/repos/CrisisTextLine/Elmer/issues/232/comments","statuses_url":"https://api.github.com/repos/CrisisTextLine/Elmer/statuses/e39aa8d96204e4d2a7f40c802798fc1acc13af77","head":{"label":"CrisisTextLine:getVolunteerMatches","ref":"getVolunteerMatches","sha":"e39aa8d96204e4d2a7f40c802798fc1acc13af77","user":{"login":"CrisisTextLine","id":3536558,"avatar_url":"https://avatars.githubusercontent.com/u/3536558?v=3","gravatar_id":"","url":"https://api.github.com/users/CrisisTextLine","html_url":"https://github.com/CrisisTextLine","followers_url":"https://api.github.com/users/CrisisTextLine/followers","following_url":"https://api.github.com/users/CrisisTextLine/following{/other_user}","gists_url":"https://api.github.com/users/CrisisTextLine/gists{/gist_id}","starred_url":"https://api.github.com/users/CrisisTextLine/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/CrisisTextLine/subscriptions","organizations_url":"https://api.github.com/users/CrisisTextLine/orgs","repos_url":"https://api.github.com/users/CrisisTextLine/repos","events_url":"https://api.github.com/users/CrisisTextLine/events{/privacy}","received_events_url":"https://api.github.com/users/CrisisTextLine/received_events","type":"Organization","site_admin":false},"repo":{"id":47287892,"name":"Elmer","full_name":"CrisisTextLine/Elmer","owner":{"login":"CrisisTextLine","id":3536558,"avatar_url":"https://avatars.githubusercontent.com/u/3536558?v=3","gravatar_id":"","url":"https://api.github.com/users/CrisisTextLine","html_url":"https://github.com/CrisisTextLine","followers_url":"https://api.github.com/users/CrisisTextLine/followers","following_url":"https://api.github.com/users/CrisisTextLine/following{/other_user}","gists_url":"https://api.github.com/users/CrisisTextLine/gists{/gist_id}","starred_url":"https://api.github.com/users/CrisisTextLine/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/CrisisTextLine/subscriptions","organizations_url":"https://api.github.com/users/CrisisTextLine/orgs","repos_url":"https://api.github.com/users/CrisisTextLine/repos","events_url":"https://api.github.com/users/CrisisTextLine/events{/privacy}","received_events_url":"https://api.github.com/users/CrisisTextLine/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/CrisisTextLine/Elmer","description":"Extends the functionality of WhenIWork for custom use cases","fork":false,"url":"https://api.github.com/repos/CrisisTextLine/Elmer","forks_url":"https://api.github.com/repos/CrisisTextLine/Elmer/forks","keys_url":"https://api.github.com/repos/CrisisTextLine/Elmer/keys{/key_id}","collaborators_url":"https://api.github.com/repos/CrisisTextLine/Elmer/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/CrisisTextLine/Elmer/teams","hooks_url":"https://api.github.com/repos/CrisisTextLine/Elmer/hooks","issue_events_url":"https://api.github.com/repos/CrisisTextLine/Elmer/issues/events{/number}","events_url":"https://api.github.com/repos/CrisisTextLine/Elmer/events","assignees_url":"https://api.github.com/repos/CrisisTextLine/Elmer/assignees{/user}","branches_url":"https://api.github.com/repos/CrisisTextLine/Elmer/branches{/branch}","tags_url":"https://api.github.com/repos/CrisisTextLine/Elmer/tags","blobs_url":"https://api.github.com/repos/CrisisTextLine/Elmer/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/CrisisTextLine/Elmer/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/CrisisTextLine/Elmer/git/refs{/sha}","trees_url":"https://api.github.com/repos/CrisisTextLine/Elmer/git/trees{/sha}","statuses_url":"https://api.github.com/repos/CrisisTextLine/Elmer/statuses/{sha}","languages_url":"https://api.github.com/repos/CrisisTextLine/Elmer/languages","stargazers_url":"https://api.github.com/repos/CrisisTextLine/Elmer/stargazers","contributors_url":"https://api.github.com/repos/CrisisTextLine/Elmer/contributors","subscribers_url":"https://api.github.com/repos/CrisisTextLine/Elmer/subscribers","subscription_url":"https://api.github.com/repos/CrisisTextLine/Elmer/subscription","commits_url":"https://api.github.com/repos/CrisisTextLine/Elmer/commits{/sha}","git_commits_url":"https://api.github.com/repos/CrisisTextLine/Elmer/git/commits{/sha}","comments_url":"https://api.github.com/repos/CrisisTextLine/Elmer/comments{/number}","issue_comment_url":"https://api.github.com/repos/CrisisTextLine/Elmer/issues/comments{/number}","contents_url":"https://api.github.com/repos/CrisisTextLine/Elmer/contents/{+path}","compare_url":"https://api.github.com/repos/CrisisTextLine/Elmer/compare/{base}...{head}","merges_url":"https://api.github.com/repos/CrisisTextLine/Elmer/merges","archive_url":"https://api.github.com/repos/CrisisTextLine/Elmer/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/CrisisTextLine/Elmer/downloads","issues_url":"https://api.github.com/repos/CrisisTextLine/Elmer/issues{/number}","pulls_url":"https://api.github.com/repos/CrisisTextLine/Elmer/pulls{/number}","milestones_url":"https://api.github.com/repos/CrisisTextLine/Elmer/milestones{/number}","notifications_url":"https://api.github.com/repos/CrisisTextLine/Elmer/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/CrisisTextLine/Elmer/labels{/name}","releases_url":"https://api.github.com/repos/CrisisTextLine/Elmer/releases{/id}","deployments_url":"https://api.github.com/repos/CrisisTextLine/Elmer/deployments","created_at":"2015-12-02T20:51:51Z","updated_at":"2016-10-24T17:48:01Z","pushed_at":"2016-11-03T21:55:23Z","git_url":"git://github.com/CrisisTextLine/Elmer.git","ssh_url":"git@github.com:CrisisTextLine/Elmer.git","clone_url":"https://github.com/CrisisTextLine/Elmer.git","svn_url":"https://github.com/CrisisTextLine/Elmer","homepage":"","size":717,"stargazers_count":5,"watchers_count":5,"language":"JavaScript","has_issues":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":1,"mirror_url":null,"open_issues_count":5,"forks":1,"open_issues":5,"watchers":5,"default_branch":"master"}},"base":{"label":"CrisisTextLine:master","ref":"master","sha":"4daacce0b193f2ca8b6d7ba388f327690de8083c","user":{"login":"CrisisTextLine","id":3536558,"avatar_url":"https://avatars.githubusercontent.com/u/3536558?v=3","gravatar_id":"","url":"https://api.github.com/users/CrisisTextLine","html_url":"https://github.com/CrisisTextLine","followers_url":"https://api.github.com/users/CrisisTextLine/followers","following_url":"https://api.github.com/users/CrisisTextLine/following{/other_user}","gists_url":"https://api.github.com/users/CrisisTextLine/gists{/gist_id}","starred_url":"https://api.github.com/users/CrisisTextLine/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/CrisisTextLine/subscriptions","organizations_url":"https://api.github.com/users/CrisisTextLine/orgs","repos_url":"https://api.github.com/users/CrisisTextLine/repos","events_url":"https://api.github.com/users/CrisisTextLine/events{/privacy}","received_events_url":"https://api.github.com/users/CrisisTextLine/received_events","type":"Organization","site_admin":false},"repo":{"id":47287892,"name":"Elmer","full_name":"CrisisTextLine/Elmer","owner":{"login":"CrisisTextLine","id":3536558,"avatar_url":"https://avatars.githubusercontent.com/u/3536558?v=3","gravatar_id":"","url":"https://api.github.com/users/CrisisTextLine","html_url":"https://github.com/CrisisTextLine","followers_url":"https://api.github.com/users/CrisisTextLine/followers","following_url":"https://api.github.com/users/CrisisTextLine/following{/other_user}","gists_url":"https://api.github.com/users/CrisisTextLine/gists{/gist_id}","starred_url":"https://api.github.com/users/CrisisTextLine/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/CrisisTextLine/subscriptions","organizations_url":"https://api.github.com/users/CrisisTextLine/orgs","repos_url":"https://api.github.com/users/CrisisTextLine/repos","events_url":"https://api.github.com/users/CrisisTextLine/events{/privacy}","received_events_url":"https://api.github.com/users/CrisisTextLine/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/CrisisTextLine/Elmer","description":"Extends the functionality of WhenIWork for custom use cases","fork":false,"url":"https://api.github.com/repos/CrisisTextLine/Elmer","forks_url":"https://api.github.com/repos/CrisisTextLine/Elmer/forks","keys_url":"https://api.github.com/repos/CrisisTextLine/Elmer/keys{/key_id}","collaborators_url":"https://api.github.com/repos/CrisisTextLine/Elmer/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/CrisisTextLine/Elmer/teams","hooks_url":"https://api.github.com/repos/CrisisTextLine/Elmer/hooks","issue_events_url":"https://api.github.com/repos/CrisisTextLine/Elmer/issues/events{/number}","events_url":"https://api.github.com/repos/CrisisTextLine/Elmer/events","assignees_url":"https://api.github.com/repos/CrisisTextLine/Elmer/assignees{/user}","branches_url":"https://api.github.com/repos/CrisisTextLine/Elmer/branches{/branch}","tags_url":"https://api.github.com/repos/CrisisTextLine/Elmer/tags","blobs_url":"https://api.github.com/repos/CrisisTextLine/Elmer/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/CrisisTextLine/Elmer/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/CrisisTextLine/Elmer/git/refs{/sha}","trees_url":"https://api.github.com/repos/CrisisTextLine/Elmer/git/trees{/sha}","statuses_url":"https://api.github.com/repos/CrisisTextLine/Elmer/statuses/{sha}","languages_url":"https://api.github.com/repos/CrisisTextLine/Elmer/languages","stargazers_url":"https://api.github.com/repos/CrisisTextLine/Elmer/stargazers","contributors_url":"https://api.github.com/repos/CrisisTextLine/Elmer/contributors","subscribers_url":"https://api.github.com/repos/CrisisTextLine/Elmer/subscribers","subscription_url":"https://api.github.com/repos/CrisisTextLine/Elmer/subscription","commits_url":"https://api.github.com/repos/CrisisTextLine/Elmer/commits{/sha}","git_commits_url":"https://api.github.com/repos/CrisisTextLine/Elmer/git/commits{/sha}","comments_url":"https://api.github.com/repos/CrisisTextLine/Elmer/comments{/number}","issue_comment_url":"https://api.github.com/repos/CrisisTextLine/Elmer/issues/comments{/number}","contents_url":"https://api.github.com/repos/CrisisTextLine/Elmer/contents/{+path}","compare_url":"https://api.github.com/repos/CrisisTextLine/Elmer/compare/{base}...{head}","merges_url":"https://api.github.com/repos/CrisisTextLine/Elmer/merges","archive_url":"https://api.github.com/repos/CrisisTextLine/Elmer/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/CrisisTextLine/Elmer/downloads","issues_url":"https://api.github.com/repos/CrisisTextLine/Elmer/issues{/number}","pulls_url":"https://api.github.com/repos/CrisisTextLine/Elmer/pulls{/number}","milestones_url":"https://api.github.com/repos/CrisisTextLine/Elmer/milestones{/number}","notifications_url":"https://api.github.com/repos/CrisisTextLine/Elmer/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/CrisisTextLine/Elmer/labels{/name}","releases_url":"https://api.github.com/repos/CrisisTextLine/Elmer/releases{/id}","deployments_url":"https://api.github.com/repos/CrisisTextLine/Elmer/deployments","created_at":"2015-12-02T20:51:51Z","updated_at":"2016-10-24T17:48:01Z","pushed_at":"2016-11-03T21:55:23Z","git_url":"git://github.com/CrisisTextLine/Elmer.git","ssh_url":"git@github.com:CrisisTextLine/Elmer.git","clone_url":"https://github.com/CrisisTextLine/Elmer.git","svn_url":"https://github.com/CrisisTextLine/Elmer","homepage":"","size":717,"stargazers_count":5,"watchers_count":5,"language":"JavaScript","has_issues":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":1,"mirror_url":null,"open_issues_count":5,"forks":1,"open_issues":5,"watchers":5,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/CrisisTextLine/Elmer/pulls/232"},"html":{"href":"https://github.com/CrisisTextLine/Elmer/pull/232"},"issue":{"href":"https://api.github.com/repos/CrisisTextLine/Elmer/issues/232"},"comments":{"href":"https://api.github.com/repos/CrisisTextLine/Elmer/issues/232/comments"},"review_comments":{"href":"https://api.github.com/repos/CrisisTextLine/Elmer/pulls/232/comments"},"review_comment":{"href":"https://api.github.com/repos/CrisisTextLine/Elmer/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/CrisisTextLine/Elmer/pulls/232/commits"},"statuses":{"href":"https://api.github.com/repos/CrisisTextLine/Elmer/statuses/e39aa8d96204e4d2a7f40c802798fc1acc13af77"}}}}
{"actor":{"display_login":"tongxiang"}}