Ticket #9534: patch-freebox_without_m3u.2.diff

File patch-freebox_without_m3u.2.diff, 3.3 KB (added by ligverd@…, 14 years ago)

Update patch for last version Mythtv 0.25+

  • libs/libmythtv/iptv/iptvchannelfetcher.cpp

    diff -U 3 -dHrN ./mythtv-0.25.20110705-1//libs/libmythtv/iptv/iptvchannelfetcher.cpp ./mythtv-new//libs/libmythtv/iptv/iptvchannelfetcher.cpp
    old new  
    221221QString IPTVChannelFetcher::DownloadPlaylist(const QString &url,
    222222                                             bool inQtThread)
    223223{
     224    if (url.left(8).toLower() == "internal")
     225    {
     226        QString ret = "internal";
     227        return ret;
     228    }
     229
    224230    if (url.left(4).toLower() == "file")
    225231    {
    226232        QString ret = "";
  • libs/libmythtv/iptvchannel.cpp

    diff -U 3 -dHrN ./mythtv-0.25.20110705-1//libs/libmythtv/iptvchannel.cpp ./mythtv-new//libs/libmythtv/iptvchannel.cpp
    old new  
    4949        return false;
    5050    }
    5151
     52    // check flag change playlist
     53    MSqlQuery query(MSqlQuery::InitCon());
     54    query.prepare("SELECT data FROM settings WHERE value='iptv_playlist_change'");
     55    if (!query.exec() || !query.isActive())
     56        MythDB::DBError("fetching flag playlist change", query);
     57
     58    query.next();
     59    int flag=query.value(0).toInt();
     60    //query.finish();
     61
     62    if ( flag )
     63    {
     64        m_freeboxchannels.clear();
     65        query.prepare("UPDATE settings SET data='0' WHERE value='iptv_playlist_change'");
     66        query.exec();
     67        //query.finish();
     68    }
     69
    5270    if (m_freeboxchannels.empty())
    5371    {
    5472        QString content = IPTVChannelFetcher::DownloadPlaylist(
    5573            m_videodev, true);
    56         m_freeboxchannels = IPTVChannelFetcher::ParsePlaylist(content);
     74        if (content == "internal")
     75        {
     76            //MSqlQuery query(MSqlQuery::InitCon());
     77            query.prepare("SELECT i.sourceid FROM capturecard AS c,cardinput AS i "
     78                          "WHERE c.cardtype='FREEBOX' AND c.videodevice LIKE 'internal:%' "
     79                          "AND c.cardid=i.cardid GROUP BY 1");
     80            if (!query.exec() || !query.isActive()) return false;
     81            query.next();
     82            int sourceid=query.value(0).toInt();
     83            //query.finish();
     84
     85            query.prepare("SELECT channum,name,freqid,xmltvid FROM channel WHERE sourceid = :SOURCEID");
     86            query.bindValue(":SOURCEID", sourceid);
     87
     88            if (!query.exec() || !query.isActive())
     89            {
     90                MythDB::DBError("fetching chaninfo from database", query);
     91                LOG(VB_GENERAL, LOG_ERR, LOC + "Can`t fetching chaninfo from database");
     92                return false;
     93            }
     94
     95            fbox_chan_map_t chanmap;
     96
     97            while (query.next())
     98            {
     99                chanmap[query.value(0).toString()]=IPTVChannelInfo(query.value(1).toString(), query.value(2).toString(), query.value(3).toString());
     100            }
     101            //query.finish();
     102
     103            m_freeboxchannels = chanmap;
     104        }
     105        else
     106        {
     107            m_freeboxchannels = IPTVChannelFetcher::ParsePlaylist(content);
     108        }
     109
    57110        LOG(VB_GENERAL, LOG_NOTICE, LOC + QString("Loaded %1 channels from %2")
    58111            .arg(m_freeboxchannels.size()) .arg(m_videodev));
    59112    }