Roku Developer Program

Join our online forum to talk to Roku developers and fellow channel creators. Ask questions, share tips with the community, and find helpful resources.
cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 
renojim
Community Streaming Expert

Re: My Media - Your Music and Video on the Roku DVP

"dellsweig" wrote:


I dont know if this might help but while watching a Netflix movie - if you press the select button (middle button) on the remote - it pauses the movie. Pressing it again resumes the movie.

Is that key treated differently?


I don't think it's that it's treated differently. The app can decide what it wants to do when a button is pressed. Although I don't think I could stop it from moving right/left when those buttons are pressed for example, I could do something else on top of the default action because the app "sees" those events. The app doesn't see the Play/Pause button press at all when the Poster screen is up.

-JT
Roku Community Streaming Expert

Help others find this answer and click "Accept as Solution."
If you appreciate my answer, maybe give me a Kudo.

I am not a Roku employee.
0 Kudos
buaboo
Visitor

Re: My Media - Your Music and Video on the Roku DVP

Yes, that would work, but I am sure there are others who might say, -- I just want to loop within the album --, so unless you are able to let the user select which they want to do, I wouldn't make the enhancement you mentioned below.

"el.wubo" wrote:
"buaboo" wrote:
Feature Request --

It would be nice to be able to hit the play button at the folder level and let system start playing sequentially through the sub-folders.. I have 3 eagles albums and I just want to be at the parent eagles folder and hit play and let the system work through all 3 albums.. Does that make sense?


What if you were able to start playing in one folder and instead of looping forever in that folder it would transition to the next one from the folder above? This way you pick a song from your first eagles album and it would move through to the next eagles album when it hit the end of the folder.
0 Kudos
dellsweig
Visitor

Re: My Media - Your Music and Video on the Roku DVP

"renojim" wrote:
"el.wubo" wrote:

We could drop down into a new view when a song is selected. Does roSpringboard (a type of layout on the roku... not to be confused with our installer) capture play button presses? Of course, if we do that then we can just make Pause/Resume into menu options if the play button is still uncatchable.


Yes, and that may be what we'll have to do if want pause functionality. It would change the "feel" of the channel quite a bit, though. I don't think you could browse your music collection while you're playing music. If you left the Springboard screen, I suppose you could go back into browse mode, but then you wouldn't be able to pause anymore. I suppose I could whip something up and let people comment on it. This would be so much easier if all of the remote buttons always got sent to the app.

-JT


This type of functionality would maintain consistency in the general Roku interface as other "channels" already handle "pause" in this manner.
Going where the wind don't blow so strange
0 Kudos
foliveri
Visitor

Re: My Media - Your Music and Video on the Roku DVP

Great Job on this!! I just downloaded and have it up and running within a half hour. Really simple and easy!

Now for suggestions....

I know playlists are in the works, which for music will be awesome. This request kind of goes along the same lines.

What about a queue? Example: So you are playing a song and you browse to another song you want to queue up, so you hit the "Down" arrow, this adds that song to a running queue.

it would then be nice to have either a high level folder that is the queue, or a tabbed approach, so 1 tab would be the browse list and another tab could be the queue.

Thanks for all the hard work on this. It really is awesome.
0 Kudos
intersys
Visitor

Re: My Media - Your Music and Video on the Roku DVP

El.Wubo -

Thanks for the reply.
Pathing is correct -
Also downloaded latest version -

Below is the full traceback - hope it helps


<type 'exceptions.IOError'> at /feed
(9, 'Bad file descriptor')
Python D:\Downloads\netguy204-roku_media_server-a602ef2\netguy204-roku_media_server-a602ef2\server\rss_server.py in file2item, line 130
Web GET http://192.168.1.253:8001/feed
Traceback (innermost first)

