5.4.2012 – Hrátky s Pythonem

⚠️ Pozor: obrázky z tohoto příspěvku se ztratily při výpadku v roce 2016. Chybějící obrázky nahradí automaticky vtipným placeholderem plugin Broken Image Placeholder.

Probudil jsem se v 5h ale byla mi taková zima že jsem byl nucen zalézt znovu po posteli a i když jsem se pořád budil, tak jsem vstal až v 14:30. Ráno jsem si akorát než jsem skončil v pelechu četl na DSD, ale to co jsem hledal, to jsem nenašel. Jinak tento pokoj ve kterém jsem byl je ten nejstudenější, protože v něm nefunguje topení – žádné tu totiž ani není.

V posteli bylo zase totální vedro, až při psaní tohoto blogpostu jsem si vzpomněl na to že bych mohl mít teplotu ale to se nepotvrdilo – teď jsem naměřil normálních 36,55 °C. Po tom probuzení jsem zjistil že (kupodivu! 😀 ) na WP není žádný klient pro Google Music. Tak když jsem si včera než jsem šel spát nainstaloval Visual C# for Windows Phone Express, řekl jsem si že se o jeden pokusím, když tak bude pouze pro mě až bez toho telefonu nedokážu žít.

Z dřívějších pokusů jsem věděl že z Pythonu .NET assembly vytvořit nejde – to jsem si ověřil už při dělání toho programu na přenos blogu na Blogger. Tak jsem to začal přepisovat do C# ale skončil jsem přesně tam kde jsem čekal, přepsat bych to ještě nějak dokázal, ale autentizovat se u Googlu už ne. Zkoušel jsem to pomocí .NET tříd, tak i pomocí tříd z Google-Data ale prostě ne. Ale nelituji toho, aspoň jesm zase trochu více poznal Python.

Tak večer jsem si znovu vyhledal, zda nějak nejde přece jen vytvořit to dll z pythonu. Našel jsem 2 způsoby – buď v SharpDevelop nebo přes ipy.exe (kompiler do .netu IronPythonu, dnes PTVS). První jsem zkusil tu snazší možnost na první pohled ale dopadlo to tak jak předtím(najednou jsem si vzpomněl) – nějaká chyba, které jesm nerozuměl a Google mi k ní neřekl jedinou věc. Druhá cesta byla přes ipy.exe.

Bez váhání jsem nastartoval SunamoVisualStudio, upravil jesm ho aby bral i soubory .py(projekty .pyproj nebylo nutno, to zvládl sám, bere obecně jakýkoliv typ projektu, který je v souboru .sln) a dal kompilovat. Ještě jsem musel vyřešit to že jsem přesunul složku test, kde byly z valné většiny jen multimediální soubory ale nedošlo mi že i když to je ve složce “test” tak na ně budou jiné soubory odkazovat. Vrátil jsem je tam a ou-je, kompilace byla úspěšná:


Kompilace pyc.py byla uspesna

Pak jsem se pokoušel to importovat do toho klientu Google Music pro WP ale ou-ha, nešlo to, protože WP pracuje pouze se SilverLight assembly a ne s klasickými .NET. A neexistuje žádná cesta Interopu nebo tak. Takže jsem se dostal pouze zde:

Silverlight assembly nekompatibilni se zbytkem

Pokusil jsem se dekompilovat tu assembly a ale už jak dekompilace trvala déle než 5s mi bylo jasné jak to dopadne. Nakonec trvala skoro 2minuty a procesor mi to vytížilo po celou dobu na 100%:

PyGoogleMusicAPI Decompilation Complete

Vložil jsem to do Visual C# ale hned 67 errorů:

PyGoogleMusicAPI 67 erroru

Napadlo mě že bych mohl zkusit odstranit ty špatné znaky(vidím tam zatím jen $) tak jsem to udělal – počet chyb se ale vyšplhal na závratných 1500 tak jsem si řekl že toto nemá cenu.. Jediné co mě napadá je dělat to přes webovou službu, ale to může být zase značně pomalé, zvláště když k ní bude přistupovat velké množství lidí. Ale stejně tak jako tak to jde přes net, takže člověk nečeká reakci v řádu ms. A mám chuť to aspoň zkusit, já se jen tak nevzdávám když už jsem se dostal tak daleko! 🙂

EDIT 6.4.2012:

Tak přes webovou službu to také nejde protože ty metody mají v sobě znak dolaru a VS je tak nevidí:

metody s dolarem

Zkoušel jsem i program, který by mi měl převést .NET Assembly na Silverlight Assembly, ale ten se zacyklil a vždy hlásil jen “failure”:

Silverlighter

Samozřejmě jsem našel i pokročilejší a nízkoúrovňovější techniky jak tu assembly převést ale podle mě by to k ničemu nevedlo, když se mi nepodařilo nahrát ani jako klasickou .NET assembly.

Leave a Reply

Your email address will not be published. Required fields are marked *