Changeset 169


Ignore:
Timestamp:
03/02/09 12:02:27 (4 years ago)
Author:
jeroen
Message:

checked in testing and cleaned up feed parsing

Files:
42 added
3 deleted
20 edited

Legend:

Unmodified
Added
Removed
  • trunk/as3/com/jeroenwijering/models/ImageModel.as

    r166 r169  
    8282                if(position < item['duration']) { 
    8383                        model.sendEvent(ModelEvent.TIME,{position:position,duration:item['duration']}); 
    84                 } else if (item['duration'] > 0 && model.config['respectduration']) { 
     84                } else if (item['duration'] > 0) { 
    8585                        pause(); 
    8686                        model.sendEvent(ModelEvent.STATE,{newstate:ModelStates.COMPLETED}); 
  • trunk/as3/com/jeroenwijering/models/YoutubeModel.as

    r166 r169  
    9797                        if(outgoing) { 
    9898                                var gid = getID(item['file']); 
    99                                 outgoing.send('AS3_'+unique,"loadVideoById",gid,0); 
     99                                outgoing.send('AS3_'+unique,"loadVideoById",gid,item['start']); 
    100100                                model.mediaHandler(loader); 
    101101                        } 
     
    126126        /** SWF loaded; add it to the tree **/ 
    127127        public function onSwfLoadComplete():void { 
    128                 outgoing.send('AS3_'+unique,"setSize",400,300); 
     128                //outgoing.send('AS3_'+unique,"setSize",400,300); 
    129129                model.config['mute'] == true ? volume(0): volume(model.config['volume']); 
    130130                connected = true; 
     
    187187 
    188188 
     189        /** Resize the YT player. **/ 
     190        public function resize(wid:Number,hei:Number) { 
     191                outgoing.send('AS3_'+unique,"setSize",wid,hei); 
     192        }; 
     193 
     194 
    189195        /** Seek to position. **/ 
    190196        override public function seek(pos:Number):void { 
  • trunk/as3/com/jeroenwijering/parsers/ATOMParser.as

    r168 r169  
    4949                                        itm['date'] = i.text().toString(); 
    5050                                        break; 
    51                                 case 'group': 
    52                                         itm = MediaParser.parseGroup(i,itm); 
    53                                         break; 
    5451                        } 
    5552                } 
  • trunk/as3/com/jeroenwijering/parsers/MediaParser.as

    r161 r169  
    1111 
    1212 
     13        /** Prefix for the JW Player namespace. **/ 
     14        private static var PREFIX = 'media'; 
     15 
     16 
    1317        /** 
    14         * Parse an MRSS group (Yahoo MediaRSS extension). 
     18        * Parse a feeditem for Yahoo MediaRSS extensions. 
     19        * The 'content' and 'group' elements can nest other MediaRSS elements. 
    1520        *  
    1621        * @param obj    The entire MRSS XML object. 
     
    2227        public static function parseGroup(obj:XML,itm:Object):Object { 
    2328                for each (var i:XML in obj.children()) { 
    24                         switch(i.localName()) { 
    25                                 case 'content': 
    26                                 if( !itm['file']) { 
     29                        if(i.namespace().prefix == MediaParser.PREFIX) { 
     30                                switch(i.localName()) { 
     31                                        case 'content': 
    2732                                                itm['file'] = i.@url.toString(); 
     33                                                if(i.@duration) { 
     34                                                        itm['duration'] = Strings.seconds(i.@duration.toString()); 
     35                                                } 
     36                                                if(i.@start) { 
     37                                                        itm['start'] = Strings.seconds(i.@start.toString()); 
     38                                                } 
     39                                                if(i.children().length() > 0) { 
     40                                                        itm = MediaParser.parseGroup(i,itm); 
     41                                                } 
     42                                                break; 
     43                                        case 'title': 
     44                                                itm['title'] = i.text().toString(); 
     45                                                break; 
     46                                        case 'description': 
     47                                                itm['description'] = i.text().toString(); 
     48                                                break; 
     49                                        case 'keywords': 
     50                                                itm['tags'] = i.text().toString(); 
     51                                                break; 
     52                                        case 'thumbnail': 
     53                                                itm['image'] = i.@url.toString(); 
     54                                                break; 
     55                                        case 'credit': 
     56                                                itm['author'] = i.text().toString(); 
     57                                                break; 
     58                                        case 'player': 
     59                                                if(i.@url.indexOf('youtube.com') > 0) { 
     60                                                        itm['file'] = i.@url.toString(); 
     61                                                } 
     62                                                break; 
     63                                        case 'group': 
     64                                                itm = MediaParser.parseGroup(i,itm); 
     65                                                break; 
    2866                                        } 
    29                                         if(i.@start) { 
    30                                                 itm['start'] = Strings.seconds(i.@start.toString()); 
    31                                         } 
    32                                         if(i.@duration) { 
    33                                                 itm['duration'] = Strings.seconds(i.@duration.toString()); 
    34                                         } 
    35                                         if(i.children().length() >0) { 
    36                                                 itm = parseGroup(i,itm); 
    37                                         } 
    38                                         break; 
    39                                 case 'description': 
    40                                         itm['description'] = i.text().toString(); 
    41                                         break; 
    42                                 case 'thumbnail': 
    43                                         itm['image'] = i.@url.toString(); 
    44                                         break; 
    45                                 case 'credit': 
    46                                         itm['author'] = i.text().toString(); 
    47                                         break; 
    48                                 case 'keywords': 
    49                                         itm['tags'] = i.text().toString(); 
    50                                         break; 
    51                                 case 'meta': 
    52                                         itm[i.@type.toString()] = i.text().toString(); 
    53                                         break; 
    5467                        } 
    5568                } 
  • trunk/as3/com/jeroenwijering/parsers/RSSParser.as

    r168 r169  
    3434                for each (var i:XML in obj.children()) { 
    3535                        switch(i.localName()) { 
    36                                 case 'duration': 
    37                                         itm['duration'] = Strings.seconds(i.text().toString()); 
    38                                         break; 
    3936                                case 'enclosure': 
    4037                                        itm['file'] = i.@url.toString(); 
     
    4643                                        itm['date'] = i.text().toString(); 
    4744                                        break; 
    48                                 case 'keywords': 
    49                                         itm['tags'] = i.text().toString(); 
    50                                         break; 
    5145                                case 'description': 
    52                                         itm['description'] = i.text().toString(); 
    53                                         break; 
    54                                 case 'summary': 
    5546                                        itm['description'] = i.text().toString(); 
    5647                                        break; 
     
    5849                                        itm['link'] = i.text().toString(); 
    5950                                        break; 
    60                                 case 'author': 
    61                                         itm['author'] = i.text().toString(); 
    62                                         break; 
    63                                 case 'group': 
    64                                         itm = MediaParser.parseGroup(i,itm); 
     51                                case 'category': 
     52                                        if(itm['tags']) { 
     53                                                itm['tags'] += i.text().toString(); 
     54                                        } else {  
     55                                                itm['tags'] = i.text().toString(); 
     56                                        } 
    6557                                        break; 
    6658                        } 
    6759                } 
     60                itm = ItunesParser.parseEntry(obj,itm); 
    6861                itm = MediaParser.parseGroup(obj,itm); 
    6962                itm = JWParser.parseEntry(obj,itm); 
  • trunk/as3/com/jeroenwijering/parsers/SMILParser.as

    r161 r169  
    5454                                        itm['link'] = i.@href.toString(); 
    5555                                        break; 
    56                                 case 'textstream': 
    57                                         itm['captions'] = i.@src.toString(); 
     56                                case 'img': 
     57                                        if(itm['file']) { 
     58                                                itm['image'] = i.@src.toString(); 
     59                                                break; 
     60                                        } else { 
     61                                                itm = SMILParser.parseAttributes(i,itm); 
     62                                        } 
    5863                                        break; 
    59                                 case 'img': 
    60                                         itm['image'] = i.@src.toString(); 
    61                                         if(itm['file']) { 
    62                                                 break; 
    63                                         } 
    6464                                case 'video': 
    6565                                case 'audio': 
  • trunk/as3/com/jeroenwijering/parsers/TTParser.as

    r166 r169  
    5050                        dur:Strings.seconds(dat.@dur), 
    5151                        end:Strings.seconds(dat.@end), 
    52                         text:dat.children().toString().replace("\n","") 
     52                        text:dat.children().toString().replace(new RegExp('\n?<br.*>\n?'),'\n') 
    5353                }; 
    5454                return obj; 
  • trunk/as3/com/jeroenwijering/player/Controller.as

    r168 r169  
    158158                                return itm['streamer']; 
    159159                        } 
    160                 // this is a small hack to enable youtube playlists to work by default. 
     160                // this is a small hack to enable youtube links to work by default. 
    161161                } else if(itm['file'].indexOf('youtube.com/w') > -1 || itm['file'].indexOf('youtube.com/v') > -1) { 
    162162                        return 'youtube'; 
     
    325325                        if(!ply[i]['duration']) { ply[i]['duration'] = 0; } 
    326326                        if(!ply[i]['start']) { ply[i]['start'] = 0; } 
    327                         if(!ply[i]['streamer']) { ply[i]['streamer'] = config['streamer']; } 
     327                        if(!ply[i]['streamer']) { 
     328                                ply[i]['streamer'] = config['streamer']; 
     329                        } 
    328330                        if(config['replace']) { 
    329331                                var arr:Array = config['replace'].split('|'); 
     
    331333                        } 
    332334                        ply[i]['type'] = getModelType(ply[i],true); 
    333                         if(!ply[i]['type']) {ply.splice(i,1);} 
     335                        if(!ply[i]['type']) { ply.splice(i,1); } 
    334336                } 
    335337                if(ply.length > 0) { 
  • trunk/as3/com/jeroenwijering/player/Model.as

    r168 r169  
    5353                thumb = new Loader(); 
    5454                thumb.contentLoaderInfo.addEventListener(Event.COMPLETE,thumbHandler); 
     55                thumb.contentLoaderInfo.addEventListener(IOErrorEvent.IO_ERROR,thumbHandler); 
    5556                Draw.clear(display.media); 
    5657                display.addChildAt(thumb,display.getChildIndex(display.media)+1); 
     
    139140                var wid:Number = sploader.getPlugin('display').config['width']; 
    140141                var hei:Number = sploader.getPlugin('display').config['height']; 
    141                 Stretcher.stretch(display.media,wid,hei,config['stretching']); 
     142                if(item && item['type'] == 'youtube') { 
     143                        display.media.x = 0; 
     144                        display.media.y = 0; 
     145                        models[item['type']].resize(wid,hei); 
     146                } else { 
     147                        Stretcher.stretch(display.media,wid,hei,config['stretching']); 
     148                } 
    142149                if(thumb.width > 10) { 
    143150                        Stretcher.stretch(thumb,wid,hei,config['stretching']); 
  • trunk/as3/com/jeroenwijering/player/SPLoader.as

    r168 r169  
    5050                // hack for the playlist/controlbar flashvars 
    5151                var cbr:DisplayObject = skin.getChildByName('controlbar'); 
    52                 skin.setChildIndex(cbr,skin.numChildren-1); 
    5352                if(nam == 'controlbar') { 
    5453                        obj['position'] = config['controlbar']; 
     
    7978                        clp = new MovieClip(); 
    8079                        clp.name = nam; 
    81                         skin.addChildAt(clp,skin.numChildren-2); 
     80                        skin.addChildAt(clp,1); 
    8281                } 
    8382                // add plugin and initialize 
  • trunk/as3/com/jeroenwijering/plugins/Captions.as

    r165 r169  
    2424        /** List with configuration settings. **/ 
    2525        public var config:Object = { 
    26                 back:false, 
     26                back:true, 
    2727                file:undefined, 
    28                 size:14, 
    29                 hide:false 
     28                fontsize:14, 
     29                state:true 
    3030        }; 
    3131        /** Displayelement to load the captions into. **/ 
     
    5555        /** Clicking the  hide button. **/ 
    5656        private function clickHandler(evt:MouseEvent):void { 
    57                 hide(!config['hide']); 
     57                hide(!config['state']); 
     58                view.saveCookie('captions.state',config['state']); 
    5859        }; 
    5960 
     
    9899        private function drawClip() { 
    99100                var rct:MovieClip = new MovieClip(); 
    100                 rct.graphics.beginFill(0x000000,0.5); 
     101                rct.graphics.beginFill(0x000000,0.6); 
    101102                rct.graphics.drawRect(0,0,400,60); 
    102103                format = new TextFormat(); 
    103104                format.color = 0xFFFFFF; 
    104                 format.size = config['size']; 
     105                format.size = config['fontsize']; 
    105106                format.align = "center"; 
    106107                format.font = "_sans"; 
     
    126127        /** Show/hide the captions **/ 
    127128        public function hide(stt:Boolean):void { 
    128                 config['hide'] = stt; 
    129                 view.saveCookie('captions.hide',config['hide']); 
    130                 clip.visible = config['hide']; 
    131                 if(config['hide']) {  
     129                config['state'] = stt; 
     130                clip.visible = config['state']; 
     131                if(config['state']) {  
    132132                        icon.alpha = 1; 
    133133                } else {  
     
    143143                view.addControllerListener(ControllerEvent.RESIZE,resizeHandler); 
    144144                view.addModelListener(ModelEvent.TIME,timeHandler); 
     145                view.addModelListener(ModelEvent.STATE,stateHandler); 
    145146                drawButton(); 
    146147                drawClip(); 
    147                 hide(config['hide']); 
     148                clip.mouseEnabled = false; 
     149                clip.mouseChildren = false; 
     150                hide(config['state']); 
    148151        }; 
    149152 
     
    152155        private function itemHandler(evt:ControllerEvent=null):void { 
    153156                current = 0; 
    154                 var fil:String = view.playlist[view.config['item']]['captions.file']; 
    155                 if(fil) {  
    156                         config['file'] = fil;  
     157                var fil:String = view.playlist[view.config['item']]['captions']; 
     158                if(fil) { 
     159                        config['file'] = fil; 
    157160                } else if (view.config['captions']) { 
    158161                        config['file'] = view.config['captions']; 
     
    185188                clip.width = view.config['width']; 
    186189                clip.scaleY = clip.scaleX; 
    187                 if(!config['back']) {  
     190                if(!config['back']) { 
    188191                        field.y = 50 - field.height; 
    189192                } 
     
    206209 
    207210        /** Check timing of the player to sync captions. **/ 
     211        private function stateHandler(evt:ModelEvent):void { 
     212                if(view.config['state'] == ModelStates.PLAYING && config['state']) { 
     213                        clip.visible = true; 
     214                } else {  
     215                        clip.visible = false; 
     216                } 
     217        }; 
     218 
     219 
     220        /** Check timing of the player to sync captions. **/ 
    208221        private function timeHandler(evt:ModelEvent):void { 
    209222                var pos:Number = evt.data.position; 
     
    214227 
    215228 
     229 
    216230}; 
    217231 
  • trunk/as3/com/jeroenwijering/plugins/Controlbar.as

    r162 r169  
    172172        private function itemHandler(evt:ControllerEvent=null):void { 
    173173                try { 
    174                         if(view.playlist && view.playlist.length > 1 && view.config['playlist'] == 'none') { 
     174                        if(view.playlist && view.playlist.length > 1 &&  
     175                                (view.config['playlist'] == 'none' || view.config['playlist'] == 'over')) { 
    175176                                clip.prevButton.visible = clip.nextButton.visible = true; 
    176177                        } else { 
     
    290291                        clip.fullscreenButton.visible = false; 
    291292                        clip.normalscreenButton.visible = false; 
    292                         if(clip.stage['displayState']) { 
     293                        if(clip.stage['displayState'] && view.config['height'] > 40) { 
    293294                                if(view.config['fullscreen']) { 
    294295                                        clip.fullscreenButton.visible = false; 
  • trunk/as3/com/jeroenwijering/plugins/Display.as

    r161 r169  
    138138                        loader = new Loader(); 
    139139                        loader.contentLoaderInfo.addEventListener(Event.COMPLETE,logoHandler); 
     140                        loader.contentLoaderInfo.addEventListener(IOErrorEvent.IO_ERROR,logoHandler); 
    140141                        clip.logo.addChild(loader); 
    141142                        loader.load(new URLRequest(view.config['logo'])); 
  • trunk/as3/com/jeroenwijering/plugins/Playlist.as

    r168 r169  
    77import com.jeroenwijering.events.*; 
    88import com.jeroenwijering.utils.*; 
     9 
    910import flash.display.*; 
    10 import flash.events.Event; 
    11 import flash.events.MouseEvent; 
     11import flash.events.*; 
    1212import flash.geom.ColorTransform; 
    1313import flash.geom.Rectangle; 
     
    305305                                        img.addChild(ldr); 
    306306                                        ldr.contentLoaderInfo.addEventListener(Event.COMPLETE,loaderHandler); 
     307                                        ldr.contentLoaderInfo.addEventListener(IOErrorEvent.IO_ERROR,loaderHandler); 
    307308                                        if(view.playlist[idx]['playlist.image']) { 
    308309                                                ldr.load(new URLRequest(view.playlist[idx]['playlist.image'])); 
  • trunk/as3/readme.html

    r166 r169  
    2626        <script type="text/javascript" src="swfobject.js"></script> 
    2727        <script type="text/javascript"> 
    28                 swfobject.registerObject("player", "9.0.0", "expressInstall.swf"); 
     28                swfobject.registerObject("player","9.0.98","expressInstall.swf"); 
    2929        </script> 
    3030 
     
    3333                <param name="allowfullscreen" value="true" /> 
    3434                <param name="allowscriptaccess" value="always" /> 
    35                 <param name="flashvars" value="file=video.flv&image=preview.jpg&tracecall=console.log" /> 
     35                <param name="flashvars" value="file=video.flv&image=preview.jpg" /> 
    3636                <object type="application/x-shockwave-flash" data="player.swf" width="328" height="200"> 
    3737                        <param name="movie" value="player.swf" /> 
    3838                        <param name="allowfullscreen" value="true" /> 
    3939                        <param name="allowscriptaccess" value="always" /> 
    40                         <param name="flashvars" value="file=video.flv&image=preview.jpg&tracecall=console.log" /> 
     40                        <param name="flashvars" value="file=video.flv&image=preview.jpg" /> 
    4141                        <p><a href="http://get.adobe.com/flashplayer">Get Flash</a> to see this player.</p> 
    4242                </object> 
Note: See TracChangeset for help on using the changeset viewer.