* D:\Downloads\netguy204-roku_media_server-a602ef2\netguy204-roku_media_server-a602ef2\server\rss_server.py in file2item
123. path = relpath26(fname, base_dir)
124. link="%s/media?%s" % (server_base(config), urllib.urlencode({'name':to_utf8(path), 'key': key}))
125.
126. if image:
127. image = relpath26(image, base_dir)
128. image = "%s/media?%s" % (server_base(config), urllib.urlencode({'name':to_utf8(image), 'key': key}))
129.
130. print link ...
131.
132. return RSSImageItem(
133. title = title,
134. link = link,
135. enclosure = Enclosure(
136. url = link,
â–¶ Local vars
Variable Value
base_dir
'e:\\stevemp3'
config
<ConfigParser.ConfigParser instance at 0x0000000003015508>
description
u''
ext
u'.mp3'
filetype
'mp3'
fname
u'e:\\stevemp3\\.\\MINORC~1.MP3'
image
None
key
u'music'
link
'http://192.168.1.253:8001/media?name=MINORC%7E1.MP3&key=music'
mimetype
None
path
u'MINORC~1.MP3'
size
2221525L
tag
<eyeD3.tag.Tag instance at 0x000000000326BFC8>
title
u''
tracknum
None
* D:\Downloads\netguy204-roku_media_server-a602ef2\netguy204-roku_media_server-a602ef2\server\rss_server.py in getdoc
357. path = os.path.join(base, file)
358.
359. if is_video(path):
360. image_icon = getart(path) or curr_image
361. else:
362. image_icon = curr_image
363.
364. item = file2item(key, path, base_dir, config, image_icon) ...
365. if item:
366. items.append(item)
367.
368. # include our partitioned folders
369. if dirrange:
370. # the range must either have only letters or only numbers
â–¶ Local vars
Variable Value
base
u'e:\\stevemp3\\.'
base_dir
'e:\\stevemp3'
config
<ConfigParser.ConfigParser instance at 0x0000000003015508>
curr_image
None
dir
u'YO PHILADELPHIA'
dirrange
None
dirs
[]
file
u'MINORC~1.MP3'
files
[u'ADLIBS~1.MP3', u'BAILEY~2.MP3', u'BARNES~1.MP3', u'BEAUJI~1.MP3', u'BEES(1~1.MP3', u'BELVIN~1.MP3', u'BINGBO~1.MP3', u'BLUEBE~1.MP3', u'BLUECH~1.MP3', u'BLUEDO~1.MP3', u'BLUEDO~2.MP3', u'BLUENO~1.MP3', u'BLUFFS~1.MP3', u'BYSTAN~1.MP3', u'CADETS~1.MP3', u'CAPRIS~1.MP3', u'CARTER~1.MP3', u'CHANTS~1.MP3', u'CHARMS~1.MP3', u'CLARK_~1.MP3', u'COOLGE~1.MP3', u'CROWNS~1.MP3', u'DANTE&~1.MP3', u'DAVIS_~1.MP3', u'DEANE_~1.MP3', u'DECOYS~1.MP3', u'DELCHO~1.MP3', u'DELRIO~1.MP3', u'DELSAT~1.MP3', u'DEWDRO~1.MP3', u'DIALTO~1.MP3', u'DION(&~1.MP3', u'DONJUA~1.MP3', u'DONJUA~2.MP3', u'DONJUA~3.MP3', u'DREAMG~1.MP3', u'DREAMS~1.MP3', u'DUDROP~1.MP3', u'EARLS(~1.MP3', u'EBBTID~3.MP3', u'ELTONE~1.MP3', u'FIVEBL~1.MP3', u'FIVEDO~1.MP3', u'FIVEDU~1.MP3', u'FIVEEM~1.MP3', u'FIVEJA~1.MP3', u'FIVESU~1.MP3', u'FOURBU~1.MP3', u'FOURDO~1.MP3', u'FOURKI~1.MP3', u'FOURNA~3.MP3', u'FOURSO~1.MP3', u'FOURST~1.MP3', u'FOURST~2.MP3', u'GENIES~1.MP3', u'GEORGE~1.MP3', u'HITENS~2.MP3', u'JACK_J~1.MP3', u'JELLYB~1.MP3', u'JIVEBO~3.MP3', u'JLTRIF~1.MP3', u'JOHNNY~1.MP3', u'JUNEVO~1.MP3', u'LANCE_~1.MP3', u'LANDIS~1.MP3', u'LARKS(~1.MP3', u'LITTLE~1.MP3', u'LYRICS~1.MP3', u'MAJORS~1.MP3', u'MCCALL~1.MP3', u'MCCOY_~1.MP3', u'MINORC~1.MP3', u'MODERN~1.MP3', u'MRLEE(~1.MP3', u'NATIVE~1.MP3', u'NORMAN~1.MP3', u'PARKER~1.MP3', u'PIZANI~1.MP3', u'PLEASE~1.MP3', u"Q'S(BR~1.MP3", u'ROBINS~1.MP3', u'ROBROY~1.MP3', u'ROCKIN~1.MP3', u'ROGERS~1.MP3', u'ROYALR~1.MP3', u'ROYALS~1.MP3', u'SHELLS~3.MP3', u'SILVER~1.MP3', u'SMITH_~2.MP3', u'STORYT~1.MP3', u'TEENS(~1.MP3', u'THEMES~1.MP3', u'THREEF~1.MP3', u'TICKTO~1.MP3', u'TONES(~1.MP3', u'TUNEDR~1.MP3', u'VOICES~1.MP3', u'WEAVER~1.MP3', u'WONDER~1.MP3', u'YOUNGS~1.MP3']
first_chr
u'y'
image_icon
None
item
<rss_server.RSSImageItem instance at 0x0000000003267A88>
items
[<rss_server.RSSImageItem instance at 0x000000000329ED88>, <rss_server.RSSImageItem instance at 0x000000000329E7C8>, <rss_server.RSSImageItem instance at 0x000000000329E388>, <rss_server.RSSImageItem instance at 0x000000000329E888>, <rss_server.RSSImageItem instance at 0x000000000326BE88>, <rss_server.RSSImageItem instance at 0x000000000329DF48>, <rss_server.RSSImageItem instance at 0x000000000329D848>, <rss_server.RSSImageItem instance at 0x000000000329D608>, <rss_server.RSSImageItem instance at 0x000000000329D908>, <rss_server.RSSImageItem instance at 0x000000000329D148>, <rss_server.RSSImageItem instance at 0x000000000329D488>, <rss_server.RSSImageItem instance at 0x000000000329D048>, <rss_server.RSSImageItem instance at 0x000000000329F8C8>, <rss_server.RSSImageItem instance at 0x000000000329F548>, <rss_server.RSSImageItem instance at 0x000000000329FDC8>, <rss_server.RSSImageItem instance at 0x000000000329F1C8>, <rss_server.RSSImageItem instance at 0x000000000329F848>, <rss_server.RSSImageItem instance at 0x000000000329FB08>, <rss_server.RSSImageItem instance at 0x000000000329FBC8>, <rss_server.RSSImageItem instance at 0x0000000003299E88>, <rss_server.RSSImageItem instance at 0x000000000329FC48>, <rss_server.RSSImageItem instance at 0x000000000329FD88>, <rss_server.RSSImageItem instance at 0x0000000003299AC8>, <rss_server.RSSImageItem instance at 0x0000000003299C48>, <rss_server.RSSImageItem instance at 0x0000000003299848>, <rss_server.RSSImageItem instance at 0x0000000003299248>, <rss_server.RSSImageItem instance at 0x0000000002CD0588>, <rss_server.RSSImageItem instance at 0x000000000329F288>, <rss_server.RSSImageItem instance at 0x0000000003299E08>, <rss_server.RSSImageItem instance at 0x0000000002CD0D08>, <rss_server.RSSImageItem instance at 0x000000000329D688>, <rss_server.RSSImageItem instance at 0x0000000002CD0908>, <rss_server.RSSImageItem instance at 0x000000000329F2C8>, <rss_server.RSSImageItem instance at 0x0000000002CD0B48>, <rss_server.RSSImageItem instance at 0x0000000003299888>, <rss_server.RSSImageItem instance at 0x000000000300A188>, <rss_server.RSSImageItem instance at 0x0000000002CD0888>, <rss_server.RSSImageItem instance at 0x0000000002CD0408>, <rss_server.RSSImageItem instance at 0x000000000329D308>, <rss_server.RSSImageItem instance at 0x0000000002CD0C48>, <rss_server.RSSImageItem instance at 0x0000000002CD03C8>, <rss_server.RSSImageItem instance at 0x000000000329F888>, <rss_server.RSSImageItem instance at 0x000000000326C048>, <rss_server.RSSImageItem instance at 0x000000000300A688>, <rss_server.RSSImageItem instance at 0x000000000326C348>, <rss_server.RSSImageItem instance at 0x000000000329F748>, <rss_server.RSSImageItem instance at 0x00000000032A0C08>, <rss_server.RSSImageItem instance at 0x0000000002CD0548>, <rss_server.RSSImageItem instance at 0x000000000326C588>, <rss_server.RSSImageItem instance at 0x00000000032A0E08>, <rss_server.RSSImageItem instance at 0x00000000032A0208>, <rss_server.RSSImageItem instance at 0x000000000329D1C8>, <rss_server.RSSImageItem instance at 0x00000000032A0448>, <rss_server.RSSImageItem instance at 0x00000000032A0948>, <rss_server.RSSImageItem instance at 0x000000000326C748>, <rss_server.RSSImageItem instance at 0x000000000326C608>, <rss_server.RSSImageItem instance at 0x00000000032A0E88>, <rss_server.RSSImageItem instance at 0x00000000032A0DC8>, <rss_server.RSSImageItem instance at 0x00000000032A09C8>, <rss_server.RSSImageItem instance at 0x00000000032A0188>, <rss_server.RSSImageItem instance at 0x000000000329F588>, <rss_server.RSSImageItem instance at 0x0000000003267AC8>, <rss_server.RSSImageItem instance at 0x00000000032A0388>, <rss_server.RSSImageItem instance at 0x0000000003267F48>, <rss_server.RSSImageItem instance at 0x0000000003267A88>]
key
u'music'
letter_subdirs
[<rss_server.RSSImageItem instance at 0x000000000327BD08>, <rss_server.RSSImageItem instance at 0x000000000327BA88>, <rss_server.RSSImageItem instance at 0x000000000327BF88>, <rss_server.RSSImageItem instance at 0x000000000327BF08>, <rss_server.RSSImageItem instance at 0x000000000327B8C8>, <rss_server.RSSImageItem instance at 0x000000000327BC88>, <rss_server.RSSImageItem instance at 0x000000000327B6C8>, <rss_server.RSSImageItem instance at 0x000000000327B888>, <rss_server.RSSImageItem instance at 0x000000000327BA48>, <rss_server.RSSImageItem instance at 0x000000000327BDC8>, <rss_server.RSSImageItem instance at 0x000000000327BC08>, <rss_server.RSSImageItem instance at 0x000000000327B7C8>, <rss_server.RSSImageItem instance at 0x000000000328D848>, <rss_server.RSSImageItem instance at 0x000000000328DF48>, <rss_server.RSSImageItem instance at 0x0000000003296A48>, <rss_server.RSSImageItem instance at 0x00000000032968C8>, <rss_server.RSSImageItem instance at 0x0000000003296F88>, <rss_server.RSSImageItem instance at 0x0000000003296D48>, <rss_server.RSSImageItem instance at 0x00000000032966C8>, <rss_server.RSSImageItem instance at 0x0000000003296688>, <rss_server.RSSImageItem instance at 0x0000000003296108>, <rss_server.RSSImageItem instance at 0x0000000003296048>, <rss_server.RSSImageItem instance at 0x00000000032960C8>, <rss_server.RSSImageItem instance at 0x0000000003296EC8>, <rss_server.RSSImageItem instance at 0x00000000032964C8>, <rss_server.RSSImageItem instance at 0x0000000003296BC8>, <rss_server.RSSImageItem instance at 0x00000000032961C8>, <rss_server.RSSImageItem instance at 0x0000000003296348>, <rss_server.RSSImageItem instance at 0x0000000003296D08>, <rss_server.RSSImageItem instance at 0x0000000003296E08>, <rss_server.RSSImageItem instance at 0x0000000003296D88>, <rss_server.RSSImageItem instance at 0x0000000003296FC8>, <rss_server.RSSImageItem instance at 0x0000000003296448>, <rss_server.RSSImageItem instance at 0x0000000003296288>, <rss_server.RSSImageItem instance at 0x0000000003296508>, <rss_server.RSSImageItem instance at 0x0000000003296F08>, <rss_server.RSSImageItem instance at 0x0000000003296588>, <rss_server.RSSImageItem instance at 0x0000000003296A08>, <rss_server.RSSImageItem instance at 0x0000000003296708>, <rss_server.RSSImageItem instance at 0x0000000003296988>, <rss_server.RSSImageItem instance at 0x0000000003296B08>, <rss_server.RSSImageItem instance at 0x00000000032967C8>, <rss_server.RSSImageItem instance at 0x0000000003296908>, <rss_server.RSSImageItem instance at 0x0000000002EA5588>, <rss_server.RSSImageItem instance at 0x0000000002EA5608>, <rss_server.RSSImageItem instance at 0x0000000002EA53C8>, <rss_server.RSSImageItem instance at 0x0000000002EA5508>, <rss_server.RSSImageItem instance at 0x0000000002EA5308>, <rss_server.RSSImageItem instance at 0x0000000002EA5408>, <rss_server.RSSImageItem instance at 0x0000000002EA55C8>, <rss_server.RSSImageItem instance at 0x0000000002EA5048>, <rss_server.RSSImageItem instance at 0x0000000002EA5548>, <rss_server.RSSImageItem instance at 0x0000000002EA50C8>, <rss_server.RSSImageItem instance at 0x0000000002EA5388>, <rss_server.RSSImageItem instance at 0x0000000002EA5108>, <rss_server.RSSImageItem instance at 0x0000000002EC3B88>, <rss_server.RSSImageItem instance at 0x0000000002EC30C8>, <rss_server.RSSImageItem instance at 0x0000000002EC3D48>, <rss_server.RSSImageItem instance at 0x0000000002EC3208>, <rss_server.RSSImageItem instance at 0x0000000002EC3CC8>, <rss_server.RSSImageItem instance at 0x0000000002EC33C8>, <rss_server.RSSImageItem instance at 0x0000000002EC3C88>, <rss_server.RSSImageItem instance at 0x0000000002EC3A88>, <rss_server.RSSImageItem instance at 0x0000000002EC3648>, <rss_server.RSSImageItem instance at 0x0000000002EC3508>, <rss_server.RSSImageItem instance at 0x0000000002EC3388>, <rss_server.RSSImageItem instance at 0x0000000002EC3088>, <rss_server.RSSImageItem instance at 0x0000000002EC3548>, <rss_server.RSSImageItem instance at 0x0000000002EC3748>, <rss_server.RSSImageItem instance at 0x0000000002EC3688>, <rss_server.RSSImageItem instance at 0x0000000002EBE148>, <rss_server.RSSImageItem instance at 0x0000000002EBE788>, <rss_server.RSSImageItem instance at 0x0000000002EBE2C8>, <rss_server.RSSImageItem instance at 0x0000000002EBE8C8>, <rss_server.RSSImageItem instance at 0x0000000002EBEB08>, <rss_server.RSSImageItem instance at 0x0000000002EBE3C8>, <rss_server.RSSImageItem instance at 0x0000000002EBE508>, <rss_server.RSSImageItem instance at 0x0000000002EBE648>, <rss_server.RSSImageItem instance at 0x0000000002EBEE88>, <rss_server.RSSImageItem instance at 0x0000000002EBE888>, <rss_server.RSSImageItem instance at 0x0000000002EBEC88>, <rss_server.RSSImageItem instance at 0x0000000002EBE5C8>, <rss_server.RSSImageItem instance at 0x0000000002EBE948>, <rss_server.RSSImageItem instance at 0x0000000002EBEB88>, <rss_server.RSSImageItem instance at 0x0000000002EBEC08>, <rss_server.RSSImageItem instance at 0x0000000002EBE048>, <rss_server.RSSImageItem instance at 0x0000000002EBE688>, <rss_server.RSSImageItem instance at 0x0000000002C70608>, <rss_server.RSSImageItem instance at 0x0000000002C70D08>, <rss_server.RSSImageItem instance at 0x0000000003297388>, <rss_server.RSSImageItem instance at 0x0000000003297F08>, <rss_server.RSSImageItem instance at 0x0000000003297308>, <rss_server.RSSImageItem instance at 0x0000000003297988>, <rss_server.RSSImageItem instance at 0x0000000003297F48>, <rss_server.RSSImageItem instance at 0x0000000003297BC8>, <rss_server.RSSImageItem instance at 0x0000000003297608>, <rss_server.RSSImageItem instance at 0x0000000003297888>, <rss_server.RSSImageItem instance at 0x0000000003297B08>, <rss_server.RSSImageItem instance at 0x00000000032979C8>, <rss_server.RSSImageItem instance at 0x00000000032974C8>, <rss_server.RSSImageItem instance at 0x0000000003297A48>, <rss_server.RSSImageItem instance at 0x0000000003297948>, <rss_server.RSSImageItem instance at 0x0000000003297C08>, <rss_server.RSSImageItem instance at 0x0000000003297208>, <rss_server.RSSImageItem instance at 0x0000000003297588>, <rss_server.RSSImageItem instance at 0x00000000032975C8>, <rss_server.RSSImageItem instance at 0x0000000003297A88>, <rss_server.RSSImageItem instance at 0x0000000003297D08>, <rss_server.RSSImageItem instance at 0x0000000003297C88>, <rss_server.RSSImageItem instance at 0x0000000003297288>, <rss_server.RSSImageItem instance at 0x0000000003294788>, <rss_server.RSSImageItem instance at 0x00000000032945C8>, <rss_server.RSSImageItem instance at 0x0000000003294D88>, <rss_server.RSSImageItem instance at 0x0000000003294208>, <rss_server.RSSImageItem instance at 0x0000000003294A48>, <rss_server.RSSImageItem instance at 0x0000000003294EC8>, <rss_server.RSSImageItem instance at 0x0000000003294FC8>, <rss_server.RSSImageItem instance at 0x0000000003294948>, <rss_server.RSSImageItem instance at 0x0000000003294DC8>, <rss_server.RSSImageItem instance at 0x0000000003294288>, <rss_server.RSSImageItem instance at 0x00000000032943C8>, <rss_server.RSSImageItem instance at 0x0000000003294C08>, <rss_server.RSSImageItem instance at 0x0000000003294848>, <rss_server.RSSImageItem instance at 0x0000000003294D48>, <rss_server.RSSImageItem instance at 0x0000000003294508>, <rss_server.RSSImageItem instance at 0x0000000003294608>, <rss_server.RSSImageItem instance at 0x0000000003294A88>, <rss_server.RSSImageItem instance at 0x00000000032942C8>, <rss_server.RSSImageItem instance at 0x0000000003294C88>, <rss_server.RSSImageItem instance at 0x00000000032949C8>, <rss_server.RSSImageItem instance at 0x0000000002CAA0C8>, <rss_server.RSSImageItem instance at 0x0000000002CAA848>, <rss_server.RSSImageItem instance at 0x0000000002CAA808>, <rss_server.RSSImageItem instance at 0x0000000002CAA4C8>, <rss_server.RSSImageItem instance at 0x0000000002CAA248>, <rss_server.RSSImageItem instance at 0x0000000003298808>, <rss_server.RSSImageItem instance at 0x0000000003298D08>, <rss_server.RSSImageItem instance at 0x0000000003298B48>, <rss_server.RSSImageItem instance at 0x0000000003298088>, <rss_server.RSSImageItem instance at 0x0000000003298588>, <rss_server.RSSImageItem instance at 0x0000000003298448>, <rss_server.RSSImageItem instance at 0x00000000032987C8>, <rss_server.RSSImageItem instance at 0x0000000003298B08>, <rss_server.RSSImageItem instance at 0x0000000003298288>, <rss_server.RSSImageItem instance at 0x0000000003298FC8>, <rss_server.RSSImageItem instance at 0x0000000003298248>, <rss_server.RSSImageItem instance at 0x0000000003298888>, <rss_server.RSSImageItem instance at 0x0000000003298108>, <rss_server.RSSImageItem instance at 0x0000000003298208>, <rss_server.RSSImageItem instance at 0x0000000003298C88>, <rss_server.RSSImageItem instance at 0x0000000003298F08>, <rss_server.RSSImageItem instance at 0x0000000003298A08>, <rss_server.RSSImageItem instance at 0x0000000003298508>, <rss_server.RSSImageItem instance at 0x00000000032980C8>, <rss_server.RSSImageItem instance at 0x0000000002CCA6C8>, <rss_server.RSSImageItem instance at 0x0000000002CCA9C8>, <rss_server.RSSImageItem instance at 0x0000000002CCA988>, <rss_server.RSSImageItem instance at 0x0000000002CCA808>, <rss_server.RSSImageItem instance at 0x0000000002EBDEC8>, <rss_server.RSSImageItem instance at 0x0000000002EBD488>, <rss_server.RSSImageItem instance at 0x000000000329CDC8>, <rss_server.RSSImageItem instance at 0x000000000329CC88>, <rss_server.RSSImageItem instance at 0x000000000329CBC8>, <rss_server.RSSImageItem instance at 0x000000000329C248>, <rss_server.RSSImageItem instance at 0x000000000329C4C8>, <rss_server.RSSImageItem instance at 0x000000000329C808>, <rss_server.RSSImageItem instance at 0x000000000329CA88>, <rss_server.RSSImageItem instance at 0x000000000329C088>, <rss_server.RSSImageItem instance at 0x000000000329C788>, <rss_server.RSSImageItem instance at 0x000000000329CE48>, <rss_server.RSSImageItem instance at 0x000000000329CE88>, <rss_server.RSSImageItem instance at 0x000000000329C308>, <rss_server.RSSImageItem instance at 0x000000000329C888>, <rss_server.RSSImageItem instance at 0x000000000329C748>, <rss_server.RSSImageItem instance at 0x000000000329CAC8>, <rss_server.RSSImageItem instance at 0x000000000329CD88>, <rss_server.RSSImageItem instance at 0x000000000329C8C8>, <rss_server.RSSImageItem instance at 0x000000000329CF08>, <rss_server.RSSImageItem instance at 0x000000000329C208>, <rss_server.RSSImageItem instance at 0x0000000002EC0DC8>, <rss_server.RSSImageItem instance at 0x0000000002EC0C08>, <rss_server.RSSImageItem instance at 0x0000000002EC0BC8>, <rss_server.RSSImageItem instance at 0x0000000002EC0E08>, <rss_server.RSSImageItem instance at 0x0000000002EC0908>, <rss_server.RSSImageItem instance at 0x0000000002EC0448>, <rss_server.RSSImageItem instance at 0x0000000002EC09C8>, <rss_server.RSSImageItem instance at 0x0000000002EC0388>, <rss_server.RSSImageItem instance at 0x0000000002EC0348>, <rss_server.RSSImageItem instance at 0x0000000002E6B148>, <rss_server.RSSImageItem instance at 0x0000000002E6B848>, <rss_server.RSSImageItem instance at 0x0000000002E6B088>, <rss_server.RSSImageItem instance at 0x0000000002E6B2C8>, <rss_server.RSSImageItem instance at 0x0000000002E6B408>, <rss_server.RSSImageItem instance at 0x0000000002E6B448>, <rss_server.RSSImageItem instance at 0x0000000002E6B548>, <rss_server.RSSImageItem instance at 0x0000000002E6B608>, <rss_server.RSSImageItem instance at 0x0000000002E6B5C8>, <rss_server.RSSImageItem instance at 0x0000000002E6B708>, <rss_server.RSSImageItem instance at 0x0000000002E6BE08>]
media_re
<_sre.SRE_Pattern object at 0x0000000002C5B330>
number_subdirs
[<rss_server.RSSImageItem instance at 0x000000000327B448>, <rss_server.RSSImageItem instance at 0x000000000327BEC8>, <rss_server.RSSImageItem instance at 0x000000000327B388>, <rss_server.RSSImageItem instance at 0x000000000327BB88>, <rss_server.RSSImageItem instance at 0x000000000327BA08>]
path
u'e:\\stevemp3\\.\\MINORC~1.MP3'
recurse
False
special_subdirs
[]
subdir
u'e:\\stevemp3\\.\\YO PHILADELPHIA'
* D:\Downloads\netguy204-roku_media_server-a602ef2\netguy204-roku_media_server-a602ef2\server\rss_server.py in GET
535.
536. # get the range for partitioning
537. range = feed.range
538. if range: range = tuple(range)
539. if feed.dir:
540. # the user has navigated to dir
541. path = os.path.join(base_dir, feed.dir)
542. return getdoc(feed.key, path, base_dir, range, config, collapse_collections).to_xml() ...
543. else:
544. # if no dir was given we return the index view for this base_dir
545. return getdoc(feed.key, base_dir, base_dir, range, config).to_xml()
546.
547. class M3UHandler:
548. def GET(self):
â–¶ Local vars
Variable Value
base_dir
'e:\\stevemp3'
collapse_collections
False
config
<ConfigParser.ConfigParser instance at 0x0000000003015508>
feed
<Storage {'range': None, 'dir': u'.', 'key': u'music'}>
path
u'e:\\stevemp3\\.'
range
None
self
<rss_server.RssHandler instance at 0x0000000002EB7E88>
* D:\Downloads\netguy204-roku_media_server-a602ef2\netguy204-roku_media_server-a602ef2\server\web\application.py in handle_class
379. def handle_class(cls):
380. meth = web.ctx.method
381. if meth == 'HEAD' and not hasattr(cls, meth):
382. meth = 'GET'
383. if not hasattr(cls, meth):
384. raise web.nomethod(cls)
385. tocall = getattr(cls(), meth)
386. return tocall(*args) ...
387.
388. def is_class(o): return isinstance(o, (types.ClassType, type))
389.
390. if f is None:
391. raise web.notfound()
392. elif isinstance(f, application):
â–¶ Local vars
Variable Value
args
[]
cls
<class rss_server.RssHandler at 0x0000000002CAF150>
meth
u'GET'
tocall
<bound method RssHandler.GET of <rss_server.RssHandler instance at 0x0000000002EB7E88>>
* D:\Downloads\netguy204-roku_media_server-a602ef2\netguy204-roku_media_server-a602ef2\server\web\application.py in _delegate
404. elif '.' in f:
405. x = f.split('.')
406. mod, cls = '.'.join(x[:-1]), x[-1]
407. mod = __import__(mod, globals(), locals(), [""])
408. cls = getattr(mod, cls)
409. else:
410. cls = fvars
411. return handle_class(cls) ...
412. elif hasattr(f, '__call__'):
413. return f()
414. else:
415. return web.notfound()
416.
417. def _match(self, mapping, value):
â–¶ Local vars
Variable Value
args
[]
cls
<class rss_server.RssHandler at 0x0000000002CAF150>
f
u'RssHandler'
fvars
{'Category': <class PyRSS2Gen.Category at 0x0000000002786468>, 'Cloud': <class PyRSS2Gen.Cloud at 0x00000000027864C0>, 'ConfigParser': <module 'ConfigParser' from 'D:\Python26\lib\ConfigParser.pyc'>, 'DateElement': <class PyRSS2Gen.DateElement at 0x0000000002786410>, 'Enclosure': <class PyRSS2Gen.Enclosure at 0x0000000002786620>, 'Guid': <class PyRSS2Gen.Guid at 0x0000000002786570>, 'Image': <class PyRSS2Gen.Image at 0x0000000002786518>, 'IntElement': <class PyRSS2Gen.IntElement at 0x00000000027863B8>, 'M3UHandler': <class rss_server.M3UHandler at 0x0000000002CAF1A8>, 'MediaHandler': <class rss_server.MediaHandler at 0x0000000002CAF0F8>, 'Memoize': <class common.Memoize at 0x0000000002C34620>, 'PublishMixin': <class rss_server.PublishMixin at 0x0000000002C57FC0>, 'RSS2': <class PyRSS2Gen.RSS2 at 0x0000000002786780>, 'RSSDoc': <class rss_server.RSSDoc at 0x0000000002CAF0A0>, 'RSSImageItem': <class rss_server.RSSImageItem at 0x0000000002CAF048>, 'RSSItem': <class PyRSS2Gen.RSSItem at 0x00000000027867D8>, 'RssHandler': <class rss_server.RssHandler at 0x0000000002CAF150>, 'SkipDays': <class PyRSS2Gen.SkipDays at 0x0000000002786728>, 'SkipHours': <class PyRSS2Gen.SkipHours at 0x00000000027866D0>, 'Source': <class PyRSS2Gen.Source at 0x0000000002786678>, 'TextInput': <class PyRSS2Gen.TextInput at 0x00000000027865C8>, 'WriteXmlMixin': <class PyRSS2Gen.WriteXmlMixin at 0x0000000002786360>, '__builtins__': {'ArithmeticError': <type 'exceptions.ArithmeticError'>, 'AssertionError': <type 'exceptions.AssertionError'>, 'AttributeError': <type 'exceptions.AttributeError'>, 'BaseException': <type 'exceptions.BaseException'>, 'BufferError': <type 'exceptions.BufferError'>, 'BytesWarning': <type 'exceptions.BytesWarning'>, 'DeprecationWarning': <type 'exceptions.DeprecationWarning'>, 'EOFError': <type 'exceptions.EOFError'>, 'Ellipsis': Ellipsis, 'EnvironmentError': <type 'exceptions.EnvironmentError'>, 'Exception': <type 'exceptions.Exception'>, 'False': False, 'FloatingPointError': <type 'exceptions.FloatingPointError'>, 'FutureWarning': <type 'exceptions.FutureWarning'>, 'GeneratorExit': <type 'exceptions.GeneratorExit'>, 'IOError': <type 'exceptions.IOError'>, 'ImportError': <type 'exceptions.ImportError'>, 'ImportWarning': <type 'exceptions.ImportWarning'>, 'IndentationError': <type 'exceptions.IndentationError'>, 'IndexError': <type 'exceptions.IndexError'>, 'KeyError': <type 'exceptions.KeyError'>, 'KeyboardInterrupt': <type 'exceptions.KeyboardInterrupt'>, 'LookupError': <type 'exceptions.LookupError'>, 'MemoryError': <type 'exceptions.MemoryError'>, 'NameError': <type 'exceptions.NameError'>, 'None': None, 'NotImplemented': NotImplemented, 'NotImplementedError': <type 'exceptions.NotImplementedError'>, 'OSError': <type 'exceptions.OSError'>, 'OverflowError': <type 'exceptions.OverflowError'>, 'PendingDeprecationWarning': <type 'exceptions.PendingDeprecationWarning'>, 'ReferenceError': <type 'exceptions.ReferenceError'>, 'RuntimeError': <type 'exceptions.RuntimeError'>, 'RuntimeWarning': <type 'exceptions.RuntimeWarning'>, 'StandardError': <type 'exceptions.StandardError'>, 'StopIteration': <type 'exceptions.StopIteration'>, 'SyntaxError': <type 'exceptions.SyntaxError'>, 'SyntaxWarning': <type 'exceptions.SyntaxWarning'>, 'SystemError': <type 'exceptions.SystemError'>, 'SystemExit': <type 'exceptions.SystemExit'>, 'TabError': <type 'exceptions.TabError'>, 'True': True, 'TypeError': <type 'exceptions.TypeError'>, 'UnboundLocalError': <type 'exceptions.UnboundLocalError'>, 'UnicodeDecodeError': <type 'exceptions.UnicodeDecodeError'>, 'UnicodeEncodeError': <type 'exceptions.UnicodeEncodeError'>, 'UnicodeError': <type 'exceptions.UnicodeError'>, 'UnicodeTranslateError': <type 'exceptions.UnicodeTranslateError'>, 'UnicodeWarning': <type 'exceptions.UnicodeWarning'>, 'UserWarning': <type 'exceptions.UserWarning'>, 'ValueError': <type 'exceptions.ValueError'>, 'Warning': <type 'exceptions.Warning'>, 'WindowsError': <type 'exceptions.WindowsError'>, 'ZeroDivisionError': <type 'exceptions.ZeroDivisionError'>, '__debug__': True, '__doc__': "Built-in functions, exceptions, and other objects.\n\nNoteworthy: None is the `nil' object; Ellipsis represents `...' in slices.", '__import__': <built-in function __import__>, '__name__': '__builtin__', '__package__': None, 'abs': <built-in function abs>, 'all': <built-in function all>, 'any': <built-in function any>, 'apply': <built-in function apply>, 'basestring': <type 'basestring'>, 'bin': <built-in function bin>, 'bool': <type 'bool'>, 'buffer': <type 'buffer'>, 'bytearray': <type 'bytearray'>, 'bytes': <type 'str'>, 'callable': <built-in function callable>, 'chr': <built-in function chr>, 'classmethod': <type 'classmethod'>, 'cmp': <built-in function cmp>, 'coerce': <built-in function coerce>, 'compile': <built-in function compile>, 'complex': <type 'complex'>, 'copyright': Copyright (c) 2001-2009 Python Software Foundation. All Rights Reserved. Copyright (c) 2000 BeOpen.com. All Rights Reserved. Copyright (c) 1995-2001 Corporation for National Research Initiatives. All Rights Reserved. Copyright (c) 1991-1995 Stichting Mathematisch Centrum, Amsterdam. All Rights Reserved., 'credits': Thanks to CWI, CNRI, BeOpen.com, Zope Corporation and a cast of thousands for supporting Python development. See http://www.python.org for more information., 'delattr': <built-in function delattr>, 'dict': <type 'dict'>, 'dir': <built-in function dir>, 'divmod': <built-in function divmod>, 'enumerate': <type 'enumerate'>, 'eval': <built-in function eval>, 'execfile': <built-in function execfile>, 'exit': Use exit() or Ctrl-Z plus Return to exit, 'file': <type 'file'>, 'filter': <built-in function filter>, 'float': <type 'float'>, 'format': <built-in function format>, 'frozenset': <type 'frozenset'>, 'getattr': <built-in function getattr>, 'globals': <built-in function globals>, 'hasattr': <built-in function hasattr>, 'hash': <built-in function hash>, 'help': Type help() for interactive help, or help(object) for help about object., 'hex': <built-in function hex>, 'id': <built-in function id>, 'input': <built-in function input>, 'int': <type 'int'>, 'intern': <built-in function intern>, 'isinstance': <built-in function isinstance>, 'issubclass': <built-in function issubclass>, 'iter': <built-in function iter>, 'len': <built-in function len>, 'license': Type license() to see the full license text, 'list': <type 'list'>, 'locals': <built-in function locals>, 'long': <type 'long'>, 'map': <built-in function map>, 'max': <built-in function max>, 'min': <built-in function min>, 'next': <built-in function next>, 'object': <type 'object'>, 'oct': <built-in function oct>, 'open': <built-in function open>, 'ord': <built-in function ord>, 'pow': <built-in function pow>, 'print': <built-in function print>, 'property': <type 'property'>, 'quit': Use quit() or Ctrl-Z plus Return to exit, 'range': <built-in function range>, 'raw_input': <built-in function raw_input>, 'reduce': <built-in function reduce>, 'reload': <built-in function reload>, 'repr': <built-in function repr>, 'reversed': <type 'reversed'>, 'round': <built-in function round>, 'set': <type 'set'>, 'setattr': <built-in function setattr>, 'slice': <type 'slice'>, 'sorted': <built-in function sorted>, 'staticmethod': <type 'staticmethod'>, 'str': <type 'str'>, 'sum': <built-in function sum>, 'super': <type 'super'>, 'tuple': <type 'tuple'>, 'type': <type 'type'>, 'unichr': <built-in function unichr>, 'unicode': <type 'unicode'>, 'vars': <built-in function vars>, 'xrange': <type 'xrange'>, 'zip': <built-in function zip>}, '__doc__': None, '__file__': 'D:\\Downloads\\netguy204-roku_media_server-a602ef2\\netguy204-roku_media_server-a602ef2\\server\\rss_server.pyc', '__name__': 'rss_server', '__package__': None, 'app': <web.application.application instance at 0x0000000002CAA3C8>, 'config_file': 'config.ini', 'datetime': <module 'datetime' (built-in)>, 'dir2item': <function dir2item at 0x0000000002CB00B8>, 'doc2m3u': <function doc2m3u at 0x0000000002CB02E8>, 'encode_multipart_formdata': <function encode_multipart_formdata at 0x0000000002C35C18>, 'ext2mime': <function ext2mime at 0x0000000002C35CF8>, 'eyeD3': <module 'eyeD3' from 'D:\Downloads\netguy204-roku_media_server-a602ef2\netguy204-roku_media_server-a602ef2\server\eyeD3\__init__.pyc'>, 'file2item': <function file2item at 0x0000000002CB0048>, 'first_letter': <function first_letter at 0x0000000002C39048>, 'get_content_type': <function get_content_type at 0x0000000002C35C88>, 'getart': <function getart at 0x0000000002CB0128>, 'getdoc': <function getdoc at 0x0000000002CB0278>, 'httplib': <module 'httplib' from 'D:\Python26\lib\httplib.pyc'>, 'is_letter': <function is_letter at 0x0000000002C35F28>, 'is_number': <function is_number at 0x0000000002C35F98>, 'is_video': <function is_video at 0x0000000002C39198>, 'item_sorter': <function item_sorter at 0x0000000002CB0198>, 'main_menu_feed': <function main_menu_feed at 0x0000000002C6EDD8>, 'math': <module 'math' (built-in)>, 'mimetypes': <module 'mimetypes' from 'D:\Python26\lib\mimetypes.pyc'>, 'music_dir': <function music_dir at 0x0000000002C390B8>, 'os': <module 'os' from 'D:\Python26\lib\os.pyc'>, 'parse_config': <function parse_config at 0x0000000002C359E8>, 'partition_by_firstletter': <function partition_by_firstletter at 0x0000000002CB0208>, 'post_multipart': <function post_multipart at 0x0000000002C35BA8>, 'range_handler': <function range_handler at 0x0000000002CB0358>, 're': <module 're' from 'D:\Python26\lib\re.pyc'>, 'relpath26': <function relpath26 at 0x0000000002C35AC8>, 'server_base': <function server_base at 0x0000000002C35978>, 'sys': <module 'sys' (built-in)>, 'terminate': <function terminate at 0x0000000002C35B38>, 'to_unicode': <function to_unicode at 0x0000000002C35E48>, 'to_utf8': <function to_utf8 at 0x0000000002C35EB8>, 'urllib': <module 'urllib' from 'D:\Python26\lib\urllib.pyc'>, 'urls': ('/feed', 'RssHandler', '/media', 'MediaHandler', '/m3u', 'M3UHandler'), 'video_dir': <function video_dir at 0x0000000002C39128>, 'web': <module 'web' from 'D:\Downloads\netguy204-roku_media_server-a602ef2\netguy204-roku_media_server-a602ef2\server\web\__init__.pyc'>, 'write_config': <function write_config at 0x0000000002C35A58>}
handle_class
<function handle_class at 0x0000000002C6EBA8>
is_class
<function is_class at 0x0000000002C6EC18>
self
<web.application.application instance at 0x0000000002C0CF88>
* D:\Downloads\netguy204-roku_media_server-a602ef2\netguy204-roku_media_server-a602ef2\server\web\application.py in handle
225.
226. def browser(self):
227. import browser
228. return browser.AppBrowser(self)
229.
230. def handle(self):
231. fn, args = self._match(self.mapping, web.ctx.path)
232. return self._delegate(fn, self.fvars, args) ...
233.
234. def handle_with_processors(self):
235. def process(processors):
236. try:
237. if processors:
238. p, processors = processors[0], processors[1:]
â–¶ Local vars
Variable Value
args
[]
fn
u'RssHandler'
self
<web.application.application instance at 0x0000000002C0CF88>
* D:\Downloads\netguy204-roku_media_server-a602ef2\netguy204-roku_media_server-a602ef2\server\web\application.py in process
234. def handle_with_processors(self):
235. def process(processors):
236. try:
237. if processors:
238. p, processors = processors[0], processors[1:]
239. return p(lambda: process(processors))
240. else:
241. return self.handle()




"intersys" wrote:
Thanks for all of the work on this.

I was able to install and get the My Video folder working perfectly
The music folder however does not work

<type 'exceptions.IOError'> at /feed
(9, 'Bad file descriptor')
Python D:\Downloads\netguy204-roku_media_server-a602ef2\netguy204-roku_media_server-a602ef2\server\rss_server.py in file2item, line 130
Web GET http://192.168.1.253:8001/feed

The only file-type in the folder is mp3

Any help would be appreciated.

Thanks
0 Kudos
Saqqara
Visitor

Re: My Media - Your Music and Video on the Roku DVP

I'm apparently using an old version already (love the pace of development here!) and so my remarks might be obsolete, but I have a couple of large images in some of my album folders that are being picked up as album art, and it really slows down navigation. Obviously there's a solution in my hands (delete or resize those images) but I thought it might be worth suggesting that the client could have a size limit for the images it picks up as album art, or perhaps the server could create a thumbnail image.

My quirky router might be the culprit, but after a long idle period within the channel and between uses of the channel I cant play anything without restarting the roku, reinstalling the client, and restarting the server. I'm sorry I can't report what version I am running; I'm not at home now.


Thanks for all your work, and I'm really excited to see an open source project like this evolving on the public forum. It says a lot about the community, and even more about Roku.
0 Kudos
el_wubo
Visitor

Re: My Media - Your Music and Video on the Roku DVP


El.Wubo -

Thanks for the reply.
Pathing is correct -
Also downloaded latest version -

Below is the full traceback - hope it helps


Well, 🙂 that was a long one.

Your line 130 reported in that file is different from the line 130 in the latest version. Best I can tell it's complaining because it's trying to print to standard out but standard out has been closed. If this is actually the problem I'm a bit surprised that we're only seeing it just now. I've updated the latest version to log it's output to my_media_log.txt instead of printing it to the screen. I really should have done this from the beginning but your issue inspired me to do it now.

Please download the latest version, make absolutely sure you've stopped your old server (press alt+ctrl+delete and look for python in the processes tab) and then start up the new one and let me know if you have trouble. You can send me an email (look in the readme for my address) with the backtrace if it's lengthy.
0 Kudos
el_wubo
Visitor

Re: My Media - Your Music and Video on the Roku DVP

"Saqqara" wrote:
I'm apparently using an old version already (love the pace of development here!) and so my remarks might be obsolete, but I have a couple of large images in some of my album folders that are being picked up as album art, and it really slows down navigation. Obviously there's a solution in my hands (delete or resize those images) but I thought it might be worth suggesting that the client could have a size limit for the images it picks up as album art, or perhaps the server could create a thumbnail image.

My quirky router might be the culprit, but after a long idle period within the channel and between uses of the channel I cant play anything without restarting the roku, reinstalling the client, and restarting the server. I'm sorry I can't report what version I am running; I'm not at home now.


Thanks for all your work, and I'm really excited to see an open source project like this evolving on the public forum. It says a lot about the community, and even more about Roku.


I have the same problem. Having the server generate the thumbnails on the fly is definitely the most convenient way to tackle this and is what I'd like to do. I've actually got a bit of test code on my machine doing just that but it's not ready for prime time just yet. Hopefully soon! I'd say in a week or so that should be available.
0 Kudos
hammerpocket
Visitor

Re: My Media - Your Music and Video on the Roku DVP

I noticed an undesirable behavior tonight. For whatever reason (maybe my computer was asleep), My Media couldn't connect to the server, so it brought up the error screen. The only choices are to manually enter the IP address (which was already correct) or try again -- there is no way to cancel or back out. I clicked to try again, but that didn't work. The only thing I could think of was to press the home button, which did work to get me out of that error screen. However, as I was navigating through the other channels I kept being taken back to the My Media error screen after 2-3 seconds. I finally had to just quickly choose a random channel get out of the loop.

BTW, I'm using a602ef2.
0 Kudos
renojim
Community Streaming Expert

Re: My Media - Your Music and Video on the Roku DVP

"hammerpocket" wrote:
I noticed an undesirable behavior tonight. For whatever reason (maybe my computer was asleep), My Media couldn't connect to the server, so it brought up the error screen. The only choices are to manually enter the IP address (which was already correct) or try again -- there is no way to cancel or back out. I clicked to try again, but that didn't work. The only thing I could think of was to press the home button, which did work to get me out of that error screen. However, as I was navigating through the other channels I kept being taken back to the My Media error screen after 2-3 seconds. I finally had to just quickly choose a random channel get out of the loop.

BTW, I'm using a602ef2.


That's funny! When I implemented the error screen I knew that was a possibility. I figured 99% of the time one of those two choices would suffice. I guess you're the 1%. 😄 I'm a little surprised you kept getting the error screen popping up. I'll look into adding a cancel option that kicks you out of the mymedia channel.

-JT
Roku Community Streaming Expert

Help others find this answer and click "Accept as Solution."
If you appreciate my answer, maybe give me a Kudo.

I am not a Roku employee.
0 Kudos