Text Based Web Browser for Programmer’s Forum

A Internet está cheia de distrações e, quando você está programando de cabeça para baixo, a última coisa que deseja é uma diversão. Por outro lado, a Internet é um recurso útil quando você está em um beco sem saída, como ao procurar online por assistência para uma exceção específica em seu código.

Então, como você pode evitar o efeito “esquilo” ao pesquisar online para resolver seu problema? Para isso, criei um script de navegador da Web baseado em texto no PowerShell para pesquisar stackoverflow.com por mim. Para desenvolvedores em um ambiente Windows, o PowerShell pode ser visto como uma ferramenta de produtividade útil. Usando o cmdlet Invoke-WebRequest, você pode enviar uma solicitação HTTP para o site de sua escolha e analisar a resposta para o seu console.

$search = Invoke-WebRequest "http://stackoverflow.com/search?q=$arg"

O cmdlet retorna uma resposta que pode ser filtrada e iterada para gravar no console.

$results = $search.links | where href -like "*/questions/*"  
foreach ($result in $results)
{
$count
+= 1
if ($result.href -notlike "*/questions/tagged*")
{
Write-Host [$count] -foregroundcolor DarkMagenta
Write-Host $result.InnerText
}
}

Prefaciar os resultados com um número permitirá que você selecione um resultado em seu console e invoque outro Invoke-WebRequest dos resultados para ler as perguntas e respostas reais à postagem que você selecionou no fórum.

$getlink = Read-Host "Select the linkt you want to view" 
[int]$i = $getlink-1
# gets content of the selected post
$var
= $results[$i].href
Write-Host You selected $results[$i].InnerText uri $var
$data
= Invoke-WebRequest "http://stackoverflow.com$var"

Write-Host ************ Posted Question ************
# write the posted question
$data
.ParsedHtml.getElementsByTagName("div") | Where "id" -match "question-header" | Select -ExpandProperty InnerText
$data
.ParsedHtml.getElementsByTagName("div") | Where "classname" -match "^question" | Select -ExpandProperty InnerText

Write-Host ************ Posted Answer ************
# write the posted accepted-answer first
$data
.ParsedHtml.getElementsByTagName("div") | Where "classname" -match "answer accepted-answer" | Select -ExpandProperty InnerText

# write the posted all other answers
$data
.ParsedHtml.getElementsByTagName("div") | Where "classname" -match "answer" | Select -ExpandProperty InnerText

A dica de ponta para isso é, se você estiver desenvolvendo no Visual Studio; por que não incluir esse utilitário no ambiente do Visual Studio?

Cenário

Seguindo o artigo Como adicionar / editar variáveis ​​de ambiente no Windows 7 , você pode chamar seu script do PowerShell do Visual Studio Package Manager Console, afinal, o PM é um console do PowerShell.

Fontes:
Como adicionar / editar variáveis ​​de ambiente no Windows 7: http://www.nextofwindows.com/how-to-addedit-environment-variables-in-windows-7/
código-fonte exto-posh-web: https: / /github.com/extofer/exto-posh-web