Compare commits

...
Sign in to create a new pull request.

2 commits
3.5 ... 3.7

Author SHA1 Message Date
9fd535f8b7 3.7 2025-02-15 08:42:59 +01:00
d71fc587b0 3.6 2025-02-15 08:42:11 +01:00
4 changed files with 294 additions and 94 deletions

View file

@ -1,4 +1,4 @@
QT += core gui sql printsupport network
QT += core gui sql printsupport network xml
greaterThan(QT_MAJOR_VERSION, 4): QT += widgets

View file

@ -67,6 +67,7 @@ if(Debug) qDebug() << "oeffneDatenbank";
}
query = QSqlQuery(db);
query2 = QSqlQuery(db);
query.exec("CREATE TABLE IF NOT EXISTS einstellungen("
"pfad TEXT)");
@ -149,12 +150,128 @@ if(Debug) qDebug() << "~MainWindow";
if(Debug) qDebug() << "~MainWindow-Ende";
}
void MainWindow::on_actionDaten_aktualisieren_triggered(){
void MainWindow::on_actionVideopfad_einlesen_triggered(){
if(Debug) qDebug() << "on_actionDaten_aktualisieren_triggered";
leseVerzeichnis();
if(Debug) qDebug() << "on_actionDaten_aktualisieren_triggered-Ende";
}
void MainWindow::on_actionKodi_Daten_einlesen_triggered(){
if(Debug) qDebug() << "on_actionKodi_Daten_einlesen_triggered";
QSqlQuery query("SELECT pfad FROM video");
while (query.next()) {
QString pfad = query.value(0).toString();
QStringList list_pfad = pfad.split(u'.');
QString pfad_tmp;
for(int i=0; i<list_pfad.length()-1; ++i){
pfad_tmp.append(list_pfad.at(i)+".");
}
QString pfad_nfo = pfad_tmp+"nfo";
QString pfad_Bild = pfad_tmp+"-poster.jpg";
pfad_Bild.replace(".-poster.jpg","-poster.jpg");
QDomDocument doc("nfo");
QString Titel;
QString Genre;
QString Laenge;
QString Jahr;
QString Handlung;
QFile file(pfad_nfo);
if(file.open(QIODevice::ReadOnly)){
if(doc.setContent(&file)){
QDomElement docElement = doc.documentElement();
for(QDomNode n = docElement.firstChild(); !n.isNull(); n = n.nextSibling()){
if( !n.isNull() ) {
if ( n.isElement() && n.nodeName() == "title" ) {
Titel = n.toElement().text();
}
}
}
for(QDomNode n = docElement.firstChild(); !n.isNull(); n = n.nextSibling()){
if( !n.isNull() ) {
if ( n.isElement() && n.nodeName() == "genre" ) {
Genre = n.toElement().text();
}
}
}
for(QDomNode n = docElement.firstChild(); !n.isNull(); n = n.nextSibling()){
if( !n.isNull() ) {
if ( n.isElement() && n.nodeName() == "runtime" ) {
Laenge = n.toElement().text();
}
}
}
for(QDomNode n = docElement.firstChild(); !n.isNull(); n = n.nextSibling()){
if( !n.isNull() ) {
if ( n.isElement() && n.nodeName() == "year" ) {
Jahr = n.toElement().text();
}
}
}
for(QDomNode n = docElement.firstChild(); !n.isNull(); n = n.nextSibling()){
if( !n.isNull() ) {
if ( n.isElement() && n.nodeName() == "plot" ) {
Handlung = n.toElement().text();
}
}
}
}
file.close();
// id ermitteln
int id=0;
query2.exec(QString("SELECT * FROM video WHERE pfad LIKE '%1'").arg(pfad.replace(QString("'"), QString("''"))));
if(query2.lastError().isValid()){
ui->statusbar->showMessage("Fehler:" + query.lastError().databaseText());
}
while(query2.next()){
id=query2.value(0).toInt();
}
// id ermitteln ende
// Titel speichern
query2.exec(QString("UPDATE video SET Titel=('%1') WHERE id=('%2')").arg(Titel.replace(QString("'"), QString("''")), QString::number(id)));
if(query2.lastError().isValid()){
ui->statusbar->showMessage("Fehler:" + query2.lastError().databaseText());
}
// Genre speichern
query2.exec(QString("UPDATE video SET Genre=('%1') WHERE id=('%2')").arg(Genre.replace(QString("'"), QString("''")), QString::number(id)));
if(query2.lastError().isValid()){
ui->statusbar->showMessage("Fehler:" + query2.lastError().databaseText());
}
// Länge speichern
query2.exec(QString("UPDATE video SET Länge=('%1') WHERE id=('%2')").arg(Laenge.replace(QString("'"), QString("''")), QString::number(id)));
if(query2.lastError().isValid()){
ui->statusbar->showMessage("Fehler:" + query2.lastError().databaseText());
}
// Jahr speichern
query2.exec(QString("UPDATE video SET Jahr=('%1') WHERE id=('%2')").arg(Jahr.replace(QString("'"), QString("''")), QString::number(id)));
if(query2.lastError().isValid()){
ui->statusbar->showMessage("Fehler:" + query2.lastError().databaseText());
}
// Handlung speichern
query2.exec(QString("UPDATE video SET Handlung=('%1') WHERE id=('%2')").arg(Handlung.replace(QString("'"), QString("''")), QString::number(id)));
if(query2.lastError().isValid()){
ui->statusbar->showMessage("Fehler:" + query2.lastError().databaseText());
}
// Bild speichern
if(!(pfad_Bild=="")){
QFile file(pfad_Bild);
if(file.open(QIODevice::ReadOnly)){
QByteArray inByteArray = file.readAll();
query2.prepare(QString("UPDATE video SET Bild=(:imageData) WHERE id=('%1')").arg(QString::number(id)));
query2.bindValue(":imageData", inByteArray);
if(!query2.exec()){
ui->statusbar->showMessage("Fehler:" + query2.lastError().databaseText());
}
}
}
}
ui->statusbar->showMessage(pfad);
ui->statusbar->repaint();
}
ui->statusbar->showMessage("Daten gespeichert");
if(Debug) qDebug() << "on_actionKodi_Daten_einlesen_triggered";
}
void MainWindow::on_actionDaten_ausgeben_triggered(){
if(Debug) qDebug() << "on_actionDaten_ausgeben_triggered";
@ -164,14 +281,12 @@ if(Debug) qDebug() << "on_actionDaten_ausgeben_triggered";
if(Debug) qDebug() << "on_actionDaten_ausgeben_triggered-Ende";
}
void MainWindow::on_actionBeenden_triggered(){
if(Debug) qDebug() << "on_actionBeenden_triggered";
MainWindow::close();
if(Debug) qDebug() << "on_actionBeenden_triggered-Ende";
}
void MainWindow::on_actionPfad_zu_den_Videos_triggered(){
if(Debug) qDebug() << "on_actionPfad_zu_den_Videos_triggered";
datenPfad = QFileDialog::getExistingDirectory(this, tr("Öffne Verzeichnis"), datenPfad, QFileDialog::ShowDirsOnly | QFileDialog::DontResolveSymlinks);
@ -328,10 +443,7 @@ if(Debug) qDebug() << "on_pushButton_abspielen_clicked";
#ifdef __WIN32__
explorer->start("explorer", {ui->pushButton_pfad->text().replace(QString("/"), QString("\\"))});
#elif __linux__
if(QFileInfo::exists("/usr/bin/celluloid")) explorer->start("celluloid", {ui->pushButton_pfad->text()});
else if(QFileInfo::exists("/usr/bin/mpv")) explorer->start("mpv", {ui->pushButton_pfad->text()});
else if(QFileInfo::exists("/usr/bin/ffplay")) explorer->start("ffplay", {ui->pushButton_pfad->text()});
else if(QFileInfo::exists("/usr/bin/vlc")) explorer->start("vlc", {ui->pushButton_pfad->text()});
explorer->start("xdg-open", {ui->pushButton_pfad->text()});
#endif
}
ui->statusbar->showMessage("Video abspielen");
@ -617,25 +729,22 @@ if(Debug) qDebug() << "on_pushButton_PDF_speichern_clicked";
</head> \
<body> \
<table border='0'> \
<tr><td width=10%>&nbsp;</td><td width=55%>&nbsp;</td><td width=35% align='right' rowspan=19><img src='.Video-Datenbank/png/" + Dateiname + ".png'></td></tr> \
<tr><td width=7%>&nbsp;</td><td width=58%>&nbsp;</td><td width=35% align='right' rowspan=16><img src='.Video-Datenbank/png/" + Dateiname + ".png'></td></tr> \
<tr><td>&nbsp;</td><td>&nbsp;</td></tr> \
<tr><td>&nbsp;</td><td>&nbsp;</td></tr> \
<tr><td>&nbsp;</td><td>&nbsp;</td></tr> \
<tr><td>&nbsp;</td><td>&nbsp;</td></tr> \
<tr><td>&nbsp;</td><td>&nbsp;</td></tr> \
<tr><td>&nbsp;</td><td>&nbsp;</td></tr> \
<tr><td>&nbsp;</td><td>&nbsp;</td></tr> \
<tr><td>&nbsp;</td><td>&nbsp;</td></tr> \
<tr><td>&nbsp;</td><td>&nbsp;</td></tr> \
<tr><td align=right>Pfad :</td><td>" + ui->pushButton_pfad->text() + "</td></tr> \
<tr><td align=right>Titel :</td><td>" + ui->lineEdit_titel->text() + "</td></tr> \
<tr><td align=right>Format :</td><td>" + ui->comboBox_bildformat->currentText() + "</td></tr> \
<tr><td align=right>Typ :</td><td>" + ui->comboBox_filmtyp->currentText() + "</td></tr> \
<tr><td align=right>Teil :</td><td>" + ui->lineEdit_teil->text() + "</td></tr> \
<tr><td align=right>Genre :</td><td>" + ui->comboBox_genre->currentText() + "</td></tr> \
<tr><td align=right>Länge :</td><td>" + ui->lineEdit_laenge->text() + "</td></tr> \
<tr><td align=right>Jahr :</td><td>" + ui->lineEdit_jahr->text() + "</td></tr> \
<tr><td align=right>FSK :</td><td>" + ui->comboBox_fsk->currentText() + "</td></tr> \
<tr><td align=left>&nbsp;</td><td>&nbsp;</td></tr> \
<tr><td align=left>Titel</td><td> : " + ui->lineEdit_titel->text() + "</td></tr> \
<tr><td align=leftt>Format</td><td> : " + ui->comboBox_bildformat->currentText() + "</td></tr> \
<tr><td align=left>Typ</td><td> : " + ui->comboBox_filmtyp->currentText() + "</td></tr> \
<tr><td align=left>Teil</td><td> : " + ui->lineEdit_teil->text() + "</td></tr> \
<tr><td align=left>Genre</td><td> : " + ui->comboBox_genre->currentText() + "</td></tr> \
<tr><td align=left>Länge</td><td> : " + ui->lineEdit_laenge->text() + "</td></tr> \
<tr><td align=left>Jahr</td><td> : " + ui->lineEdit_jahr->text() + "</td></tr> \
<tr><td align=left>FSK</td><td> : " + ui->comboBox_fsk->currentText() + "</td></tr> \
</table> \
<br><br><code>" + ui->plainTextEdit_handlung->document()->toRawText() + " </code> \
</body> \
@ -652,6 +761,7 @@ if(Debug) qDebug() << "on_pushButton_PDF_speichern_clicked";
printer.setOutputFileName(".Video-Datenbank/pdf/" + Dateiname + ".pdf");
#endif
printer.setOutputFormat(QPrinter::PdfFormat);
doc.setPageSize(printer.pageLayout().paintRect().size());
doc.print(&printer);
printer.newPage();
@ -720,3 +830,54 @@ if(Debug) qDebug() << "on_pushButton_Wikipedia_clicked-Ende";
if(Debug) qDebug() << "on_pushButton_Wikipedia_clicked-Ende";
}
void MainWindow::on_pushButton_google_clicked(){
if(Debug) qDebug() << "on_pushButton_google_clicked";
if(ui->lineEdit_titel->text()==""){
QMessageBox msgBox;
msgBox.setText("Kein Titel zum Suchen!");
msgBox.exec();
return;
}
QProcess *explorer = new QProcess;
QString suchen = ui->lineEdit_titel->text().replace(" ", "+");
QString url = "https://www.google.de/search?q=" + suchen + "&tbm=isch";
#ifdef __WIN32__
QDesktopServices::openUrl(QUrl(url));
#elif __linux__
explorer->start("xdg-open", {url});
#endif
ui->statusbar->showMessage("Bilder suchen");
if(Debug) qDebug() << "on_pushButton_google_clicked-Ende";
}
void MainWindow::on_pushButton_imdb_clicked(){
if(Debug) qDebug() << "on_pushButton_imdb_clicked";
if(ui->lineEdit_titel->text()==""){
QMessageBox msgBox;
msgBox.setText("Kein Titel zum Suchen!");
msgBox.exec();
return;
}
QProcess *explorer = new QProcess;
QString suchen = ui->lineEdit_titel->text().replace(" ", "+");
QString url = "https://www.imdb.com/find?q=" + suchen;
#ifdef __WIN32__
QDesktopServices::openUrl(QUrl(url));
#elif __linux__
explorer->start("xdg-open", {url});
#endif
ui->statusbar->showMessage("IMDb suchen");
if(Debug) qDebug() << "on_pushButton_imdb_clicked-Ende";
}
void MainWindow::on_pushButton_ordner_clicked(){
if(Debug) qDebug() << "on_pushButton_on_pushButton_ordner_clicked";
QProcess *explorer = new QProcess;
#ifdef __WIN32__
explorer->start("explorer", {"."});
#elif __linux__
explorer->start("xdg-open", {".Video-Datenbank"});
#endif
ui->statusbar->showMessage("Ordner öffnen");
if(Debug) qDebug() << "on_pushButton_on_pushButton_ordner_clicked-Ende";
}

