Merge branch 'unstable' into Release164

This commit is contained in:
1hitsong 2023-03-29 20:18:55 -04:00
commit 4dbd59c173
13 changed files with 11750 additions and 11681 deletions

View File

@ -9,7 +9,7 @@ jobs:
permissions: permissions:
pull-requests: write pull-requests: write
steps: steps:
- uses: actions/stale@6f05e4244c9a0b2ed3401882b05d701dd0a7289b # v7 - uses: actions/stale@1160a2240286f5da8ec72b1c0816ce2481aabf84 # v8
with: with:
days-before-issue-stale: -1 days-before-issue-stale: -1
days-before-issue-close: -1 days-before-issue-close: -1

View File

@ -12,7 +12,7 @@ jobs:
dev: dev:
runs-on: ubuntu-latest runs-on: ubuntu-latest
steps: steps:
- uses: actions/checkout@24cb9080177205b6e8c946b17badbe402adc938f # v3 - uses: actions/checkout@8f4b7f84864484a7bf31766abe9204da3cbe65b3 # v3
- uses: actions/setup-node@64ed1c7eab4cce3362f8c340dee64e5eaeef8f7c # v3 - uses: actions/setup-node@64ed1c7eab4cce3362f8c340dee64e5eaeef8f7c # v3
with: with:
node-version: "lts/*" node-version: "lts/*"

View File

@ -13,7 +13,7 @@ jobs:
runs-on: ubuntu-latest runs-on: ubuntu-latest
steps: steps:
- name: Checkout master (the latest release) - name: Checkout master (the latest release)
uses: actions/checkout@ac593985615ec2ede58e132d2e21d2b1cbd6127c # v3 uses: actions/checkout@8f4b7f84864484a7bf31766abe9204da3cbe65b3 # v3
with: with:
ref: master ref: master
- name: Install jq to parse json - name: Install jq to parse json
@ -33,7 +33,7 @@ jobs:
- name: Save old Makefile version - name: Save old Makefile version
run: awk 'BEGIN { FS=" = " } /^VERSION/ { print "oldMakeVersion="$2; }' Makefile >> $GITHUB_ENV run: awk 'BEGIN { FS=" = " } /^VERSION/ { print "oldMakeVersion="$2; }' Makefile >> $GITHUB_ENV
- name: Checkout PR branch - name: Checkout PR branch
uses: actions/checkout@ac593985615ec2ede58e132d2e21d2b1cbd6127c # v3 uses: actions/checkout@8f4b7f84864484a7bf31766abe9204da3cbe65b3 # v3
- name: Save new package.json version - name: Save new package.json version
run: echo "newPackVersion=$(jq -r ".version" package.json)" >> $GITHUB_ENV run: echo "newPackVersion=$(jq -r ".version" package.json)" >> $GITHUB_ENV
- name: package.json version must be updated - name: package.json version must be updated
@ -61,7 +61,7 @@ jobs:
prod: prod:
runs-on: ubuntu-latest runs-on: ubuntu-latest
steps: steps:
- uses: actions/checkout@ac593985615ec2ede58e132d2e21d2b1cbd6127c # v3 - uses: actions/checkout@8f4b7f84864484a7bf31766abe9204da3cbe65b3 # v3
- uses: actions/setup-node@64ed1c7eab4cce3362f8c340dee64e5eaeef8f7c # v3 - uses: actions/setup-node@64ed1c7eab4cce3362f8c340dee64e5eaeef8f7c # v3
with: with:
node-version: "lts/*" node-version: "lts/*"

View File

