1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
|
#
# api: streamtuner2
# title: File browser
# description: Displays mp3/oggs or m3u/pls files from local media file directories.
# type: channel
# category: media
# version: 0.0
# priority: optional
# depends: mutagen
#
#
# Local file browser.
#
#
# modules
import os
import re
from channels import *
from config import conf
# ID3 libraries
try:
from mutagen import File as get_meta
except:
try:
print("just basic ID3 support")
from ID3 import ID3
get_meta = lambda fn: dict([(k.lower(),v) for k,v in ID3(fn).iteritems()])
except:
print("you are out of luck in regards to mp3 browsing")
get_meta = lambda *x: {}
# work around mutagens difficult interface
def mutagen_postprocess(d):
if d.get("TIT2"):
return {
|
|
>
>
>
|
<
>
|
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
|
#
# api: streamtuner2
# title: File browser
# description: Displays mp3/oggs or m3u/pls files from local media file directories.
# type: channel
# category: media
# version: 0.1
# priority: optional
# depends: mutagen
# config:
# {name:"file_browser_dir", "type":"text", "value": "~/Music, /media/music", "description":"list of directories to scan for audio files"},
# {name:"file_browser_ext", "type":"text", "value":"mp3,ogg, m3u,pls,xspf, avi,flv,mpg,mp4", "description":"file type filter"},
#
#
# Local file browser.
#
#
# modules
import os
import re
from channels import *
from config import *
# ID3 libraries
try:
from mutagen import File as get_meta
except:
try:
from ID3 import ID3
__print__(dbg.INFO, "Just basic ID3 support")
get_meta = lambda fn: dict([(k.lower(),v) for k,v in ID3(fn).iteritems()])
except:
__print__(dbg.INIT, "You are out of luck in regards to mp3 browsing. No ID3 support.")
get_meta = lambda *x: {}
# work around mutagens difficult interface
def mutagen_postprocess(d):
if d.get("TIT2"):
return {
|
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
|
# file browser / mp3 directory listings
class file (ChannelPlugin):
# info
api = "streamtuner2"
module = "file"
title = "file browser"
version = -0.5
listtype = "url/file"
# data
config = [
{"name":"file_browser_dir", "type":"text", "value":os.environ["HOME"]+"/Music, /media/music", "description":"list of directories to scan for audio files"},
{"name":"file_browser_ext", "type":"text", "value":"mp3,ogg, m3u,pls,xspf, avi,flv,mpg,mp4", "description":"file type filter"},
]
streams = {}
categories = []
dir = []
ext = []
# display
datamap = [ # coltitle width [ datasrc key, type, renderer, attrs ] [cellrenderer2], ...
["", 20, ["state", str, "pixbuf", {}], ],
["Genre", 65, ['genre', str, "t", {"editable":8}], ],
["File", 160, ["filename", str, "t", {"strikethrough":11, "cell-background":12, "cell-background-set":13}], ],
["Title", 205, ["title", str, "t", {"editable":8}], ],
["Artist", 125, ["artist", str, "t", {"editable":8}], ],
["Album", 125, ["album", str, "t", {"editable":8}], ],
["Bitrate", 35, ["bitrate", int, "t", {}], ],
["Format", 50, ["format", str, None, {}], ],
[False, 0, ["editable", bool, None, {}], ],
[False, 0, ["favourite", bool, None, {}], ],
|
<
<
<
<
<
<
<
|
|
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
|
# file browser / mp3 directory listings
class file (ChannelPlugin):
# info
module = "file"
title = "file browser"
listtype = "url/file"
# data
streams = {}
categories = []
dir = []
ext = []
# display
datamap = [ # coltitle width [ datasrc key, type, renderer, attrs ] [cellrenderer2], ...
["", 20, ["state", str, "pixbuf", {}], ],
["Genre", 65, ['genre', str, "t", {"editable":8}], ],
["File", 160, ["filename", str, "t", {"strikethrough":10, "cell-background":11, "cell-background-set":12}], ],
["Title", 205, ["title", str, "t", {"editable":8}], ],
["Artist", 125, ["artist", str, "t", {"editable":8}], ],
["Album", 125, ["album", str, "t", {"editable":8}], ],
["Bitrate", 35, ["bitrate", int, "t", {}], ],
["Format", 50, ["format", str, None, {}], ],
[False, 0, ["editable", bool, None, {}], ],
[False, 0, ["favourite", bool, None, {}], ],
|