View file

@ -18,6 +18,10 @@
#include <QJsonDocument>
#include <QJsonObject>
#include <QJsonArray>
#include <QDesktopServices>
#include <QUrl>
#include <QtXml/QDomDocument>
#include <QtXml/QDomNode>
QT_BEGIN_NAMESPACE
namespace Ui { class MainWindow; }
@ -33,7 +37,8 @@ public:
private slots:
// Menü
void on_actionDaten_aktualisieren_triggered();
void on_actionVideopfad_einlesen_triggered();
void on_actionKodi_Daten_einlesen_triggered();
void on_actionDaten_ausgeben_triggered();
void on_actionBeenden_triggered();
void on_actionPfad_zu_den_Videos_triggered();
@ -45,17 +50,17 @@ private slots:
void on_pushButton_bild_clicked();
// Suchen
void on_lineEdit_suchen_textChanged();
void on_pushButton_Wikipedia_clicked();
void on_pushButton_google_clicked();
void on_pushButton_imdb_clicked();
// Löschen
void on_pushButton_daten_loeschen_clicked();
// Andere
void on_tableWidget_Datenbank_ausgabe_cellClicked(int row, int column);
//
void on_pushButton_pfad_clicked();
void on_pushButton_PDF_speichern_clicked();
void on_pushButton_Wikipedia_clicked();
void on_pushButton_ordner_clicked();
//
private:
void oeffneDatenbank();
@ -66,5 +71,6 @@ private:
Ui::MainWindow *ui;
QSqlDatabase db;
QSqlQuery query;
QSqlQuery query2;
};
#endif // MAINWINDOW_H

