allow users to set their own API access_tokens/client_ids
This commit is contained in:
@@ -9,7 +9,7 @@ Contents
|
|||||||
3) `Downloader Options`_
|
3) `Downloader Options`_
|
||||||
4) `Extractor Options`_
|
4) `Extractor Options`_
|
||||||
5) `Extractor-specific Options`_
|
5) `Extractor-specific Options`_
|
||||||
|
6) `API Tokens & IDs`_
|
||||||
|
|
||||||
General Options
|
General Options
|
||||||
===============
|
===============
|
||||||
@@ -551,6 +551,49 @@ Description The ``refresh_token`` value you get from linking your Reddit account
|
|||||||
=========== =====
|
=========== =====
|
||||||
|
|
||||||
|
|
||||||
|
API Tokens & IDs
|
||||||
|
================
|
||||||
|
|
||||||
|
extractor.deviantart.client-id & .client-secret
|
||||||
|
-----------------------------------------------
|
||||||
|
=========== =====
|
||||||
|
Type ``string``
|
||||||
|
Description
|
||||||
|
=========== =====
|
||||||
|
|
||||||
|
|
||||||
|
extractor.flickr.api-key & .api-secret
|
||||||
|
--------------------------------------
|
||||||
|
=========== =====
|
||||||
|
Type ``string``
|
||||||
|
Description
|
||||||
|
=========== =====
|
||||||
|
|
||||||
|
|
||||||
|
extractor.pawoo.access-token
|
||||||
|
----------------------------
|
||||||
|
=========== =====
|
||||||
|
Type ``string``
|
||||||
|
Description
|
||||||
|
=========== =====
|
||||||
|
|
||||||
|
|
||||||
|
extractor.pinterest.access-token
|
||||||
|
--------------------------------
|
||||||
|
=========== =====
|
||||||
|
Type ``string``
|
||||||
|
Description
|
||||||
|
=========== =====
|
||||||
|
|
||||||
|
|
||||||
|
extractor.reddit.client-id
|
||||||
|
--------------------------
|
||||||
|
=========== =====
|
||||||
|
Type ``string``
|
||||||
|
Description
|
||||||
|
=========== =====
|
||||||
|
|
||||||
|
|
||||||
.. |.netrc| replace:: ``.netrc``
|
.. |.netrc| replace:: ``.netrc``
|
||||||
.. |tempfile.gettempdir()| replace:: ``tempfile.gettempdir()``
|
.. |tempfile.gettempdir()| replace:: ``tempfile.gettempdir()``
|
||||||
.. |requests.request()| replace:: ``requests.request()``
|
.. |requests.request()| replace:: ``requests.request()``
|
||||||
|
|||||||
@@ -334,8 +334,8 @@ class DeviantartAPI():
|
|||||||
client_secret="76b08c69cfb27f26d6161f9ab6d061a1"):
|
client_secret="76b08c69cfb27f26d6161f9ab6d061a1"):
|
||||||
self.session = extractor.session
|
self.session = extractor.session
|
||||||
self.log = extractor.log
|
self.log = extractor.log
|
||||||
self.client_id = client_id
|
self.client_id = extractor.config("client-id", client_id)
|
||||||
self.client_secret = client_secret
|
self.client_secret = extractor.config("client-secret", client_secret)
|
||||||
self.delay = 0
|
self.delay = 0
|
||||||
self.mature = extractor.config("mature", "true")
|
self.mature = extractor.config("mature", "true")
|
||||||
if not isinstance(self.mature, str):
|
if not isinstance(self.mature, str):
|
||||||
|
|||||||
@@ -256,13 +256,15 @@ class FlickrAPI():
|
|||||||
]
|
]
|
||||||
|
|
||||||
def __init__(self, extractor):
|
def __init__(self, extractor):
|
||||||
|
self.api_key = extractor.config("api-key", self.API_KEY)
|
||||||
|
self.api_secret = extractor.config("api-secret", self.API_SECRET)
|
||||||
token = extractor.config("access-token")
|
token = extractor.config("access-token")
|
||||||
token_secret = extractor.config("access-token-secret")
|
token_secret = extractor.config("access-token-secret")
|
||||||
if token and token_secret:
|
if token and token_secret:
|
||||||
self.session = util.OAuthSession(
|
self.session = util.OAuthSession(
|
||||||
extractor.session,
|
extractor.session,
|
||||||
self.API_KEY, self.API_SECRET, token, token_secret)
|
self.api_key, self.api_secret, token, token_secret)
|
||||||
self.API_KEY = None
|
self.api_key = None
|
||||||
else:
|
else:
|
||||||
self.session = extractor.session
|
self.session = extractor.session
|
||||||
|
|
||||||
@@ -365,8 +367,8 @@ class FlickrAPI():
|
|||||||
params["method"] = "flickr." + method
|
params["method"] = "flickr." + method
|
||||||
params["format"] = "json"
|
params["format"] = "json"
|
||||||
params["nojsoncallback"] = "1"
|
params["nojsoncallback"] = "1"
|
||||||
if self.API_KEY:
|
if self.api_key:
|
||||||
params["api_key"] = self.API_KEY
|
params["api_key"] = self.api_key
|
||||||
data = self.session.get(self.API_URL, params=params).json()
|
data = self.session.get(self.API_URL, params=params).json()
|
||||||
if "code" in data and data["code"] == 1:
|
if "code" in data and data["code"] == 1:
|
||||||
raise exception.NotFoundError(self.subcategory)
|
raise exception.NotFoundError(self.subcategory)
|
||||||
|
|||||||
@@ -20,7 +20,7 @@ class PawooExtractor(Extractor):
|
|||||||
|
|
||||||
def __init__(self):
|
def __init__(self):
|
||||||
Extractor.__init__(self)
|
Extractor.__init__(self)
|
||||||
self.api = MastodonAPI(self.session, self.log)
|
self.api = MastodonAPI(self)
|
||||||
|
|
||||||
def items(self):
|
def items(self):
|
||||||
yield Message.Version, 1
|
yield Message.Version, 1
|
||||||
@@ -108,12 +108,12 @@ class MastodonAPI():
|
|||||||
https://github.com/tootsuite/documentation/blob/master/Using-the-API/API.md
|
https://github.com/tootsuite/documentation/blob/master/Using-the-API/API.md
|
||||||
"""
|
"""
|
||||||
|
|
||||||
def __init__(self, session, log, root="https://pawoo.net",
|
def __init__(self, extractor, root="https://pawoo.net",
|
||||||
access_token=("0f04191976cf22a5319c1e91a73cbcb2"
|
access_token=("0f04191976cf22a5319c1e91a73cbcb2"
|
||||||
"510b589e2757efcca922f9b3173d119b")):
|
"510b589e2757efcca922f9b3173d119b")):
|
||||||
self.session = session
|
access_token = extractor.config("access-token", access_token)
|
||||||
|
self.session = extractor.session
|
||||||
self.session.headers["Authorization"] = "Bearer " + access_token
|
self.session.headers["Authorization"] = "Bearer " + access_token
|
||||||
self.log = log
|
|
||||||
self.root = root
|
self.root = root
|
||||||
|
|
||||||
def search(self, searchterm):
|
def search(self, searchterm):
|
||||||
|
|||||||
@@ -19,7 +19,7 @@ class PinterestExtractor(Extractor):
|
|||||||
|
|
||||||
def __init__(self):
|
def __init__(self):
|
||||||
Extractor.__init__(self)
|
Extractor.__init__(self)
|
||||||
self.api = PinterestAPI(self.session)
|
self.api = PinterestAPI(self)
|
||||||
|
|
||||||
def data_from_pin(self, pin):
|
def data_from_pin(self, pin):
|
||||||
"""Get image url and metadata from a pin-object"""
|
"""Get image url and metadata from a pin-object"""
|
||||||
@@ -135,9 +135,10 @@ class PinterestPinitExtractor(PinterestExtractor):
|
|||||||
class PinterestAPI():
|
class PinterestAPI():
|
||||||
"""Minimal interface for the pinterest API"""
|
"""Minimal interface for the pinterest API"""
|
||||||
|
|
||||||
def __init__(self, session, access_token="AV2U9Oe6dyC2vfPugUnBvJ7Duxg9"
|
def __init__(self, extractor, access_token="AV2U9Oe6dyC2vfPugUnBvJ7Duxg9"
|
||||||
"FHCJPXPZIvRDXv9hvwBALwAAAAA"):
|
"FHCJPXPZIvRDXv9hvwBALwAAAAA"):
|
||||||
self.session = session
|
access_token = extractor.config("access-token", access_token)
|
||||||
|
self.session = extractor.session
|
||||||
self.session.params["access_token"] = access_token
|
self.session.params["access_token"] = access_token
|
||||||
|
|
||||||
def pin(self, pin_id, fields="id,image,note"):
|
def pin(self, pin_id, fields="id,image,note"):
|
||||||
|
|||||||
@@ -110,6 +110,7 @@ class RedditAPI():
|
|||||||
self.extractor = extractor
|
self.extractor = extractor
|
||||||
self.comments = extractor.config("comments", 500)
|
self.comments = extractor.config("comments", 500)
|
||||||
self.morecomments = extractor.config("morecomments", False)
|
self.morecomments = extractor.config("morecomments", False)
|
||||||
|
self.client_id = extractor.config("client-id", self.CLIENT_ID)
|
||||||
self.refresh_token = extractor.config("refresh-token")
|
self.refresh_token = extractor.config("refresh-token")
|
||||||
self.log = extractor.log
|
self.log = extractor.log
|
||||||
self.session = extractor.session
|
self.session = extractor.session
|
||||||
@@ -165,7 +166,7 @@ class RedditAPI():
|
|||||||
data = {"grant_type": ("https://oauth.reddit.com/"
|
data = {"grant_type": ("https://oauth.reddit.com/"
|
||||||
"grants/installed_client"),
|
"grants/installed_client"),
|
||||||
"device_id": "DO_NOT_TRACK_THIS_DEVICE"}
|
"device_id": "DO_NOT_TRACK_THIS_DEVICE"}
|
||||||
response = self.session.post(url, data=data, auth=(self.CLIENT_ID, ""))
|
response = self.session.post(url, data=data, auth=(self.client_id, ""))
|
||||||
if response.status_code != 200:
|
if response.status_code != 200:
|
||||||
raise exception.AuthenticationError()
|
raise exception.AuthenticationError()
|
||||||
return "Bearer " + response.json()["access_token"]
|
return "Bearer " + response.json()["access_token"]
|
||||||
|
|||||||
Reference in New Issue
Block a user