[danbooru] add authentication support (closes #151)

... via HTTP Basic Auth with username and "password".

The password value in this case is not the account password itself,
but the"api_key" found in your user profile.
This commit is contained in:
Mike Fährmann
2019-01-09 14:08:06 +01:00
parent 06cbf5f9c4
commit 1e4d351ad3
3 changed files with 20 additions and 2 deletions

View File

@@ -148,12 +148,15 @@ Description The username and password to use when attempting to log in to
Specifying username and password is Specifying username and password is
required for the ``pixiv``, ``nijie`` and ``seiga`` modules and required for the ``pixiv``, ``nijie`` and ``seiga`` modules and
optional (but strongly recommended) for ``exhentai``, optional (but strongly recommended) for ``danbooru``, ``exhentai``,
``sankaku`` and ``idolcomplex``. ``sankaku`` and ``idolcomplex``.
These values can also be set via the ``-u/--username`` and These values can also be set via the ``-u/--username`` and
``-p/--password`` command-line options or by using a |.netrc|_ file. ``-p/--password`` command-line options or by using a |.netrc|_ file.
(see Authentication_) (see Authentication_)
Note: The password for ``danbooru`` is the API key found in your
user profile, not the password for your account.
=========== ===== =========== =====

View File

@@ -14,6 +14,11 @@
{ {
"external": false "external": false
}, },
"danbooru":
{
"username": null,
"password": null
},
"deviantart": "deviantart":
{ {
"refresh-token": null, "refresh-token": null,
@@ -72,6 +77,11 @@
"password": null, "password": null,
"ugoira": true "ugoira": true
}, },
"reactor":
{
"wait-min": 3.0,
"wait-max": 6.0
},
"recursive": "recursive":
{ {
"blacklist": ["directlink", "oauth", "recursive", "test"] "blacklist": ["directlink", "oauth", "recursive", "test"]

View File

@@ -1,6 +1,6 @@
# -*- coding: utf-8 -*- # -*- coding: utf-8 -*-
# Copyright 2014-2018 Mike Fährmann # Copyright 2014-2019 Mike Fährmann
# #
# This program is free software; you can redistribute it and/or modify # This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License version 2 as # it under the terms of the GNU General Public License version 2 as
@@ -29,6 +29,11 @@ class DanbooruExtractor(booru.DanbooruPageMixin, booru.BooruExtractor):
self.api_url = "{scheme}://{subdomain}.donmai.us/posts.json".format( self.api_url = "{scheme}://{subdomain}.donmai.us/posts.json".format(
scheme=self.scheme, subdomain=self.subdomain) scheme=self.scheme, subdomain=self.subdomain)
username, api_key = self._get_auth_info()
if username:
self.log.debug("Using HTTP Basic Auth for user '%s'", username)
self.session.auth = (username, api_key)
class DanbooruTagExtractor(booru.TagMixin, DanbooruExtractor): class DanbooruTagExtractor(booru.TagMixin, DanbooruExtractor):
"""Extractor for images from danbooru based on search-tags""" """Extractor for images from danbooru based on search-tags"""