View file

@ -7,7 +7,7 @@
<x>0</x>
<y>0</y>
<width>956</width>
<height>616</height>
<height>646</height>
</rect>
</property>
<property name="windowTitle">
@ -192,41 +192,6 @@
<bool>false</bool>
</property>
<layout class="QGridLayout" name="gridLayout_3">
<item row="2" column="2" colspan="4">
<widget class="QPushButton" name="pushButton_abspielen">
<property name="text">
<string>Abspielen</string>
</property>
</widget>
</item>
<item row="4" column="0" colspan="2">
<widget class="QPushButton" name="pushButton_PDF_Status">
<property name="text">
<string>PDF</string>
</property>
</widget>
</item>
<item row="3" column="2" colspan="4">
<widget class="QPushButton" name="pushButton_daten_loeschen">
<property name="text">
<string>Daten löschen</string>
</property>
</widget>
</item>
<item row="2" column="0" colspan="2">
<widget class="QPushButton" name="pushButton_speichern">
<property name="text">
<string>Speichern</string>
</property>
</widget>
</item>
<item row="4" column="2" colspan="4">
<widget class="QPushButton" name="pushButton_PDF_speichern">
<property name="text">
<string>PDF speichern</string>
</property>
</widget>
</item>
<item row="1" column="0">
<widget class="QPushButton" name="pushButton_minus">
<property name="minimumSize">
@ -265,25 +230,6 @@
</property>
</widget>
</item>
<item row="1" column="1">
<widget class="QPushButton" name="pushButton_id">
<property name="minimumSize">
<size>
<width>42</width>
<height>23</height>
</size>
</property>
<property name="maximumSize">
<size>
<width>70</width>
<height>16777215</height>
</size>
</property>
<property name="text">
<string/>
</property>
</widget>
</item>
<item row="1" column="4">
<widget class="QPushButton" name="pushButton_plus">
<property name="minimumSize">
@ -303,6 +249,34 @@
</property>
</widget>
</item>
<item row="5" column="0" colspan="2">
<widget class="QPushButton" name="pushButton_Wikipedia">
<property name="text">
<string>Wikipedia</string>
</property>
</widget>
</item>
<item row="2" column="2" colspan="4">
<widget class="QPushButton" name="pushButton_abspielen">
<property name="text">
<string>Abspielen</string>
</property>
</widget>
</item>
<item row="3" column="0" colspan="2">
<widget class="QPushButton" name="pushButton_status">
<property name="text">
<string>Film</string>
</property>
</widget>
</item>
<item row="4" column="0" colspan="2">
<widget class="QPushButton" name="pushButton_PDF_Status">
<property name="text">
<string>PDF</string>
</property>
</widget>
</item>
<item row="1" column="2">
<widget class="QLabel" name="label_9">
<property name="text">
@ -317,17 +291,64 @@
</property>
</widget>
</item>
<item row="3" column="0" colspan="2">
<widget class="QPushButton" name="pushButton_status">
<item row="5" column="2" colspan="4">
<widget class="QPushButton" name="pushButton_google">
<property name="text">
<string>Film</string>
<string>Google Bilder</string>
</property>
</widget>
</item>
<item row="5" column="0" colspan="6">
<widget class="QPushButton" name="pushButton_Wikipedia">
<item row="4" column="2" colspan="4">
<widget class="QPushButton" name="pushButton_PDF_speichern">
<property name="text">
<string>Wikipedia</string>
<string>PDF speichern</string>
</property>
</widget>
</item>
<item row="3" column="2" colspan="4">
<widget class="QPushButton" name="pushButton_daten_loeschen">
<property name="text">
<string>Daten löschen</string>
</property>
</widget>
</item>
<item row="2" column="0" colspan="2">
<widget class="QPushButton" name="pushButton_speichern">
<property name="text">
<string>Speichern</string>
</property>
</widget>
</item>
<item row="1" column="1">
<widget class="QPushButton" name="pushButton_id">
<property name="minimumSize">
<size>
<width>42</width>
<height>23</height>
</size>
</property>
<property name="maximumSize">
<size>
<width>70</width>
<height>16777215</height>
</size>
</property>
<property name="text">
<string/>
</property>
</widget>
</item>
<item row="6" column="0" colspan="2">
<widget class="QPushButton" name="pushButton_imdb">
<property name="text">
<string>IMDb</string>
</property>
</widget>
</item>
<item row="6" column="2" colspan="4">
<widget class="QPushButton" name="pushButton_ordner">
<property name="text">
<string>Datenordner</string>
</property>
</widget>
</item>
@ -418,7 +439,14 @@
<property name="title">
<string>Datei</string>
</property>
<addaction name="actionDaten_aktualisieren"/>
<widget class="QMenu" name="menuDaten_aktualisieren">
<property name="title">
<string>Daten aktualisieren</string>
</property>
<addaction name="actionVideopfad_einlesen"/>
<addaction name="actionKodi_Daten_einlesen"/>
</widget>
<addaction name="menuDaten_aktualisieren"/>
<addaction name="actionDaten_ausgeben"/>
<addaction name="separator"/>
<addaction name="actionBeenden"/>
@ -433,11 +461,6 @@
<addaction name="menuEinstellungen"/>
</widget>
<widget class="QStatusBar" name="statusbar"/>
<action name="actionDaten_aktualisieren">
<property name="text">
<string>Daten aktualisieren</string>
</property>
</action>
<action name="actionDaten_ausgeben">
<property name="text">
<string>Daten ausgeben</string>
@ -453,6 +476,16 @@
<string>Beenden</string>
</property>
</action>
<action name="actionVideopfad_einlesen">
<property name="text">
<string>Videopfad einlesen</string>
</property>
</action>
<action name="actionKodi_Daten_einlesen">
<property name="text">
<string>Kodi Daten einlesen</string>
</property>
</action>
</widget>
<resources/>
<connections/>