Answer
t.me/python_tesstОтвет:
https://demonpress.ecwid.com/Плакат-Чёрным-по-белому-p257233941
https://demonpress.ecwid.com/Плакат-Кто-не-рисует-тот-не-рискует-p220916614
https://demonpress.ecwid.com/Плакат-Няня-я-у-них-поел-p258836846
https://demonpress.ecwid.com/Плакат-Будь-p269091497
https://demonpress.ecwid.com/Плакат-Все-свободны-p386635141
https://demonpress.ecwid.com/Плакат-Пора-что-то-менять-p216140463
https://demonpress.ecwid.com/Плакат-Просто-забей-p225221401
https://demonpress.ecwid.com/Плакат-Птичка-высокого-полета-p106928766
Объяснение:
В этом опусе попробуем рассказать, как создать 45 стикеров для Telegram из постеров, взятых в интернет-магазине. Там продаются различные постеры с забавными надписями, а вот подобных стикеров не существует. Научимся создавать их самостоятельно!
Единственная проблема заключается в том, что генерация нескольких десятков изображений (в данном случае — 45) занимает слишком много времени. Ведь только для создания одного стикера потребуется совершить несколько операций:
- загрузить картинку с веб-страницы;
- отделить буквы от фона в фотошопе;
- сохранить изображение в разрешении, предусмотренном для стикеров в Telegram.
Чтобы сократить время создания стикеров, попробуем автоматизировать процесс.
Анализируйте изображения с веб-сайта, настраивайте цвета и изменяйте размер в соответствии с требованиями Telegram
Кроме всего прочего в папке с сохраненной версией кода появится 45 картинок на момент написания этого поста.
Код:
import requests
from bs4 import BeautifulSoup
import urllib.request
url = 'https://demonpress.ecwid.com/%D0%9F%D0%BB%D0%B0%D0%BA%D0%B0%D1%82%D1%8B-c26701164'
headers = {'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/39.0.2171.95 Safari/537.36'}
text = requests.get(url, headers=headers)
soup = BeautifulSoup(text.content, 'html.parser')
urls = []
# get links to high res pics from the first page
for i in soup.find_all('a', attrs = {"class": "grid-product__image"}):
urls += [i['href']]
# parse links from other pages
for i in ['15','30','45']:
url_next = url + '?offset=' + i
text = requests.get(url_next, headers=headers)
soup = BeautifulSoup(text.content, 'html.parser')
for i in soup.find_all('a', attrs = {"class": "grid-product__image"}):
urls += [i['href']]
# download pics to the cwd
for url in urls:
text = requests.get(url, headers=headers)
soup = BeautifulSoup(text.content, 'html.parser')
if len(soup.find_all('img', {'class':'details-gallery__picture details-gallery__photoswipe-index-0'})) == 0:
print(url)
for j in soup.find_all('img', {'class':'details-gallery__picture details-gallery__photoswipe-index-0'}):
urllib.request.urlretrieve(j['src'], j['title'].replace('/','').replace('*','').replace('?','')+'.jpg')