Changeset 6ab8361a61197bb0a951e5f77d4d1c5c25a9702f

Show
Ignore:
Timestamp:
12/23/06 02:56:35 (2 years ago)
Author:
Jason Michalski <armooo@armooo.net>
git-committer:
Jason Michalski <armooo@armooo.net> 1166864195 +0000
git-parent:

[96079947dcaa2c493534582190f4a7880b256b1e]

git-author:
Jason Michalski <armooo@armooo.net> 1166864195 +0000
Message:

pyTivo
- ID3 suport for music

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • plugins/music/music.py

    r9607994 r6ab8361  
    55from urlparse import urlparse 
    66from xml.sax.saxutils import escape 
     7import eyeD3 
    78 
    89SCRIPTDIR = os.path.dirname(__file__) 
     
    3536        path = self.get_local_path(handler, query) 
    3637        def isdir(file): 
    37             return os.path.isdir(os.path.join(path, file))                      
     38            return os.path.isdir(os.path.join(path, file)) 
    3839 
     40        def media_data(file): 
     41            dict = {} 
     42            dict['path'] = file 
     43 
     44            file = os.path.join(path, file) 
     45 
     46            if isdir(file) or not eyeD3.isMp3File(file): 
     47                return dict 
     48             
     49            audioFile = eyeD3.Mp3AudioFile(file) 
     50            dict['Duration'] = audioFile.getPlayTime() * 1000 
     51            dict['SourceBitRate'] = audioFile.getBitRate()[1] 
     52            dict['SourceSampleRate'] = audioFile.getSampleFreq() 
     53 
     54            tag = audioFile.getTag() 
     55            dict['ArtistName'] = str(tag.getArtist()) 
     56            dict['AlbumTitle'] = str(tag.getAlbum()) 
     57            dict['SongTitle'] = str(tag.getTitle()) 
     58            dict['AlbumYear'] = tag.getYear() 
     59             
     60            try: 
     61                dict['MusicGenre'] = tag.getGenre().getName() 
     62            except: 
     63                pass 
     64             
     65            return dict 
     66             
    3967        handler.send_response(200) 
    4068        handler.end_headers() 
     
    4270        t.name = subcname 
    4371        t.files, t.total, t.start = self.get_files(handler, query) 
     72        t.files = map(media_data, t.files) 
    4473        t.isdir = isdir 
    4574        t.quote = quote 
  • plugins/music/templates/container.tmpl

    r9607994 r6ab8361  
    1010    </Details> 
    1111    #for $file in $files 
    12     #if $isdir($file
     12    #if $isdir($file['path']
    1313    <Item> 
    1414        <Details> 
    15             <Title>$escape($file)</Title> 
     15            <Title>$escape($file.path)</Title> 
    1616            <ContentType>x-container/folder</ContentType> 
    1717            <SourceFormat>x-container/folder</SourceFormat> 
     
    1919        <Links> 
    2020            <Content> 
    21                     <Url>/TiVoConnect?Command=QueryContainer&amp;Container=$quote($name)/$quote($file)</Url> 
     21                    <Url>/TiVoConnect?Command=QueryContainer&amp;Container=$quote($name)/$quote($file.path)</Url> 
    2222                    <ContentType>x-tivo-container/folder</ContentType> 
    2323            </Content> 
     
    2727    <Item> 
    2828        <Details> 
    29             <Title>#echo '.'.join(file.split('.')[:-1]) #</Title> 
     29            <Title>#echo '.'.join(file['path'].split('.')[:-1]) #</Title> 
    3030            <ContentType>audio/*</ContentType> 
    3131            <SourceFormat>audio/mpeg</SourceFormat> 
     32 
     33            #for $key in $file 
     34                <$key>$file[$key]</$key> 
     35            #end for             
     36 
    3237        </Details> 
    3338        <Links> 
     
    3540                <ContentType>audio/*</ContentType> 
    3641                    <AcceptsParams>No</AcceptsParams> 
    37                     <Url>/$quote($name)/$quote($file)</Url> 
     42                    <Url>/$quote($name)/$quote($file.path)</Url> 
    3843                </Content> 
    3944        </Links>