Project

General

Profile

Bug #6003

invalid utf8 byte is appended to the end in description field in dvr recordings that exceed ~578 characters in length

Added by Nikolay Kichukov almost 4 years ago. Updated almost 4 years ago.

Status:
Invalid
Priority:
Normal
Assignee:
-
Category:
-
Target version:
-
Start date:
2021-02-17
Due date:
% Done:

0%

Estimated time:
Found in version:
4.2.8
Affected Versions:

Description

Hello team,

This seems to be a very similar to https://tvheadend.org/issues/5668, thus I start here first, though it may not be related to tvheadend at all.

In case it is caused by tvheadend, here is how to reproduce:

tvheadend 4.2.8

Create a DVR recording with 'description field' greater than ~578 (I've seen this truncate at 571, 575 and 578), here is an example:

...
        "title": {
                "bul": "Революция" 
        },
        "description": {
                "bul": "игрален филм /Великобритания, Норвегия, 1985 г./, режисьор Хю Хъдсън, в ролите: Ал Пачино, Настася Кински, Ани Ленъкс, Доналд Съдърланд и др. (14). Режисьор Хю ХъдсънВ ролите: Ал Пачино, Доналд Съдърланд, Настася Кински, Ани Ленъкс и др.Защитата на семейството го вкарва във война ...Епична драма, различна от \"Патриотът\", за отчаян избор, с участие във война за независимостта на Америка.Независимо от значението й за картата на историята, Американската революция не е популярна тема във филми. Преди Хю Хъдсън холивудските интереси към борбата за независимост на Америка са по-малко от пет. Хъдсън е изненадан от критиката, недоволна от заснемането на филм за Американската независимост в Англия. Освен мълчаливите батални сцени, единствените пасажи, които звучат истински включват британци, което води до мисълта, че би имал успех, като заснет от британска гледна точка вместо от американска. Може би, това обяснява последвалия печален резултат. След филма думата \"революция\" не е споменавана до появата на \"Патриотът\" /2000/. 15 години режисьорът Хю Хъдсън остава извън високобюджетни филми до \"Мечта за Африка\"/2000/, а Ал Пачино почти се оттегля от екрана до \"Море от любов\" /1989/. Филмът струва 30 милиона долара на компанията \"Уорнър Брадърс\" с разточителен бюджет за сценография и костюми и носи по-малко от 200 хиляди долара приход в американския бокс-офис.Всъщност, разказаната история е повече лична, отколкото военна и е само поглед към Американската революция като фон за друга драма... ИСТОРИЯТА: Победата на Британия през Седемгодишната война /1753-1763/ завършва с ожесточена битка между Франция и Англия за господство над Северна Америка. Британският контрол над френските колонии гарантира спокойствие на северноамериканците от френско уредени индиански набези. Но скоро напрежението между Британия и 13-те колонии нараства. Опитът на британците да вдигнат данъците в самоиздържащите се колонии, за да запълнят дупката си от дългове, направени през войната, води до недоволство и възмущение към британското правителство. Убедени, че с твърд израз на сила ще поставят колонистите на мястото им, американците въстават. Британците са изненадани от откритата война, избухнала през 1775г., с която започва Американската революция. Малката гарнизонна армия на британците в колониите е очевидно недостатъчна да потуши бунта, затова Англия изпраща допълнителни подкрепления от от 20 000 войници, наети от германския херцог. През лятото на 1776 британската сила лесно отблъсква извън Ню Йорк американската армия, водена от генерал Джордж Вашингтон, но голяма част от бунтовниците остават дори след кървавия отбой в Ню Джърси. Войната продължава...ФИЛМЪТ: Нюйоркският ловец Том Доб по-малко от всичко на света би искал да участва във Войната за независмост. Епидемия отнема живота на съпругата и всичките му деца, освен 14-годишния му син Нед. Том е затворен в себе си, но когато Нед се записва в армията на американските колонисти под влияние на коварния сержант-майор Пийси, Том също се включва в редиците на воюващите, за да бъде близо до сина си. В хода на войната, Том променя убежденията си и стига до извода, че да се сражава за свободата на Америка е негов дълг. Така смята и богатата либерална аристократка Дейзи Макконъхи, към която Том не е безразличен. Революционната армия от фермери и селяни самоотвержено се сражава редом с обучени английски войници. От момента, в който Том отдава сърцето си на дълга и свободата, войната се разгръща с цялата си мощ. Но пътят към победата е дълг и труден....Златна Романова" 
        },
        "pri": 2,
...

Configure the client to connect to this server via htsp, in this case kodi-pvr-hts (latest master from git), kodi (latest RC1 from master) and hit the kodi JSON RPC to get this recording like this:

curl -X POST -H "content-type:application/json" -u kodi http://KODI:8080/jsonrpc -d '{"jsonrpc":"2.0","method":"PVR.GetRecordings","id":1,"params":{"properties":["starttime","plot"]}}'

In this case, plot maps to description.

Observe how the response contains invalid utf8 byte in the end of the 'plot' field.

Is this caused by tvheadend? If yes, can we get 'utf8_validate_inplace' function implemented for the 'description' field as well?

This breaks the official kodi remote iOS app after they migrated it to NSJSONSerialization which now fails to list any recordings due to failure to serialize the json response, as the json becomes invalid - "lexical error: invalid bytes in UTF8 string.".

See https://github.com/xbmc/Official-Kodi-Remote-iOS/issues/164

Note, if one loads the recording in tvheadend web UI, then the description field is properly populated and contains the complete string, as seen in the dvr log files.

Thank you,
-Nikolay

History

#1

Updated by Flole Systems almost 4 years ago

  • Status changed from New to Invalid

Issue reports for old versions like 4.2 are no longer accepted.

#2

Updated by Nikolay Kichukov almost 4 years ago

This is the latest released stable version, please, review.

Also available in: Atom PDF