Merge branch 'jellyfin:unstable' into nobadsubs

This commit is contained in:
Austin Crandall 2022-12-17 11:19:14 -05:00 committed by GitHub
commit 8bf3ac56f5
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
17 changed files with 644 additions and 1645 deletions

View File

@ -7,15 +7,19 @@ assignees: ''
---
**Software Versions**
Jellyfin Server Version:
Roku Client Version:
**Describe the bug**
<!-- A clear and concise description of what the bug is. -->
**To Reproduce**
**How To Reproduce**
<!-- Steps to reproduce the behavior: -->
1. Go to '...'
2. Click on '....'
3. Scroll down to '....'
4. See error
4. Bug occurs
**Expected behavior**
<!-- A clear and concise description of what you expected to happen. -->
@ -26,5 +30,10 @@ assignees: ''
**Screenshots**
<!-- If applicable, add screenshots to help explain your problem. -->
**Connection Information**
Is server local or remote?
Is server connection http or https?
**Additional context**
<!-- Add any other context about the problem here. -->

View File

@ -8,7 +8,7 @@ jobs:
run:
runs-on: ubuntu-20.04
steps:
- uses: actions/checkout@93ea575cb5d8a053eaa0ac8fa3b40d7e05a33cc8 # v3
- uses: actions/checkout@755da8c3cf115ac066823e79a1e1788f8940201b # v3
- uses: actions/setup-node@8c91899e586c5b171469028077307d293428b516 # tag=v3
with:
node-version: "14.12.0"

View File

@ -22,7 +22,7 @@ jobs:
run: awk 'BEGIN { FS="=" } /^minor_version/ { print "MINOR="$2; }' manifest >> $GITHUB_ENV
- name: "Find and save build_version from manifest"
run: awk 'BEGIN { FS="=" } /^build_version/ { print "BUILD="$2; }' manifest >> $GITHUB_ENV
- uses: actions/checkout@93ea575cb5d8a053eaa0ac8fa3b40d7e05a33cc8 # v3
- uses: actions/checkout@755da8c3cf115ac066823e79a1e1788f8940201b # v3
- uses: vimtor/action-zip@5f1c4aa587ea41db1110df6a99981dbe19cee310 # tag=v1
with:
recursive: false

View File

@ -22,7 +22,7 @@ jobs:
run: awk 'BEGIN { FS="=" } /^minor_version/ { print "MINOR="$2; }' manifest >> $GITHUB_ENV
- name: "Find and save build_version from manifest"
run: awk 'BEGIN { FS="=" } /^build_version/ { print "BUILD="$2; }' manifest >> $GITHUB_ENV
- uses: actions/checkout@93ea575cb5d8a053eaa0ac8fa3b40d7e05a33cc8 # v3
- uses: actions/checkout@755da8c3cf115ac066823e79a1e1788f8940201b # v3
- uses: vimtor/action-zip@5f1c4aa587ea41db1110df6a99981dbe19cee310 # tag=v1
with:
recursive: false

View File