@ -14,7 +14,7 @@
<img src="https://translate.jellyfin.org/widgets/jellyfin/-/jellyfin-roku/svg-badge.svg" alt="Translation status" /> <img src="https://translate.jellyfin.org/widgets/jellyfin/-/jellyfin-roku/svg-badge.svg" alt="Translation status" />
</a> </a>
<br/> <br/>
<a href="https://matrix.to/#/+jellyfin:matrix.org"> <a href="https://matrix.to/#/#jellyfin-dev-roku:matrix.org">
<img alt="Chat on Matrix" src="https://img.shields.io/matrix/jellyfin:matrix.org.svg?logo=matrix"/> <img alt="Chat on Matrix" src="https://img.shields.io/matrix/jellyfin:matrix.org.svg?logo=matrix"/>
</a> </a>
<a href="https://www.reddit.com/r/jellyfin"> <a href="https://www.reddit.com/r/jellyfin">
@ -26,7 +26,7 @@ The Jellyfin Roku App is a Jellyfin client for Roku Devices. This is still very
## Getting Started ## Getting Started
The channel is available on the [Roku Channel Store](https://my.roku.com/add/jellyfin). The channel is available on the [Roku Channel Store](https://channelstore.roku.com/details/cc5e559d08d9ec87c5f30dcebdeebc12/jellyfin).
## Getting Involved<a name="get_involved"></a> ## Getting Involved<a name="get_involved"></a>

View File

@ -70,6 +70,9 @@ sub LoadItems_AddVideoContent(video, mediaSourceId, audio_stream_idx = 1, subtit
end if end if
end if end if
' For phase 1 of playlist support, we don't support intros yet
showIntro = false
' Don't attempt to play an intro for an intro video ' Don't attempt to play an intro for an intro video
if showIntro if showIntro
' Do not play intros when resuming playback ' Do not play intros when resuming playback

View File

@ -30,8 +30,12 @@ sub init()
m.top.observeField("state", "onState") m.top.observeField("state", "onState")
m.top.observeField("content", "onContentChange") m.top.observeField("content", "onContentChange")
m.top.observeField("allowCaptions", "onAllowCaptionsChange")
end sub
sub onAllowCaptionsChange()
if not m.top.allowCaptions then return
'Captions
m.captionGroup = m.top.findNode("captionGroup") m.captionGroup = m.top.findNode("captionGroup")
m.captionGroup.createchildren(9, "LayoutGroup") m.captionGroup.createchildren(9, "LayoutGroup")
m.captionTask = createObject("roSGNode", "captionTask") m.captionTask = createObject("roSGNode", "captionTask")
@ -129,7 +133,9 @@ end sub
' When Video Player state changes ' When Video Player state changes
sub onPositionChanged() sub onPositionChanged()
m.captionTask.currentPos = Int(m.top.position * 1000) if isValid(m.captionTask)
m.captionTask.currentPos = Int(m.top.position * 1000)
end if
' Check if dialog is open ' Check if dialog is open
m.dialog = m.top.getScene().findNode("dialogBackground") m.dialog = m.top.getScene().findNode("dialogBackground")
if not isValid(m.dialog) if not isValid(m.dialog)
@ -140,7 +146,9 @@ end sub
' '
' When Video Player state changes ' When Video Player state changes
sub onState(msg) sub onState(msg)
m.captionTask.playerState = m.top.state + m.top.globalCaptionMode if isValid(m.captionTask)
m.captionTask.playerState = m.top.state + m.top.globalCaptionMode
end if
' When buffering, start timer to monitor buffering process ' When buffering, start timer to monitor buffering process
if m.top.state = "buffering" and m.bufferCheckTimer <> invalid if m.top.state = "buffering" and m.bufferCheckTimer <> invalid

View File

@ -16,6 +16,7 @@
<field id="transcodeAvailable" type="boolean" value="false" /> <field id="transcodeAvailable" type="boolean" value="false" />
<field id="retryWithTranscoding" type="boolean" value="false" /> <field id="retryWithTranscoding" type="boolean" value="false" />
<field id="isTranscoded" type="boolean" /> <field id="isTranscoded" type="boolean" />
<field id="allowCaptions" type="boolean" value="false" />
<field id="transcodeReasons" type="array" /> <field id="transcodeReasons" type="array" />
<field id="videoId" type="string" /> <field id="videoId" type="string" />

View File

@ -28,13 +28,12 @@ end sub
sub setFont() sub setFont()
fs = CreateObject("roFileSystem") fs = CreateObject("roFileSystem")
fontlist = fs.Find("tmp:/", "font")
if fontlist.count() > 0 if fs.Exists("tmp:/font")
m.font.uri = "tmp:/" + fontlist[0] m.font.uri = "tmp:/font"
m.font.size = m.fontSize m.font.size = m.fontSize
else else
reg = CreateObject("roFontRegistry") m.font = "font:LargeSystemFont"
m.font = reg.GetDefaultFont(m.fontSize, false, false)
end if end if
end sub end sub
@ -56,6 +55,7 @@ function newlabel(txt)
label = CreateObject("roSGNode", "Label") label = CreateObject("roSGNode", "Label")
label.text = txt label.text = txt
label.font = m.font label.font = m.font
label.font.size = m.fontSize
label.color = m.textColor label.color = m.textColor
label.opacity = m.textOpac label.opacity = m.textOpac
return label return label
@ -89,7 +89,7 @@ function newRect(lg)
end function end function
sub updateCaption () sub updateCaption()
m.top.currentCaption = [] m.top.currentCaption = []
if LCase(m.top.playerState) = "playingon" if LCase(m.top.playerState) = "playingon"
m.top.currentPos = m.top.currentPos + 100 m.top.currentPos = m.top.currentPos + 100

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -542,6 +542,9 @@ function CreateVideoPlayerGroup(video_id, mediaSourceId = invalid, audio_stream_
video = VideoPlayer(video_id, mediaSourceId, audio_stream_idx, defaultSubtitleTrackFromVid(video_id), forceTranscoding, showIntro, allowResumeDialog) video = VideoPlayer(video_id, mediaSourceId, audio_stream_idx, defaultSubtitleTrackFromVid(video_id), forceTranscoding, showIntro, allowResumeDialog)
if video = invalid then return invalid if video = invalid then return invalid
video.allowCaptions = true
if video.errorMsg = "introaborted" then return video if video.errorMsg = "introaborted" then return video
video.observeField("selectSubtitlePressed", m.port) video.observeField("selectSubtitlePressed", m.port)
video.observeField("selectPlaybackInfoPressed", m.port) video.observeField("selectPlaybackInfoPressed", m.port)

View File

@ -332,11 +332,15 @@ function PlayIntroVideo(video_id, audio_stream_idx) as boolean
if lcase(introVideos.items[0].name) = "rick roll'd" then return true if lcase(introVideos.items[0].name) = "rick roll'd" then return true
introVideo = VideoPlayer(introVideos.items[0].id, introVideos.items[0].id, audio_stream_idx, defaultSubtitleTrackFromVid(video_id), false, false) introVideo = VideoPlayer(introVideos.items[0].id, introVideos.items[0].id, audio_stream_idx, defaultSubtitleTrackFromVid(video_id), false, false)
if isValid(introVideo)
introVideo.allowCaptions = false
end if
port = CreateObject("roMessagePort") port = CreateObject("roMessagePort")
introVideo.observeField("state", port) introVideo.observeField("state", port)
m.global.sceneManager.callFunc("pushScene", introVideo) m.global.sceneManager.callFunc("pushScene", introVideo)
introPlaying = true introPlaying = true
stopLoadingSpinner()
while introPlaying while introPlaying
msg = wait(0, port) msg = wait(0, port)