YoutubR

-- UPDATE 2012 márc. 25 --

https://github.com/irssildur/YoutubR/wiki/Roadmap

-- /UPDATE --

-- UPDATE --

https://github.com/irssildur/YoutubR

-- /UPDATE --

Itt felmerült az igény egy Youtube desktop kliensre. Mivel úgyse nagyon van még említhető opensource projectem, ezért úgy gondoltam Flex alapokon belevágok. Fogalmam sincs, hogy van-e ilyen vagy nincs, de ezt jó alkalomnak tartom arra, hogy picit gyakoroljak egy nagyobb projectem előtt.

Flex SDK 4.5.1-el, pusztán azért, mert annak még csak Air 2.6 (2.5?) kell, ha jól emlékszem, így még Linux alatt is használható (ugye az Adobe sajnos nem hoz ki több Air-t Linux alá).

Ahogy van valami értékelhető, úgy szerintem ide fogom írogatni az infókat, meg githubra is töltögetem fel majd a forrást. Kérdéseket kommentben teszek majd fel, ha nagyon nem jutok valamivel dűlőre.

Első célkitűzésem a linkelt topic kívánalmainak megfelelni, utána jöhet a többi móka.

0. nap: Megismerkedtem a Youtube Data API for AS3-mal, sikeresen lekérdeztem a YT akkountom infóit, illetve sikeresen lejátszottam egy videót.

Márc. 24:

User videói már UI-n is listázódik, nem csak konzolban. Duplakattra lejátssza a kiválasztott videót. ErrorHandling is bekerült.

Hozzászólások

Letezik masik desktop youtube kliens, pl a Minitube, PPC-s Mac-en esely van vele meg youtube-ot nezni... Csinalj jobbat annal! :)
---
Hey! Where'd my terminal go?
DropBox tárhely itt!

Hát hogy PPC-s Macen ez hogy fog muzsikálni, azt nem tudom, de vannak ötleteim, amik talán jobbá tennék az enyémet :)

(Parti üzemmód playlisttel, így amikor egy buli eszeveszett YouTubozásba torkollik, akkor is kezelhető marad, hogy melyik szám jön éppen, esetleg MP3 támogatással is).

Van egy totem youtube plugin is. Régi gépemen használtam, mert csak azzal tudtam normális felbontásban nézni, a flasht nem bírta a proci.

lehet amatőr kérdés, de ezt hogy kell telepíteni/használni? Archon nyomulok.

Na, ma két probléma merült fel.

Egyrészt jópár videó nem játszható le olyan felkiáltással, hogy Embedded playerben user miatt nem szabad. De ehhez találtam már fixet, csak még nem megy.

Másrészt a verziószámozás kérdése. Azon gondolkoztam, hogy vajon kezdjem rögtön a 10-es verzióval és bugfixenként ugorjak egyet felfele? Egyrészt azért, hogy nehogy azt higgye a user, hogy ez valami rosszabb dolog, mint a Firefox, másrészt már a Windows is a 8-asnál tart, Linux meg a 3-asnál, meg is lehet nézni mennyivel rosszabb. Tiszta ciki lenne manapság a normális, főverziónként növekvő számozás, azt hiszem.

Jó, a verziószámozás csak kis viccelődés volt:)

Embedded cucc azért gáz, mert a feltöltő le tudja tiltani, hogy böngészősön kívül máshol is megjelenjen a videó. Fogalmam sincs ez miért jó, talán a reklámok miatt? Mindenesetre a chromeless player-t elvileg böngészős playernek érzékeli a YT, tehát le kéne tudnom játszani ezeket a videókat is, de mégis 150-es hibát dob.

Szerk:

Eszerint a topic szerint nincs megoldás a problémámra.

Mivel szűrni se nagyon lehet az ilyenekre, ezért ki kéne találnom, hogy mi legyen a user tájékoztatásával. Rage Against the Machine search-n tesztelem, és nem vicces, hogy 10 találatból 5-6 nem játszható le. Na mindegy, ezt a kérdéskört későbbre hagyom, hátha addig megoldódik magától :)

Lehet, hogy nem véletlenül nincs rendes Adobe Air app YT-hoz :)

Mondjuk workaround az lehetne (ezt próbáltam volna elsőre is), ha valahogy ki tudnám hámozni a video URL-jét, ami a tényleges tartalomra mutat és azt lejátszani a beépített playerrel. Hátha úgy megadja magát. Bár ez valószínüleg meg illegális. Pfej.

Szóval marad az, hogy ilyen esetben elirányítom a YT-ra, viszont akkor meg tök fölösleges a desktop app, ha úgyis böngészőben nézi a videót :)

Szerk2:

Érdekes módon a Minitube ugyanazt a videót, amit nálam 150-es errorral eldob a YT, azt lejátssza. Vagy trükköznek valamit, vagy nemtudom.

Nem kell behazudni semmit. Elméletileg api-n keresztül is le lehet kérdezni a video rtsp protokolos linkjét. Ha nem, akkor a video ID-ből le lehet kérni (URLRequest) a video oldalát (a mobil oldal kisebb, pl.: http://m.youtube.com/watch?v=Ie4E3Bmqb5w ), és ha ezt parse-olja, akkor ebből meg van a link, már csak le kell játszani.

Ha simán beágyazza az embedded player-t a flash-be, akkor nyilván nem fognak ezek a videók működni.

szerk.: most látom, hogy elméletileg flashből nem lejátszható az rtsp. VLC pl simán viszi.
szerk2.: ha a http-s linket ki tudod venni a sima youtube oldalról (pl.: http://youtube.com/watch?v=Ie4E3Bmqb5w ), akkor azt le tudod játszani:


package
{
import flash.display.Sprite;
import flash.events.Event;
import flash.media.Video;
import flash.net.NetConnection;
import flash.net.NetStream;

public class teszt extends Sprite
{
public function teszt()
{
var customClient:Object = new Object();
customClient.onCuePoint = cuePointHandler;
customClient.onMetaData = metaDataHandler;

var myVideo:Video = new Video();
addChild(myVideo);

var nc:NetConnection = new NetConnection();
nc.connect(null);
var ns:NetStream = new NetStream(nc);
ns.client = customClient;
myVideo.attachNetStream(ns);
ns.play("http://cache.server.prefix.youtube.com/videoplayback?sparams=...");

function cuePointHandler(infoObject:Object):void {
trace("cuePoint");
}
function metaDataHandler(infoObject:Object):void {
trace("metaData");
}
}
}
}

hmmm... Ez jo otlet volt... Igaz, nem en csinalom az appot, de erdekel a tema.

Ha ezt a linket meghivod a video id-val a vegen, akkor abban benne van a http-s stream url : pl: http://www.youtube.com/get_video_info?video_id=Ie4E3Bmqb5w
Ebbol elso korben a url_encoded_fmt_stream_map-ra lesz szukseged.

Egyebkent ne az api-ba rakott flash alapu lejatszot hasznald, mert akkor kb ugyanott vagy, mintha webrol nezned.