@ -10,7 +10,7 @@
##########################################################################
APPNAME = Jellyfin_Roku
VERSION = 1.6.2
VERSION = 1.6.3
ZIP_EXCLUDE= -x xml/* -x artwork/* -x \*.pkg -x storeassets\* -x keys\* -x \*/.\* -x *.git* -x *.DS* -x *.pkg* -x dist/**\* -x out/**\*

View File

@ -30,10 +30,6 @@ sub setData()
else if datum.type = "Episode"
imgParams = { "AddPlayedIndicator": datum.UserData.Played }
if datum.UserData.PlayedPercentage <> invalid
imgParams.Append({ "PercentPlayed": datum.UserData.PlayedPercentage })
end if
imgParams.Append({ "maxHeight": 261 })
imgParams.Append({ "maxWidth": 464 })
@ -68,10 +64,6 @@ sub setData()
else if datum.type = "Movie"
imgParams = { AddPlayedIndicator: datum.UserData.Played }
if datum.UserData.PlayedPercentage <> invalid
imgParams.Append({ "PercentPlayed": datum.UserData.PlayedPercentage })
end if
imgParams.Append({ "maxHeight": 261 })
imgParams.Append({ "maxWidth": 175 })
@ -89,10 +81,6 @@ sub setData()
else if datum.type = "Video"
imgParams = { AddPlayedIndicator: datum.UserData.Played }
if datum.UserData.PlayedPercentage <> invalid
imgParams.Append({ "PercentPlayed": datum.UserData.PlayedPercentage })
end if
imgParams.Append({ "maxHeight": 261 })
imgParams.Append({ "maxWidth": 175 })

View File

@ -11,6 +11,7 @@
<field id="json" type="assocarray" onChange="setData" />
<field id="collectionType" type="string" />
<field id="imageWidth" type="integer" value="464" />
<field id="PlayedPercentage" type="float" value="0" />
<field id="usePoster" type="bool" value="false" />
</interface>
<script type="text/brightscript" uri="pkg:/source/api/baserequest.brs" />

View File

@ -2,10 +2,15 @@ sub init()
m.itemText = m.top.findNode("itemText")
m.itemPoster = m.top.findNode("itemPoster")
m.itemProgress = m.top.findNode("progress")
m.itemProgressBackground = m.top.findNode("progressBackground")
m.itemIcon = m.top.findNode("itemIcon")
m.itemTextExtra = m.top.findNode("itemTextExtra")
m.itemPoster.observeField("loadStatus", "onPosterLoadStatusChanged")
m.showProgressBarAnimation = m.top.findNode("showProgressBar")
m.showProgressBarField = m.top.findNode("showProgressBarField")
' Randomize the background colors
m.backdrop = m.top.findNode("backdrop")
posterBackgrounds = m.global.constants.poster_bg_pallet
@ -74,6 +79,10 @@ sub itemContentChanged()
if itemData.type = "Episode"
m.itemText.text = itemData.json.SeriesName
if itemData.PlayedPercentage > 0
drawProgressBar(itemData)
end if
if itemData.usePoster = true
m.itemPoster.uri = itemData.widePosterURL
else
@ -99,6 +108,10 @@ sub itemContentChanged()
if itemData.type = "Movie"
m.itemText.text = itemData.name
if itemData.PlayedPercentage > 0
drawProgressBar(itemData)
end if
' Use best image, but fallback to secondary if it's empty
if (itemData.imageWidth = 180 and itemData.posterURL <> "") or itemData.thumbnailURL = ""
m.itemPoster.uri = itemData.posterURL
@ -126,6 +139,10 @@ sub itemContentChanged()
if itemData.type = "Video"
m.itemText.text = itemData.name
if itemData.PlayedPercentage > 0
drawProgressBar(itemData)
end if
if itemData.imageWidth = 180
m.itemPoster.uri = itemData.posterURL
else
@ -203,6 +220,15 @@ sub itemContentChanged()
end sub
'
' Draws and animates item progress bar
sub drawProgressBar(itemData)
m.itemProgressBackground.width = itemData.imageWidth
m.itemProgressBackground.visible = true
m.showProgressBarField.keyValue = [0, m.itemPoster.width * (itemData.PlayedPercentage / 100)]
m.showProgressBarAnimation.control = "Start"
end sub
'
' Enable title scrolling based on item Focus
sub focusChanged()

View File

@ -4,8 +4,17 @@
<Rectangle id="backdrop" width="464" height="261" translation="[8,5]" />
<Poster id="itemIcon" width="100" height="100" translation="[190,85]" loadDisplayMode="scaleToFit" />
<Poster id="itemPoster" width="464" height="261" translation="[8,5]" loadDisplayMode="scaleToZoom" />
<Rectangle id="progressBackground" visible="false" color="0x00000098" width="464" height="8" translation="[8,260]">
<Rectangle id="progress" color="#00a4dcFF" width="0" height="8" />
</Rectangle>
<ScrollingLabel id="itemText" horizAlign="center" vertAlign="center" font="font:SmallBoldSystemFont" height="64" maxWidth="456" translation="[8,267]" repeatCount="0" />
<Label id="itemTextExtra" horizAlign="left" vertAlign="center" font="font:SmallBoldSystemFont" height="32" width="456" translation="[8,300]" visible="false" color="#777777FF" />
<Animation id="showProgressBar" delay="1" duration="1" repeat="false" easeFunction="linear">
<FloatFieldInterpolator id="showProgressBarField" key="[0.0, 1.0]" fieldToInterp="progress.width" />
</Animation>
</children>
<interface>
<field id="itemContent" type="node" onChange="itemContentChanged" />

View File

@ -201,6 +201,10 @@ sub updateContinueItems()
row.title = tr("Continue Watching")
itemSize = [464, 331]
for each item in itemData
if item.json?.UserData?.PlayedPercentage <> invalid
item.PlayedPercentage = item.json.UserData.PlayedPercentage
end if
item.usePoster = row.usePoster
item.imageWidth = row.imageWidth
row.appendChild(item)

View File

@ -8424,5 +8424,17 @@
<source>DATE_ADDED</source>
<translation>Hinzugefügt am</translation>
</message>
<message>
<source>Save Credentials?</source>
<translation>Zugangsdaten speichern?</translation>
</message>
<message>
<source>Sign Out</source>
<translation>Abmelden</translation>
</message>
<message>
<source>Delete Saved</source>
<translation>Gespeicherte löschen</translation>
</message>
</context>
</TS>

View File

@ -2115,5 +2115,78 @@
<translation>Unable to find any albums or songs belonging to this artist</translation>
<extracomment>Popup message when we find no audio data for an artist</extracomment>
</message>
<message>
<source>On Now</source>
<translation>On Now</translation>
</message>
<message>
<source>Press &apos;OK&apos; to Close</source>
<translation>Press &apos;OK&apos; to Close</translation>
</message>
<message>
<source>View Channel</source>
<translation>View Channel</translation>
</message>
<message>
<source>Record</source>
<translation>Record</translation>
</message>
<message>
<source>Age</source>
<translation>Age</translation>
</message>
<message>
<source>Cast &amp; Crew</source>
<translation>Cast &amp; Crew</translation>
</message>
<message>
<source>Save Credentials?</source>
<translation>Save Credentials?</translation>
</message>
<message>
<source>Delete Saved</source>
<translation>Delete Saved</translation>
</message>
<message>
<source>Died</source>
<translation>Died</translation>
</message>
<message>
<source>More Like This</source>
<translation>More Like This</translation>
</message>
<message>
<source>Special Features</source>
<translation>Special Features</translation>
</message>
<message>
<source>Born</source>
<translation>Born</translation>
</message>
<message>
<source>Additional Parts</source>
<translation>Additional Parts</translation>
<extracomment>Additional parts of a video</extracomment>
</message>
<message>
<source>Movies</source>
<translation>Films</translation>
</message>
<message>
<source>TV Shows</source>
<translation>TV Shows</translation>
</message>
<message>
<source>Record Series</source>
<translation>Record Series</translation>
</message>
<message>
<source>Cancel Recording</source>
<translation>Cancel Recording</translation>
</message>
<message>
<source>Cancel Series Recording</source>
<translation>Cancel Series Recording</translation>
</message>
</context>
</TS>

View File

@ -7654,5 +7654,32 @@ elemeket</translation>
<source>On Now</source>
<translation>Most</translation>
</message>
<message>
<source>Save Credentials?</source>
<translation>Mented a hitelesítő adatokat?</translation>
</message>
<message>
<source>Error Retrieving Content</source>
<translation>Hiba a tartalom lekérésekor</translation>
<extracomment>Dialog title when unable to load Content from Server</extracomment>
</message>
<message>
<source>Delete Saved</source>
<translation>Mentettek Törlése</translation>
</message>
<message>
<source>On Now</source>
<translation>Most</translation>
</message>
<message>
<source>There was an error retrieving the data for this item from the server.</source>
<translation>Hiba történt az elem(ek) betöltése során a szerverről.</translation>
<extracomment>Dialog detail when unable to load Content from Server</extracomment>
</message>
<message>
<source>Error During Playback</source>
<translation>Hiba történt a lejátszás közben</translation>
<extracomment>Dialog title when error occurs during playback</extracomment>
</message>
</context>
</TS>

View File

@ -2,7 +2,7 @@
title=Jellyfin
major_version=1
minor_version=6
build_version=2
build_version=3
### Main Menu Icons / Channel Poster Artwork
mm_icon_focus_fhd=pkg:/images/channel-poster_fhd.png

2090
package-lock.json generated

File diff suppressed because it is too large Load Diff

View File

@ -1,11 +1,11 @@
{
"name": "jellyfin-roku",
"version": "1.6.2",
"version": "1.6.3",
"description": "Roku app for Jellyfin media server",
"main": "index.js",
"devDependencies": {
"@rokucommunity/bslint": "0.7.5",
"brighterscript": "0.61.1",
"@rokucommunity/bslint": "0.8.0",
"brighterscript": "0.61.2",
"ropm": "0.10.10"
},
"scripts": {

View File

@ -328,9 +328,17 @@ sub Main (args as dynamic) as void
sceneManager.callFunc("pushScene", video)
end if
if group.lastfocus.id = "main_group"
buttons = group.findNode("buttons")
if isValid(buttons)
group.lastfocus = group.findNode("buttons")
end if
end if
if group.lastFocus <> invalid
group.lastFocus.setFocus(true)
end if
else if btn <> invalid and btn.id = "trailer-button"
audio_stream_idx = 1
mediaSourceId = invalid