Ticket #1777: xmltv_find_grabber.diff

File xmltv_find_grabber.diff, 5.3 KB (added by stuart@…, 20 years ago)

Use tv_find_grabbers

  • libs/libmythtv/videosource.cpp

     
    1818#include <qfile.h>
    1919#include <qmap.h>
    2020#include <qdir.h>
     21#include <qprocess.h>
    2122
    2223// MythTV headers
    2324#include "mythconfig.h"
     
    108109    XMLTVGrabber(const VideoSource& parent)
    109110      : VSSetting(parent, "xmltvgrabber")
    110111    {
    111         setLabel(QObject::tr("XMLTV listings grabber"));
     112        setLabel(QObject::tr("Listings grabber"));
    112113    };
    113114};
    114115
     
    300301        "instead of just 'mythfilldatabase'.\nYour grabber does not provide "
    301302        "channel numbers, so you have to set them manually.");
    302303
    303     if (grabber == "tv_grab_de_tvtoday" || grabber == "tv_grab_se_swedb" ||
    304         grabber == "tv_grab_fi" || grabber == "tv_grab_es" ||
    305         grabber == "tv_grab_nl" || grabber == "tv_grab_jp" ||
    306         grabber == "tv_grab_no" || grabber == "tv_grab_pt" ||
    307         grabber == "tv_grab_ee" || grabber == "tv_grab_be_tvb" ||
    308         grabber == "tv_grab_be_tlm" || grabber == "tv_grab_is" ||
    309         grabber == "tv_grab_br" || grabber == "tv_grab_cz")
    310        
     304    if (grabber != "datadirect" && grabber != "eitonly" &&
     305        grabber != "/bin/true")
    311306    {
    312307        VERBOSE(VB_IMPORTANT, "\n" << err_msg);
    313308        MythPopupBox::showOkPopup(
     
    374369
    375370    // only save settings for the selected grabber
    376371    setSaveAll(false);
    377  
     372
    378373    addTarget("datadirect", new DataDirect_config(parent));
    379     grabber->addSelection("North America (DataDirect)", "datadirect");
    380    
     374    grabber->addSelection("North America (DataDirect) (Internal)", "datadirect");
     375
    381376    addTarget("eitonly", new EITOnly_config(parent));
    382377    grabber->addSelection("Transmitted guide only (EIT)", "eitonly");
    383378
    384     addTarget("tv_grab_de_tvtoday", new XMLTV_generic_config(parent, "tv_grab_de_tvtoday"));
    385     grabber->addSelection("Germany (tvtoday)", "tv_grab_de_tvtoday");
     379    QProcess find_grabber_proc( this );
     380    find_grabber_proc.addArgument("tv_find_grabbers");
     381    if ( !find_grabber_proc.start() ) {
     382        VERBOSE(VB_IMPORTANT, "Failed to run tv_find_grabbers");
     383    }
    386384
    387     addTarget("tv_grab_se_swedb", new XMLTV_generic_config(parent, "tv_grab_se_swedb"));
    388     grabber->addSelection("Sweden (tv.swedb.se)","tv_grab_se_swedb");
     385    while (find_grabber_proc.isRunning())
     386    {
     387        usleep(100000);
     388    }
    389389
    390     addTarget("tv_grab_no", new XMLTV_generic_config(parent, "tv_grab_no"));
    391     grabber->addSelection("Norway","tv_grab_no");
     390    if (find_grabber_proc.normalExit())
     391    {
     392        while (find_grabber_proc.canReadLineStdout())
     393        {
     394            QString grabber_list = find_grabber_proc.readLineStdout();
     395            QStringList grabber_split = QStringList::split("|", grabber_list);
     396            QString grabber_name = grabber_split[1] + " (xmltv)";
     397            QFileInfo grabber_file(grabber_split[0]);
     398            addTarget(grabber_file.fileName(), new XMLTV_generic_config(parent, grabber_file.fileName()));
     399            grabber->addSelection(grabber_name, grabber_file.fileName());
     400        }
     401    }
    392402
    393     addTarget("tv_grab_uk_rt", new XMLTV_generic_config(parent, "tv_grab_uk_rt"));
    394     grabber->addSelection("United Kingdom (alternative)","tv_grab_uk_rt");
    395 
    396     addTarget("tv_grab_au", new XMLTV_generic_config(parent, "tv_grab_au"));
    397     grabber->addSelection("Australia", "tv_grab_au");
    398 
    399     addTarget("tv_grab_fi", new XMLTV_generic_config(parent, "tv_grab_fi"));
    400     grabber->addSelection("Finland", "tv_grab_fi");
    401 
    402     addTarget("tv_grab_es", new XMLTV_generic_config(parent, "tv_grab_es"));
    403     grabber->addSelection("Spain", "tv_grab_es");
    404 
    405     addTarget("tv_grab_nl", new XMLTV_generic_config(parent, "tv_grab_nl"));
    406     grabber->addSelection("Holland", "tv_grab_nl");
    407 
    408     addTarget("tv_grab_dk", new XMLTV_generic_config(parent, "tv_grab_dk"));
    409     grabber->addSelection("Denmark", "tv_grab_dk");
    410 
    411     addTarget("tv_grab_fr", new XMLTV_generic_config(parent, "tv_grab_fr"));
    412     grabber->addSelection("France", "tv_grab_fr");
    413 
    414     addTarget("tv_grab_jp", new XMLTV_generic_config(parent, "tv_grab_jp"));
    415     grabber->addSelection("Japan", "tv_grab_jp");
    416 
    417     addTarget("tv_grab_pt", new XMLTV_generic_config(parent, "tv_grab_pt"));
    418     grabber->addSelection("Portugal", "tv_grab_pt");
    419 
    420     addTarget("tv_grab_ee", new XMLTV_generic_config(parent, "tv_grab_ee"));
    421     grabber->addSelection("Estonia", "tv_grab_ee");
    422 
    423     addTarget("tv_grab_be_tvb", new XMLTV_generic_config(parent, "tv_grab_be_tvb"));
    424     grabber->addSelection("Belgium (Dutch)", "tv_grab_be_tvb");
    425 
    426     addTarget("tv_grab_be_tlm", new XMLTV_generic_config(parent, "tv_grab_be_tlm"));
    427     grabber->addSelection("Belgium (French)", "tv_grab_be_tlm");
    428 
    429     addTarget("tv_grab_is", new XMLTV_generic_config(parent, "tv_grab_is"));
    430     grabber->addSelection("Iceland", "tv_grab_is");
    431 
    432     addTarget("tv_grab_br", new XMLTV_generic_config(parent, "tv_grab_br"));
    433     grabber->addSelection("Brazil", "tv_grab_br");
    434 
    435     addTarget("tv_grab_cz", new XMLTV_generic_config(parent, "tv_grab_cz"));
    436     grabber->addSelection("Czech Republic", "tv_grab_cz");
    437 
    438403    addTarget("/bin/true", new NoGrabber_config(parent));
    439404    grabber->addSelection("No grabber", "/bin/true");
    440405}