rrirower / DP2SceneGraphWizard

Direct Publisher to SceneGraph wizard.
MIT License
15 stars 1 forks source link

Deep Linking #23

Closed comporder1 closed 12 months ago

comporder1 commented 1 year ago

Deep linking has been the biggest issue for me to get our DP channel over to scenegraph. Should deep linking work in the channel produced by this script? I have run the script, but I have had to modify to parse my rss feed.... and deep linking is not working.

ferdiworks commented 1 year ago

@comporder1 I have used the software for 6 channels. each channel past static analysis and deep linking! The channels were approved and published without issues!

comporder1 commented 1 year ago

I guess that is good news and bad. Good that it should work... bad that my parse xml code has broken it in some way. Would you like to take a look at my code? My xml file follows the official MRSS feed spec as outlined here... https://developer.roku.com/docs/specs/direct-publisher-feed-specs/mrss-dp-spec.md It seems as though it could be implemented into this project. I can't be the only one that uses xml.

ferdiworks commented 1 year ago

I find the software works well with a json feed! I found that MRSS feeds that were good in DP somehow have issues in SDK channels, But go ahead and post your feed link so We can look at it! I myself have another template that works w mrss feeds to test it on and see what parses! @rrirower can look at the feed and answer more about this software and mrss feeds!

comporder1 commented 1 year ago

This is MainLoaderTask. I haven't quite got it dialed in, but it is working pretty good. It creates rows based on media:category element. It finds all the unique categories, creates a row for each, and populates the row with all the items that match.

