programing

PowerShell을 사용한 StackOverflow 평판

codeshow 2023. 8. 30. 22:20
반응형

PowerShell을 사용한 StackOverflow 평판

PowerShell 기능으로 내 평판을 보려면 어떻게 해야 합니까?

다음 기능을 사용할 수 있습니다.

Function Get-StackOverFlowReputation {
param($userID)
    $client = new-object System.Net.WebClient
    $JSONFlair = $client.DownloadString("http://stackoverflow.com/users/flair/$userid.json")
    $JSONFlair.split(",") | select-string "reputation","displayName"
}


260 >  Get-StackOverFlowReputation -userID 45571

"displayName":"Andy Schneider"
"reputation":"344"

빠르고 더럽습니다.JSON을 PS 객체로 변환하기 위해 멋진 라이브러리를 사용할 수 있다고 확신하지만 이것으로 작업이 완료될 것입니다.

이 질문은 매우 재미있어 보였고 이미 받아들여진 답이 있음에도 불구하고 저는 그것을 시도해야 했습니다.또한 999보다 큰 평판(즉, 1,000개에는 분할 중인 쉼표 포함)에 대해서는 허용된 답변이 제대로 작동하지 않는 것 같습니다.

플레어의 형식이 JSON에 있기 때문에 단순히 분할하는 것이 항상 작동하는 것은 아니며 JSON에 대한 정규식은 거의 불가능합니다.있는 동안에.NET JSON 라이브러리 솔루션을 모두 PowerShell(V1 포함) 내에 유지하고 싶었습니다.

다음은 3.5 JavaScriptSerializer 클래스를 사용하므로 스크립트에 어셈블리를 로드해야 합니다.

갱신하다

PowerShell 2.0을 사용하면 해시를 사용하여 "사용자 지정 개체"를 훨씬 쉽게 만들 수 있습니다.

function Get-StackOverflowReputation 
{
    param ( $UserId )
    $assembly = [Reflection.Assembly]::LoadWithPartialName("System.Web.Extensions")
    $client = New-Object System.Net.WebClient
    $json = $client.DownloadString("http://stackoverflow.com/users/flair/$UserId.json")
    $transmogrifer = New-Object System.Web.Script.Serialization.JavaScriptSerializer
    $jsonFlair = $transmogrifer.DeserializeObject( $json ) 
    $flair = New-Object PSObject -Property @{ user = $jsonFlair["displayName"]; rep = $jsonFlair["reputation"] }
    $flair
}

1> Get-StackOverflowReputation -UserId 45571      
    user                 rep
    ----                 --- 
    Andy Schneider       779

Powershell v3 CTP1에서는 더 짧고 쉽습니다.

function Get-StackOverflowReputation {
param($userID)
  $JSON = (Invoke-WebRequest "http://stackoverflow.com/users/flair/$userid.json").content
  convertfrom-Json $JSON
}

입니다.

Get-StackOverflowReputation 1021945

반환:

id           : 1021945
gravatarHtml :
profileUrl   : http://stackoverflow.com/users/1021945/jon-z
displayName  : jon Z
reputation   : 1,271
badgeHtml    : <span title="1 silver badge"><span class="badge2">&#9679;</span><span class="badgecount">1</span></span><span title="7 bronze badges"><span lass="badge3">&#9679;/span><span class="badgecount">7</span></span>

언급URL : https://stackoverflow.com/questions/946221/stackoverflow-reputation-using-powershell

반응형