FallenGameR (fallengamer) wrote,
FallenGameR
fallengamer

MetaMusic будет на Powershell 3.0

Потавил вот на домашний комп Powershell 3.0 и чтобы стимулировать изучение новых фич из 3.0 решил MetaMusic допиливать на нем. F# язык конечно интересный, но PS 3.0 мне интереснее. Так что функиональщина откладывается до времен пока не появится подходящая задачка. Но я этот пост писал не для этого. Я просто хотел показать как одно и то же получается писать на двух языках. Итак, получение последних любимых треков с Last.fm:



F# 2.0

module LastFm
 
open System.Net
open System.Web
open System.Xml
open System.Xml.Linq
 
let lastfmcall args =
    let lastfm = "http://ws.audioscrobbler.com/2.0/?" 
    let apikey = "734ed2307a98ea98593e50eb1bc66294"
    let concatUrl = 
        List.map (fun pair -> fst pair + "=" + snd pair) >> 
        List.map HttpUtility.HtmlEncode >> 
        List.reduce (fun agg item -> agg + "&" + item)
    let args = ("api_key", apikey) :: args
    let url = lastfm + concatUrl args
    let client = new WebClient()
    XElement.Parse(client.DownloadString(url))
 
let lovedTracks = lastfmcall [ ("method","user.getLovedTracks"); ("user","FallenGameR") ]




Powershell 3.0

$GLOBAL:LastFmApiKey = "734ed2307a98ea98593e50eb1bc66294"

function Get-LastFmArgs
{
    $lastFmArgs = @{ api_key = $GLOBAL:LastFmApiKey }

    for$i = 0$i -lt $args.Length; $i += 2 )
    {
        $lastFmArgs[$args[$i]] = $args[$i + 1]
    }

    foreach$key in $lastFmArgs.Keys )
    {
        [Web.HttpUtility]::HtmlEncode( $key ) + "=" + [Web.HttpUtility]::HtmlEncode( $lastFmArgs.$key )
    }
}

function Invoke-LastFm[string] $Method )
{
    $lastFmArgs = Get-LastFmArgs method $Method @args
    $uri = "http://ws.audioscrobbler.com/2.0/?" + ($lastFmArgs -join "&")
    (Invoke-RestMethod $uri).lfm
}

Invoke-LastFm user.getLovedTracks user FallenGameR



PS Памятка. Для вывода подсвеченного синтаксиса в gvim в livejournal совместимом формате:
let html_use_css = 0
let html_number_lines = 0
let html_no_pre = 0
TOhtml
Заменить body на table tr td, убрать хедер.
В Livejournal выбрать опцию "Отключить автоформатирование" и вставить как html.
Tags: f#, metamusic, powershell
Subscribe

  • Disable on screen type keyboard in Windows 8

    For laptops it is strange to see on-screen keyboard that Windows 8 shows for modern applications. Such keyboard is ok to have for tablets where it…

  • MetaMusic

    Обновление метаданных идет полным ходом в моей коллекции. Даже с Pickard быстрее 5 артистов в день не получается сделать =) Но на мой взгляд хорошая…

  • Арт для альбомов в Zune

    ProcessMonitor выручил: Кроме арта с GUID читается ZuneAlbumArt.jpg Только что проверил, что если добавить картинку с таким именем, то Zune ее и…

  • Post a new comment

    Error

    default userpic

    Your reply will be screened

    Your IP address will be recorded 

    When you submit the form an invisible reCAPTCHA check will be performed.
    You must follow the Privacy Policy and Google Terms of use.
  • 0 comments