(struggling to get this code to paste correctly! I guess I'll just upload the file....) MainLoaderTask.txt

ferdiworks commented 1 year ago

@comporder1 Please send your feed link!

comporder1 commented 1 year ago

It is in the code.

comporder1 commented 1 year ago

also, it sets every item's mediaType as "movie".

ferdiworks commented 1 year ago

@comporder1 OK got it https://home.colin.edu/roku.xml will look at it and see if it works in my other template and try this software to see if it parses anything!

rrirower commented 1 year ago

I am in the process of updating the code to accept an mrss (xml) feed file. It may be available in the next release.

comporder1 commented 1 year ago

I am in the process of updating the code to accept an mrss (xml) feed file. It may be available in the next release.

Thanks. Maybe my code above can help.

comporder1 commented 1 year ago

@comporder1 I added cfategories to your feed file, I can't upload the xml here so I am uploading a text file. Try using the xml w categories feed.txt

Thanks for trying. At this point, I am not ready to abandon the official feed spec.

comporder1 commented 1 year ago

@rrirower Here is my latest iteration of the code generated by this script. I have made several layout changes, but nothing else really besides the mrss parse code. I have still not been able to get deep linking working. Hopefully you can help me figure this out and also be able to use some this to add to your script. Thanks! comporder1.zip

edit: I also plan to add a function to change pubDate (in this format- 2023-04-28T17:00:00-06:00) to something like 4/28/2023 1pm

rrirower commented 1 year ago

@comporder1 thanks for the submission. However, I am close to finishing my version of the parsing code that integrates into the existing code base.

rrirower commented 1 year ago

I have the XML parsing working. After some more testing, I should be able to post it by the end of this coming week. It includes re-formatting the 'pubDate'.

ferdiworks commented 1 year ago

@rrirower That's amazing, can't wait to test it myself and see what it can do!

comporder1 commented 1 year ago

That’s good here. In the mean time, I got deep linking working yesterday. I had plan to post….. things I found that had deeplinking broken were in the core code that I had not messed with. It was mentioned above that deeplinking works with core code, but I just don’t see how my feed code would have messed it up. May want to check your latest release that deeplinking does in fact work.

rrirower commented 1 year ago

@comporder1 Are you indicating that the deep linking code from this project does not work? Can you provide examples where it fails?

comporder1 commented 1 year ago

I should first admit that I was only introduced to brightscript about 2 weeks ago. I very well could be wrong. Also, I do not have a json feed to test your code as-is. This is what I found...

in ContentTaskLogic.brs line 22 references m.top.launchArgs I could not find anywhere else in the code that set launchArgs when a launch deeplink was called. So with args=invalid, deeplinking was never initiated. I finally started making progress when I replaced line 22 with args = { contentId: m.global.contentId mediaType: m.global.mediaType } Also in this file I had to add (before line 24) m.global.isDeeplink = true for the rest the code to treat the call properly.

There were several other changes I had to make, but that was the start. Again, I am not sure if what I did would be "correct", but I do know that deeplinking now works.

Attached is my latest iteration. comporder1.zip

I do have one more question. There are two warnings generated (seen via telnet 8085) when playing any video. In VideoPlayer.brs singleVideoNode.SetFields(fields) is what throws the warnings. The warnings are type mismatch warnings for change and focusedChild fields. Will warnings like this cause a channel to not pass certification?

Thank you for your work on this project. I welcome any corrections or advice. CW

rrirower commented 1 year ago

@comporder1 I appreciate the feedback and will re-test the deep linking code.

I've seen those two warnings and they appear to be benign. I have not had a chance to investigate them further as I am trying to get more functionality into the code. I don't think they will affect certification as some channel developers have already had their channels pass.

Perhaps @ferdiworks can comment on the certification process.

comporder1 commented 1 year ago

@rrirower It is good to hear that roku doesn't get too picky. I feel like it could be fixed by setting only the fields that are required for the ContentNode.

rrirower commented 1 year ago

@comporder1 The deep linking code was indeed broken from a regression. I've found the problem and fixed it. I should have a release available this coming weekend.

comporder1 commented 1 year ago

@rrirower Glad to hear you have fixed the issue and that I’m was not doing something wrong in my testing! I look forward to testing your new release.

ferdiworks commented 1 year ago

@comporder1 I can help test w the certification process.

ferdiworks commented 1 year ago

I see The new version Alph6 with the MRSS support was just released and will test it

comporder1 commented 12 months ago

I am testing the new version this morning. Launch deep linking is still not working. Input deep linking is working. I'm investigating now.

comporder1 commented 12 months ago

@rrirower args = m.top.inputArgs continues to return invalid on launch deep linking The following code change in ContentTaskLogic.brs fixes the the bug....

sub OnMainContentLoaded() ' invoked when content has been parsed and is ready to use. m.GridScreen.SetFocus(true) ' set focus to the GridScreen. m.loadingIndicator.visible = false ' hide loading indicator because content was retrieved. m.GridScreen.content = m.contentTask.content ' populate GridScreen with content.

args = { dl_contentId: m.global.contentId dl_mediaType: m.global.mediaType }

if args <> invalid and ValidateDeepLink(args) m.global.isDeeplink = true DeepLink(m.contentTask.content, args.dl_mediaType, args.dl_contentId) end if
end sub

rrirower commented 12 months ago

Can you provide the deep linking steps you are using? I've tested this and it worked. I'm thinking you may have hit an edge case I have not found. Also can you provide your feed URL to test?

comporder1 commented 12 months ago

image

http://172.17.224.35:8060/launch/dev?contentId=https%3A%2F%2Flivemedia.colin.edu%3A443%2Fsoftball23%2Fsmil%3Accc2.smil%2Fplaylist.m3u8&mediaType=movie

note: I changed mediatype of items to movie

comporder1 commented 12 months ago

@rrirower make sure the app is NOT running on the roku device and use the "launch" send button.

rrirower commented 12 months ago

Thanks. I'll investigate.

rrirower commented 12 months ago

@comporder1 Have you been able to use the Deep Linking tool with the Launch option? I can't seem to get the Launch button to work using the standalone tool.

rrirower commented 12 months ago

@comporder1 Never mind....I figured it out. The documentation is not the best.

rrirower commented 12 months ago

@comporder1 I was able to recreate the error you reported. It resulted from my misunderstanding of the Deep Linking Launch event and the lack of clear Roku docs to explain it. I believe that I have resolved this problem and have successfully Launched the channel into a video. I've attached a zip for you to try. If it works for you, I'll repost it.

DPtoSceneGraph.zip

comporder1 commented 12 months ago

@rrirower It works! I added my manifest and images to your zip and tested. Deep linking (launch and input) both worked. I did have to add overhang image references back in several places. Does the full script add those in when it is run?

Only other changes that I made were layout\visual related. I've attached my final version if you are interested. I will be attempting to get this to pass certification soon.

comporder1.zip

Thank you again for your effort in this project. I hope I have been able to contribute in some way!

rrirower commented 12 months ago

@comporder1 Thanks for sticking with this issue. As for Overhang images, you must specify that you want them when you run the wizard tool. They are programmatically added to the BrightScript code if you elect to display them.

comporder1 commented 11 months ago

@rrirower I am happy to report that my channel past certification and is published! The biggest learning curve for me in this process has been the deep linking requirements. As you mentioned above, the requirements, testing procedures, and channel submission process is not clearly documented. I had a channel built using the roku provided scenegraph template that I could not submit because it did not include deep linking code... even though it is required for a public channel! My final suggestion for this project would be to include in the readme info on how to submit deep linking parameters during the publish process. This would be helpful for those like me to get through the whole process of using this tool to upgrade from Direct Publish to SDK. Thank you again for all of your work on this project! CW

edit: It is also helpful to know that warnings in the console will not prevent certification.