Some images in RSS feeds (always the newest ones) don't show up!?

Before completing please check that the time, date and timezone have been correctly set on the device running the Player.

Check!

Player Version

windows 3 R301.1-301

Issue

I have a layout with the RSS widget. We get the RSS feed for a customer from the official news distribution service in Austria. It is a paid service and the feed is customized for our client, so I can’t post the link, but I can assure you that it works (99.99% reliable).

Often the newest posts show the text and category correctly but the image (which every post has one) doesn’t show up, at least for one loop (mostly longer). I have figured out the core of the problem but not the reason or a solution: It is because the image(s) don’t get downloaded (for some time). I have more test systems running and when one shows the picture and another don’t I can compare the ticker_[hash] files in the lib-folders and can see that the missing picture just isn’t downloaded. Then I immediately tried the RSS feed and the links to the missing pictures (always the newest ones) on my PC and they always worked just fine and fast.

I have looked for differences in the pictures but all gets preprocessed for us from the agency (same size/resolution, codec, encoder settings) so there are none. I have played with the caching settings and it seams with lower (or synchronized) intervals maybe it get’s a little better, but that’s not a solution (First I have 5/240 for refresh and image refresh, then i synced them and tried 60/60 and 15/15).

Here are all my settings:
RSS Settings 01




RSS Settings 05
RSS Settings 06

And here my design (if it basically can influence the download of the images?):

  • Main template
<div class="col1">
<div class="image">[Link|image]</div>
<div class="cat">[category|]</div>
</div>
<div class="col2">
<h1>[Title]</h1>
<div class="description ">[Description]</div>
</div>
  • Stylesheet
.image img {
  width: 90%;
  max-height: 77%;
  position: absolute;
  left: 8%;
  top: 10%;}

.cat {
  font-size: 150px; 
  font-weight: bold;
  text-align: left;
  color: lightblue;
  line-height: 0.75;
  position: absolute;
  bottom: 0;
  opacity: .7;}

.col1{color: white;
  position: absolute;
  bottom: 0;
  width: 40%;
  left: 0;
  height: 100%;}

.col2{color: white;
  position: absolute;
  bottom: 0;
  width: 60%;
  left: 40%;
  height: 100%;}

h1 {
  font-family: Arial, Verdana, sans-serif; 
  font-size: 70px; 
  padding-top: 8%;
  padding-left: 5%;
  padding-right: 5%;
}

.description {
  font-family: Arial, Verdana, sans-serif;
  font-size: 56px; 
  position: absolute;
  top: 50%;
  padding-left: 5%;
  padding-right: 5%;}
  • No data
<span style="font-size: 48px; color:#ffffff;">No Data returned from the source</span>
  • JS
var i = 0;                         // Counter for typewriter functions
var txtH = '';                    // intermediate storage of heading text
var txtHOld = 'dummy';   // previous heading text (to detect new page)
var txtD = '';                    // intermediate storage of description text
var txtDOld = 'dummy';   // previous description text (to detect new page)
var speedH = 25;            // Speed for heading typing (ms delay between letters)
var speedD = 12;            // Speed for description typing (ms delay between letters)
var typed = true;              // finished typing (page complete)

// observed Node: '#content'(contains the seperate slides)
var target = document.querySelector('#content');
 
// Observer function (executed everytime '#content' or a child of it changes
var observer = new MutationObserver(function(mutations) {
    var heading =  document.getElementsByClassName("cycle-slide-active")[0].getElementsByTagName("h1")[0];
    var descr =  document.getElementsByClassName("cycle-slide-active")[0].getElementsByClassName("description")[0];
    if(typed) {        // save texts of the new slide
      txtH = heading.textContent;
      txtD = descr.textContent;
    }
    if (txtH != txtHOld && txtD != txtDOld) {       // check if new slide is active
       typed = false;
       // clear Heading and Description
       heading.textContent = "";
       descr.textContent = "";
       // replace category abreviation with actual category name
       setCat(document.getElementsByClassName("cycle-slide-active")[0].getElementsByClassName("cat")[0]);
       i=0;
       txtDOld = txtD;
       txtHOld = txtH;
       // start typing the heading in 1000ms
       setTimeout(typeWriterH1, 1000);
  }
});
 
// Configuration of the Observer: report changed attributes, subtree and data
var config = { attributes: true, subtree: true, characterData: true };
 
// start Observer with given target node and config
observer.observe(target, config);

// replaces the abbreviation with the actual category in the given tag
function setCat(catTag) {
  var cat = catTag.innerHTML;
  switch(cat) {
    case "AA":
    case "II":
      cat = "Politik";
      break;
    case "CA":
    case "CI":
      cat = "Chronik";
      break;
    case "SA":
    case "SI":
      cat = "Sport";
      break;
    case "KA":
    case "KI":
      cat = "Kultur";
      break;
    case "WA":
    case "WI":
      cat = "Wirtschaft";
      break;
    default:
      cat = "";
      break;
  }
  catTag.innerHTML = cat;
}

// writes letter by letter of the heading, by being called periodically every speedH ms and adding a span-tag that makes the text that is not visible yet transparent
function typeWriterH1() {
  var  h1Tag = document.getElementsByClassName("cycle-slide-active")[0].getElementsByTagName("h1")[0];
  if (i < txtH.length) {
    // print the first i letters
    h1Tag.innerHTML = txtH.substring(0,i+1);
    i++;
    // skip spaces
    if (txtH.charAt(i) == ' ') {
       h1Tag.innerHTML += txtH.charAt(i);
       i++;
    }
    // add remaining string in a span Element that is set transparent
    var transSpan = document.createElement('span')
    transSpan.style.opacity= 0;
    transSpan.innerHTML = txtH.substring(i,txtH.length);
    h1Tag.appendChild(transSpan);
    // call the function again in speedH ms
    setTimeout(typeWriterH1, speedH);
  } else {        // heading is printed completely, start typing description
     i = 0;
     typeWriterD();
  }
}

// writes letter by letter of the heading, see above
function typeWriterD() {
  var  desTag = document.getElementsByClassName("cycle-slide-active")[0].getElementsByClassName("description")[0];
  if (i < txtD.length) {
    desTag.innerHTML = txtD.substring(0,i+1);
    i++;
    if (txtD.charAt(i) == ' ') {
      desTag.innerHTML += txtD.charAt(i);
       i++;
    }
    var transSpan = document.createElement('span')
    transSpan.style.opacity= 0;
    transSpan.innerHTML = txtD.substring(i,txtD.length);
    desTag.appendChild(transSpan);
    setTimeout(typeWriterD, speedD);
  } else {
     i = 0;
     typed = true;
  }
}

That same thing happen with my players for years… i never found a solution
Can you share the same images, but in english? I dont really know what settings you are sharing!
I will try your solution as well, thanks!

That’s Bad…

Sorry, but this Server is for a Client and the german user interface is not optional for them. BUT the values are in the same spot as shown in the screenshots to identify them. The words in the dropdown are:

Vererben = inherit
Start des Feeds = At the beginning of the feed
Überblenden = fade into
Links nach Rechts (LNR) = Left to right (LTR)

Honestly I think it’s a bug. The only things we can control are the presentation and the update intervals!? The handling of the download and what we get through the [tags] is totally up to the module itself. I think it needs a (better) check for the image downloads and should only present a news item through the “tag-interface” if all is ready.

1 Like

This topic was automatically closed 91 days after the last reply. New replies are no longer allowed.