mirror of
https://github.com/pinry/pinry.git
synced 2025-11-13 16:45:41 +01:00
Feature: Add UA and referer to fetch pictures from more sites
This commit is contained in:
@@ -103,7 +103,10 @@ class PinResource(ModelResource):
|
|||||||
def hydrate_image(self, bundle):
|
def hydrate_image(self, bundle):
|
||||||
url = bundle.data.get('url', None)
|
url = bundle.data.get('url', None)
|
||||||
if url:
|
if url:
|
||||||
image = Image.objects.create_for_url(url)
|
image = Image.objects.create_for_url(
|
||||||
|
url,
|
||||||
|
referer=bundle.data.get('referer', None),
|
||||||
|
)
|
||||||
bundle.data['image'] = '/api/v1/image/{}/'.format(image.pk)
|
bundle.data['image'] = '/api/v1/image/{}/'.format(image.pk)
|
||||||
return bundle
|
return bundle
|
||||||
|
|
||||||
|
|||||||
@@ -14,11 +14,20 @@ from users.models import User
|
|||||||
|
|
||||||
|
|
||||||
class ImageManager(models.Manager):
|
class ImageManager(models.Manager):
|
||||||
|
_default_ua = {
|
||||||
|
'User-Agent': 'Mozilla/5.0 (Windows NT 5.1) '
|
||||||
|
'AppleWebKit/537.36 (KHTML, like Gecko) '
|
||||||
|
'Chrome/48.0.2564.82 Safari/537.36',
|
||||||
|
}
|
||||||
|
|
||||||
# FIXME: Move this into an asynchronous task
|
# FIXME: Move this into an asynchronous task
|
||||||
def create_for_url(self, url):
|
def create_for_url(self, url, referer=None):
|
||||||
file_name = url.split("/")[-1].split('#')[0].split('?')[0]
|
file_name = url.split("/")[-1].split('#')[0].split('?')[0]
|
||||||
buf = BytesIO()
|
buf = BytesIO()
|
||||||
response = requests.get(url)
|
headers = dict(self._default_ua)
|
||||||
|
if referer is not None:
|
||||||
|
headers["Referer"] = referer
|
||||||
|
response = requests.get(url, headers=headers)
|
||||||
buf.write(response.content)
|
buf.write(response.content)
|
||||||
obj = InMemoryUploadedFile(buf, 'image', file_name,
|
obj = InMemoryUploadedFile(buf, 'image', file_name,
|
||||||
None, buf.tell(), None)
|
None, buf.tell(), None)
|
||||||
|
|||||||
Reference in New Issue
Block a user