简体   繁体   中英

StackOverflow reputation using Windows Command Prompt (cmd.exe)

How can I view my reputation with a Command Prompt script?

(In reply to StackOverflow reputation using PowerShell , because I'm bored as hell.)

@echo off & setlocal
:: Supports curl, wget, plink, and nc

set SoUID=YOUR UID HERE
:: Example: set SoUID=49849
set SoHost=stackoverflow.com

set FlairPath=/users/flair/%SoUID%.json
set FlairURL=http://%SoHost%%FlairPath%
set TempTag=%SoHost%-%SoUID%-%random%
set TempFile=%TEMP%\%TempTag%.json
set Script=%TEMP%\%TempTag%.script
set RawOut=%TEMP%\%TempTag%.out

call :Check curl
if not "%App%"=="" "%App%" -o "%TempFile%" -s "%FlairURL%" & goto :Next

call :Check wget
if not "%App%"=="" "%App%" -O "%TempFile%" -q "%FlairURL%" & goto :Next

call :Check plink
if not "%App%"=="" call :MakeScript & "%App%" -raw %SoHost% -P 80 -batch  "%RawOut%" & goto :NextHdr

call :Check nc
if not "%App%"=="" call :MakeScript & "%App%" %SoHost% 80  "%RawOut%" & goto :NextHdr

>&2 echo curl, wget, plink or netcat not found. Downloading plink from PuTTY site.
set App=%TEMP%\plink.exe
call :Mirror ftp.chiark.greenend.org.uk /users/sgtatham/putty-latest/x86/plink.exe
if not exist "%App%" call :Mirror ftp.samurai.com /pub/putty/putty-latest/x86/plink.exe
if not exist "%App%" call :Mirror ftp.totem.fix.no /pub/mirrors/putty/putty-latest/x86/plink.exe
if not exist "%App%" call :Mirror ftp.ds5.agh.edu.pl /pub/putty/putty-latest/x86/plink.exe
if not exist "%App%" goto :NoApp
call :MakeScript & "%App%" -raw %SoHost% -P 80 -batch  "%RawOut%" & del "%App%" & goto :NextHdr
:Mirror
if exist "%App%" del "%App%"
> "%Script%" echo=lcd "%TEMP%"
>>"%Script%" echo=binary
>>"%Script%" echo=get %~2
>>"%Script%" echo=bye
ftp -s:"%Script%" -A -v -i %~1 > nul 2> nul
goto :EOF
:NextHdr
for /f "usebackq tokens=1,* delims=:" %%a in ("%RawOut%") do (
    if [%%a]==[{"id"] set Flair=%%a:%%b & del "%Script%" "%RawOut%" & goto :Next2
)
:NoApp
>&2 echo Giving up. & goto :EOF
:Next
if not exist "%TempFile%" echo Error downloading data. & goto :EOF
set /p Flair=&2 echo Something went bad.
) else (
    if "%SoName%"=="" (
        echo Your reputation is %SoReputation%.
    ) else (
        echo Reputation of %SoName% is %SoReputation%.
    )
)
goto :EOF
:Parse
if "%~1"=="" goto :EOF
set Line=%~1
shift
if /i "%Line:~0,11%"=="reputation:" (
    set SoReputation=%Line:~11%
    goto :Parse
)
if /i "%Line:~0,12%"=="displayName:" (
    set SoName=%Line:~12%
    goto :Parse
)
goto :Parse
:Check
set App=
for %%e in (%PATHEXT%) do for %%i in (%1%%e) do if NOT "%%~$PATH:i"=="" set App=%%~$PATH:i
goto :EOF
:MakeScript
> "%Script%" echo=GET %FlairPath% HTTP/1.1
>>"%Script%" echo=Host: %SoHost%
>>"%Script%" echo=Connection: close
>>"%Script%" echo=
goto :EOF

在命令提示符窗口中键入:

start iexplore http://stackoverflow.com/users/flair/{your UID here}.html

There is more elaborate data for users available via (JSON):

http://stackoverflow.com/users/rep/50475/2009-01-01/2009-01-31

You could get some interesting data by parsing that string. Jon Skeet uses that for his rep tracker .

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM