Ticket #2544: mythtv-cleanup_program_listings_through_housekeeper.patch

File mythtv-cleanup_program_listings_through_housekeeper.patch, 7.2 KB (added by sphery <mtdean@…>, 15 years ago)
  • programs/mythbackend/housekeeper.h

     
    1919
    2020   
    2121  protected:
     22    typedef struct mfdstruct
     23    {
     24        HouseKeeper *keep;
     25        QString mfpath;
     26        QString mfarg;
     27        QString mflog;
     28    } MFDStruct;
     29
    2230    void RunHouseKeeping(void);
    2331    static void *doHouseKeepingThread(void *param);
    2432
    25     void RunMFD(void);
     33    void RunMFD(const MFDStruct *mfds);
    2634    static void *runMFDThread(void *param);
    2735
    2836  private:
     
    3139    void updateLastrun(const QString &dbTag);
    3240    QDateTime getLastRun(const QString &dbTag);
    3341    void flushLogs();
    34     void runFillDatabase();
     42    void runFillDatabase(MFDStruct *mfds);
    3543    void CleanupMyOldRecordings(void);
    3644    void CleanupAllOldInUsePrograms(void);
    3745    void CleanupRecordedTables(void);
     46    void CleanupProgramListings(void);
    3847    bool threadrunning;
    3948    bool filldbRunning;
    4049    bool isMaster;
  • programs/mythbackend/housekeeper.cpp

     
    215215                        QString msg = "Running mythfilldatabase";
    216216                        gContext->LogEntry("mythbackend", LP_DEBUG, msg, "");
    217217                        VERBOSE(VB_GENERAL, msg);
    218                         runFillDatabase();
     218
     219                        MFDStruct *mfds = new MFDStruct;
     220
     221                        mfds->mfpath = gContext->GetSetting(
     222                                             "MythFillDatabasePath",
     223                                             "mythfilldatabase");
     224                        mfds->mfarg  = gContext->GetSetting(
     225                                             "MythFillDatabaseArgs", "");
     226                        mfds->mflog  = gContext->GetSetting(
     227                                             "MythFillDatabaseLog",
     228                                             "/var/log/mythfilldatabase.log");
     229
     230                        runFillDatabase(mfds);
    219231                        updateLastrun("MythFillDB");
    220232                    }
    221233                }
     
    225237                JobQueue::CleanupOldJobsInQueue();
    226238                CleanupAllOldInUsePrograms();
    227239                CleanupRecordedTables();
     240                CleanupProgramListings();
    228241                updateLastrun("DailyCleanup");
    229242            }
    230243        }
     
    266279
    267280void *HouseKeeper::runMFDThread(void *param)
    268281{
    269     HouseKeeper *keep = (HouseKeeper *)param;
    270     keep->RunMFD();
     282    MFDStruct *mfds = (MFDStruct *)param;
     283
     284    HouseKeeper *keep = mfds->keep;
     285    keep->RunMFD(mfds);
     286
     287    delete mfds;
     288
    271289    return NULL;
    272290}
    273291
    274 void HouseKeeper::RunMFD(void)
     292void HouseKeeper::RunMFD(const MFDStruct *mfds)
    275293{
    276294    QString command;
    277295
    278     QString mfpath = gContext->GetSetting("MythFillDatabasePath",
    279                                           "mythfilldatabase");
    280     QString mfarg = gContext->GetSetting("MythFillDatabaseArgs", "");
    281     QString mflog = gContext->GetSetting("MythFillDatabaseLog",
    282                                          "/var/log/mythfilldatabase.log");
     296    QString mfpath = mfds->mfpath;
     297    if (mfpath == "mythfilldatabase")
     298        mfpath = gContext->GetInstallPrefix() + "/bin/mythfilldatabase";
    283299
     300    QString mfarg = mfds->mfarg;
     301    QString mflog = mfds->mflog;
     302
    284303    if (mflog == "")
    285304        command = QString("%1 %2").arg(mfpath).arg(mfarg);
    286305    else
     
    292311    HouseKeeper_filldb_running = false;
    293312}
    294313
    295 void HouseKeeper::runFillDatabase()
     314void HouseKeeper::runFillDatabase(MFDStruct *mfds)
    296315{
    297316    if (HouseKeeper_filldb_running)
    298317        return;
     
    300319    HouseKeeper_filldb_running = true;
    301320
    302321    pthread_t housekeep_thread;
    303     pthread_create(&housekeep_thread, NULL, runMFDThread, this);
     322    pthread_create(&housekeep_thread, NULL, runMFDThread, mfds);
    304323    pthread_detach(housekeep_thread);
    305324}
    306325
     
    368387    }
    369388}
    370389
     390void HouseKeeper::CleanupProgramListings(void)
     391{
     392    if (!gContext->GetNumSetting("MythFillEnabled", 0))
     393    {
     394        MFDStruct *mfds = new MFDStruct;
     395
     396        mfds->mfpath = "mythfilldatabase";
     397        mfds->mfarg  = "--do-cleanup-only --no-delete";
     398        mfds->mflog  = gContext->GetSetting("MythFillDatabaseLog",
     399                                            "/var/log/mythfilldatabase.log");
     400
     401        runFillDatabase(mfds);
     402    }
     403}
     404
    371405void *HouseKeeper::doHouseKeepingThread(void *param)
    372406{
    373407    HouseKeeper *hkeeper = (HouseKeeper*)param;
  • programs/mythfilldatabase/filldata.cpp

     
    6262bool dd_grab_all = false;
    6363bool dddataretrieved = false;
    6464bool mark_repeats = true;
     65bool do_cleanup_only = false;
    6566bool channel_updates = false;
    6667bool channel_update_run = false;
    6768bool remove_new_channels = false;
     
    35913592        {
    35923593             mark_repeats = false;
    35933594        }
     3595        else if (!strcmp(a.argv()[argpos], "--do-cleanup-only"))
     3596        {
     3597            do_cleanup_only = true;
     3598            grab_data = false;
     3599            mark_repeats = false;
     3600        }
    35943601        else if (!strcmp(a.argv()[argpos], "--export-icon-map"))
    35953602        {
    35963603            export_iconmap = true;
     
    37463753            cout << "--reset-icon-map [all]\n";
    37473754            cout << "   Resets your icon map (pass all to reset channel icons as well)\n";
    37483755            cout << "\n";
     3756#if 0
     3757            cout << "--do-cleanup-only\n";
     3758            cout << "   Cleans old program listings from the database.\n";
     3759            cout << "\n";
     3760#endif
    37493761            cout << "--mark-repeats\n";
    37503762            cout << "   Marks any programs with a OriginalAirDate earlier\n";
    37513763            cout << "   than their start date as a repeat\n";
     
    39873999                QString("    Found %1").arg(query.numRowsAffected()));
    39884000    }
    39894001
     4002    if (do_cleanup_only)
     4003    {
     4004        clearOldDBEntries();
     4005    }
     4006
    39904007    if (mark_repeats)
    39914008    {
    39924009        VERBOSE(VB_GENERAL, "Marking repeats.");
  • programs/mythfrontend/globalsettings.cpp

     
    29192919static GlobalLineEdit *MythFillDatabasePath()
    29202920{
    29212921    GlobalLineEdit *be = new GlobalLineEdit("MythFillDatabasePath");
    2922     be->setLabel(QObject::tr("mythfilldatabase Path"));
    2923     be->setValue(gContext->GetInstallPrefix() + "/bin/mythfilldatabase");
    2924     be->setHelpText(QObject::tr("Path (including executable) of the "
    2925                     "mythfilldatabase program."));
     2922    be->setLabel(QObject::tr("mythfilldatabase Program"));
     2923    be->setValue("mythfilldatabase");
     2924    be->setHelpText(QObject::tr("Use 'mythfilldatabase' or the name of a "
     2925                    "custom script that will populate the program guide info "
     2926                    "for you."));
    29262927    return be;
    29272928}
    29282929