From e01deb8acaf49b76b52d271ae8f1224d20296ce8 Mon Sep 17 00:00:00 2001 From: trialuser02 Date: Thu, 12 Mar 2015 06:30:51 +0000 Subject: added feature to change user agent (Closes issue 747) git-svn-id: http://svn.code.sf.net/p/qmmp-dev/code/trunk/qmmp@4796 90c681e8-e032-0410-971d-27865f9a5e38 --- src/plugins/Transports/http/httpstreamreader.cpp | 9 ++-- src/plugins/Transports/http/httpstreamreader.h | 3 +- src/plugins/Transports/http/settingsdialog.cpp | 32 +++++++----- src/plugins/Transports/http/settingsdialog.h | 6 +-- src/plugins/Transports/http/settingsdialog.ui | 66 ++++++++++++++++++------ 5 files changed, 78 insertions(+), 38 deletions(-) (limited to 'src/plugins/Transports') diff --git a/src/plugins/Transports/http/httpstreamreader.cpp b/src/plugins/Transports/http/httpstreamreader.cpp index 3141dce77..7d5167244 100644 --- a/src/plugins/Transports/http/httpstreamreader.cpp +++ b/src/plugins/Transports/http/httpstreamreader.cpp @@ -1,5 +1,5 @@ /*************************************************************************** - * Copyright (C) 2006-2013 by Ilya Kotov * + * Copyright (C) 2006-2015 by Ilya Kotov * * forkotov02@hotmail.ru * * * * This program is free software; you can redistribute it and/or modify * @@ -123,6 +123,10 @@ HttpStreamReader::HttpStreamReader(const QString &url, HTTPInputSource *parent) settings.beginGroup("HTTP"); m_codec = QTextCodec::codecForName(settings.value("icy_encoding","UTF-8").toByteArray ()); m_buffer_size = settings.value("buffer_size",384).toInt() * 1000; + if(settings.value("override_user_agent",false).toBool()) + m_userAgent = settings.value("user_agent").toString(); + if(m_userAgent.isEmpty()) + m_userAgent = QString("qmmp/%1").arg(Qmmp::strVersion());; if (!m_codec) m_codec = QTextCodec::codecForName ("UTF-8"); #ifdef WITH_ENCA @@ -322,8 +326,7 @@ void HttpStreamReader::run() curl_easy_setopt(m_handle, CURLOPT_FAILONERROR, 1); curl_easy_setopt(m_handle, CURLOPT_MAXREDIRS, 15); // user agent - QString user_agent = QString("qmmp/%1").arg(Qmmp::strVersion()); - curl_easy_setopt(m_handle, CURLOPT_USERAGENT, qPrintable(user_agent)); + curl_easy_setopt(m_handle, CURLOPT_USERAGENT, qPrintable(m_userAgent)); curl_easy_setopt(m_handle, CURLOPT_HTTP_VERSION, CURL_HTTP_VERSION_1_0); // error message curl_easy_setopt(m_handle, CURLOPT_ERRORBUFFER, errorBuffer); diff --git a/src/plugins/Transports/http/httpstreamreader.h b/src/plugins/Transports/http/httpstreamreader.h index 1159dfe1f..61ea1be14 100644 --- a/src/plugins/Transports/http/httpstreamreader.h +++ b/src/plugins/Transports/http/httpstreamreader.h @@ -1,5 +1,5 @@ /*************************************************************************** - * Copyright (C) 2006-2012 by Ilya Kotov * + * Copyright (C) 2006-2015 by Ilya Kotov * * forkotov02@hotmail.ru * * * * This program is free software; you can redistribute it and/or modify * @@ -99,6 +99,7 @@ private: QMutex m_mutex; HttpStreamData m_stream; QString m_url; + QString m_userAgent; int m_metacount; QString m_title; bool m_ready; diff --git a/src/plugins/Transports/http/settingsdialog.cpp b/src/plugins/Transports/http/settingsdialog.cpp index d1bc99cad..988d3a42d 100644 --- a/src/plugins/Transports/http/settingsdialog.cpp +++ b/src/plugins/Transports/http/settingsdialog.cpp @@ -1,5 +1,5 @@ /*************************************************************************** - * Copyright (C) 2010-2012 by Ilya Kotov * + * Copyright (C) 2010-2015 by Ilya Kotov * * forkotov02@hotmail.ru * * * * This program is free software; you can redistribute it and/or modify * @@ -27,26 +27,28 @@ SettingsDialog::SettingsDialog(QWidget *parent) : QDialog(parent) { - ui.setupUi(this); + m_ui.setupUi(this); setAttribute(Qt::WA_DeleteOnClose); findCodecs(); foreach (QTextCodec *codec, codecs) - ui.icyEncodingComboBox->addItem(codec->name()); + m_ui.icyEncodingComboBox->addItem(codec->name()); #ifdef WITH_ENCA size_t n = 0; const char **langs = enca_get_languages(&n); for (size_t i = 0; i < n; ++i) - ui.encaAnalyserComboBox->addItem(langs[i]); + m_ui.encaAnalyserComboBox->addItem(langs[i]); #endif QSettings settings(Qmmp::configFile(), QSettings::IniFormat); settings.beginGroup("HTTP"); - int pos = ui.icyEncodingComboBox->findText(settings.value("icy_encoding","UTF-8").toString()); - ui.icyEncodingComboBox->setCurrentIndex(pos); - ui.bufferSizeSpinBox->setValue(settings.value("buffer_size",384).toInt()); + int pos = m_ui.icyEncodingComboBox->findText(settings.value("icy_encoding","UTF-8").toString()); + m_ui.icyEncodingComboBox->setCurrentIndex(pos); + m_ui.bufferSizeSpinBox->setValue(settings.value("buffer_size",384).toInt()); + m_ui.userAgentCheckBox->setChecked(settings.value("override_user_agent",false).toBool()); + m_ui.userAgentLineEdit->setText(settings.value("user_agent").toString()); #ifdef WITH_ENCA - ui.autoCharsetCheckBox->setChecked(settings.value("use_enca", false).toBool()); - pos = ui.encaAnalyserComboBox->findText(settings.value("enca_lang", langs[n-1]).toString()); - ui.encaAnalyserComboBox->setCurrentIndex(pos); + m_ui.autoCharsetCheckBox->setChecked(settings.value("use_enca", false).toBool()); + pos = m_ui.encaAnalyserComboBox->findText(settings.value("enca_lang", langs[n-1]).toString()); + m_ui.encaAnalyserComboBox->setCurrentIndex(pos); #else ui.autoCharsetCheckBox->setEnabled(false); #endif @@ -61,11 +63,13 @@ void SettingsDialog::accept() { QSettings settings(Qmmp::configFile(), QSettings::IniFormat); settings.beginGroup("HTTP"); - settings.setValue("icy_encoding", ui.icyEncodingComboBox->currentText()); - settings.setValue("buffer_size", ui.bufferSizeSpinBox->value()); + settings.setValue("icy_encoding", m_ui.icyEncodingComboBox->currentText()); + settings.setValue("buffer_size", m_ui.bufferSizeSpinBox->value()); + settings.setValue("override_user_agent",m_ui.userAgentCheckBox->isChecked()); + settings.setValue("user_agent",m_ui.userAgentLineEdit->text()); #ifdef WITH_ENCA - settings.setValue("use_enca", ui.autoCharsetCheckBox->isChecked()); - settings.setValue("enca_lang", ui.encaAnalyserComboBox->currentText()); + settings.setValue("use_enca", m_ui.autoCharsetCheckBox->isChecked()); + settings.setValue("enca_lang", m_ui.encaAnalyserComboBox->currentText()); #endif settings.endGroup(); QDialog::accept(); diff --git a/src/plugins/Transports/http/settingsdialog.h b/src/plugins/Transports/http/settingsdialog.h index 5bb6d2d4a..98f49a3bb 100644 --- a/src/plugins/Transports/http/settingsdialog.h +++ b/src/plugins/Transports/http/settingsdialog.h @@ -1,5 +1,5 @@ /*************************************************************************** - * Copyright (C) 2010 by Ilya Kotov * + * Copyright (C) 2010-2015 by Ilya Kotov * * forkotov02@hotmail.ru * * * * This program is free software; you can redistribute it and/or modify * @@ -24,7 +24,7 @@ #include "ui_settingsdialog.h" /** - @author Ilya Kotov + @author Ilya Kotov */ class SettingsDialog : public QDialog { @@ -39,7 +39,7 @@ private slots: private: void findCodecs(); - Ui::SettingsDialog ui; + Ui::SettingsDialog m_ui; QList codecs; }; diff --git a/src/plugins/Transports/http/settingsdialog.ui b/src/plugins/Transports/http/settingsdialog.ui index c90c89ef4..003cd6607 100644 --- a/src/plugins/Transports/http/settingsdialog.ui +++ b/src/plugins/Transports/http/settingsdialog.ui @@ -6,8 +6,8 @@ 0 0 - 218 - 179 + 310 + 266 @@ -65,14 +65,14 @@ - + QDialogButtonBox::Cancel|QDialogButtonBox::Ok - + Metadata encoding @@ -131,12 +131,28 @@ + + + + User Agent: + + + + + + + false + + + + + + + Change User Agent + + + - label_17_2_2 - bufferSizeSpinBox - label - buttonBox - groupBox @@ -147,8 +163,8 @@ reject() - 222 - 172 + 303 + 259 70 @@ -163,8 +179,8 @@ accept() - 222 - 172 + 303 + 259 61 @@ -179,12 +195,28 @@ setEnabled(bool) - 59 - 67 + 82 + 149 - 143 - 90 + 288 + 182 + + + + + userAgentCheckBox + toggled(bool) + userAgentLineEdit + setEnabled(bool) + + + 131 + 52 + + + 136 + 76 -- cgit v1.2.3-13-gbd6f