Last active
March 11, 2018 13:43
-
-
Save grahamanderson/49c8e5a196c4256230fdb4fb5124710d to your computer and use it in GitHub Desktop.
QR Code from Provided Sku
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| { | |
| "cells": [ | |
| { | |
| "metadata": {}, | |
| "cell_type": "markdown", | |
| "source": "## Domain Catalog QR Code Generator\n- takes a long url with GA utm parameters\n- shortens the url\n- puts deal text (20% off) in the middle of the QR\n- Changes the Color to match the category\n\n#### Next up \n- Feed it a sku, a color, and some deal text, get back the QR code\n- Figure out how to change color of the logo" | |
| }, | |
| { | |
| "metadata": { | |
| "trusted": true | |
| }, | |
| "cell_type": "code", | |
| "source": "import pyqrcode\nfrom pyqrcode import QRCode\nfrom PIL import Image, ImageFont, ImageDraw\nfrom PIL import ImageFont\nimport cairosvg\nimport textwrap\n\nfrom pyshorteners import Shortener\nfrom urllib.parse import urlparse, parse_qsl, urlsplit\nfrom matplotlib.pyplot import imshow\nimport matplotlib.pyplot as mplot\nimport numpy as np\n\nimport pandas as pd\nimport numpy as np\nimport pickle\nimport random\n\n# KEYS for SERVICES\njson_data = json.load(open('./data/api_key.json'))\nGEONAMES_API_KEY = json_data['geonames-api']\nGOOGLE_API_KEY = json_data['google-api']\nCRAWLERA_API_KEY = json_data['crawlera-api']\nPUSHBULLET_API_KEY = json_data['pushbullet-api']\n\nshortener = Shortener('Google', api_key=GOOGLE_API_KEY)\n\nDEAL_FONT = './fonts/Proxima Nova/ProximaNova-Bold.otf'\nOFF_FONT = './fonts/Proxima Nova/ProximaNova-Regular.otf'\n\n# Catalog Colors\nd = {\n 'orange': (242, 126, 9),\n 'blue': (34, 72, 115),\n 'white': (255, 255, 255),\n 'brown': (82, 48, 19),\n 'green': (65, 117, 5),\n 'red': (162, 1, 21),\n 'dark_grey': (74, 74, 74)\n}\n\nPRDCAT = {\n 'top_sellers': 0,\n 'sinks': 1,\n 'adhesives': 2,\n 'surfacing': 3,\n 'tools': 4,\n 'general': 5\n}\n\nQR_IDS = random.sample(range(100000), 100000)\nCATALOG_IDS = random.sample(range(100000), 100000)", | |
| "execution_count": 1, | |
| "outputs": [] | |
| }, | |
| { | |
| "metadata": { | |
| "trusted": true | |
| }, | |
| "cell_type": "code", | |
| "source": "%matplotlib inline\n%config InlineBackend.figure_format = 'retina'", | |
| "execution_count": 2, | |
| "outputs": [] | |
| }, | |
| { | |
| "metadata": {}, | |
| "cell_type": "markdown", | |
| "source": "### Functions" | |
| }, | |
| { | |
| "metadata": { | |
| "code_folding": [ | |
| 4, | |
| 12, | |
| 23, | |
| 31 | |
| ], | |
| "trusted": true | |
| }, | |
| "cell_type": "code", | |
| "source": "def long_url_from_sku(sku, qr_id=random.choice(QR_IDS)):\n url = 'https://inlive.domainindustries.com/?search={0}&qrid={1}'\n return url.format(sku, qr_id)\n\ndef long_url_from_sku_old(sku,\n catalog_id=random.choice(CATALOG_IDS),\n prdcat_id=PRDCAT['top_sellers'],\n qr_id=random.choice(QR_IDS)):\n url = 'https://inlive.domainindustries.com/?search={0}&catalog_id={1}&prdcatid={2}&qrid={3}'\n\n return url.format(sku, catalog_id, prdcat_id, qr_id)\n\ndef extract_sku_from_url(long_url):\n ''' url = 'https://domainindustries.com/kohler-vaulttm-shortened-apron-front-undermount-single-bowl-kitchen-sink?utm_source=google&catalog_id=1&product_id=K-3943-NA&cat_id=107'\n extract_product_id_from_url(url)\n '''\n try:\n query = urlsplit(long_url).query\n params = parse_qsl(query)\n return dict(params)\n except Exception as e:\n print('coudn\\'t find the product_id in url : {}'.format(long_url))\n \ndef change_color(im, new_color):\n pixels = im.load() # create the pixel map\n for i in range(im.size[0]): # for every pixel:\n for j in range(im.size[1]):\n if pixels[i,j] != d['white']: #d['orange']:\n pixels[i,j] = new_color\n return im\n\ndef draw_and_center_text_on_image(im, msg, font_color='black', font_size=16): \n ''' im = Image.open(\"./images/QR_trans.png\")\n draw_and_center_text(im, '40%\\nOFF', font_color=d['blue'], font_size=44)\n '''\n im_size = im.size\n W = im.size[0]\n H = im.size[1]\n deal_font = ImageFont.truetype(DEAL_FONT, font_size)\n off_font = ImageFont.truetype(OFF_FONT, 32)\n draw = ImageDraw.Draw(im)\n w, h = draw.textsize(msg, font=deal_font)\n w_off, h_off = draw.textsize('OFF', font=off_font)\n draw.multiline_text(((W-w)/2,(H-h)/2), msg,font=deal_font, align='center',fill=font_color)\n #draw.multiline_text(((W-w_off)/2,((H+h)/2)), text='OFF',font=off_font, align='center',fill=font_color)\n #im.show() \n return im\n\ndef draw_and_center_text_no_image(msg, font_color='black', font_size=16): \n \n deal_font = ImageFont.truetype(DEAL_FONT, font_size)\n w, h = draw.textsize(msg, font=deal_font)\n draw.multiline_text(((W-w)/2,(H-h)/2), msg,font=deal_font, align='center',fill=font_color)\n #im.show() \n return im\n\ndef qr_code(sku, color,font_size=24,msg=False ): \n try:\n \n # Search Salesdf for the provide sku\n long_url = long_url_from_sku(sku)\n #print(long_url)\n \n # Build the URL from product_name, sku, cat_id, catalog_id, and etc\n # utm_source=google&catalog_id=1&product_id=K-3943-NA&cat_id=107\n \n # Extract Product_ID from the url (becomes the file name of the QR png image)\n #sku = extract_sku_from_url(long_url)['product_id']\n\n # Shorten URL\n short_url = shortener.short(long_url)\n \n # Generate QR code from shortened url\n #url = pyqrcode.QRCode(short_url,error = 'H')\n url = pyqrcode.create(short_url, error = 'H')\n url.png('./images/test.png',scale=10, module_color=color )\n im = Image.open('./images/test.png')\n im = im.convert(\"RGBA\")\n #im.show()\n \n # Add a White Border AROUND the QR Code\n box = (135,135,235,235)\n im.crop(box)\n \n # Paste a White Box WITHIN the QR\n region = Image.new('RGB', (100, 100), color = 'white')\n region = region.resize((box[2] - box[0], box[3] - box[1]))\n im.paste(region,box)\n \n \n if msg==False:\n # Put in a logo (or maybe add the slot machine icon later)\n logo = Image.open(\"./images/domain_logo.png\")\n logo = logo.resize((box[2] - box[0], box[3] - box[1]))\n im.paste(logo,box)\n \n else:\n # Draw the Deal Text into the White Empty Center of the QR\n msg = msg.replace(' ','\\n')\n deal_font = ImageFont.truetype(DEAL_FONT, font_size)\n text_size = deal_font.getsize(msg)\n draw = ImageDraw.Draw(im)\n W = im.size[0]\n H = im.size[1]\n w, h = draw.textsize(msg, font=deal_font)\n draw.multiline_text(((W-w)/2,(H-h)/2), msg, font=deal_font, fill=color, align='center')\n\n # Save File\n file = './images/qr_codes/{0}.png'.format(sku)\n im.save(file, 'PNG')\n #im.save(file, 'JPEG', quality=90)\n\n # Display within Jupyter \n pil_im = Image.open(file, 'r')\n cur_axes = mplot.gca()\n cur_axes.axes.get_xaxis().set_visible(False)\n cur_axes.axes.get_yaxis().set_visible(False)\n cur_axes.axes.axis('off')\n imshow(np.asarray(pil_im))\n\n return short_url, sku, file\n except Exception as e:\n print(\"I got here\")\n print(e)", | |
| "execution_count": 3, | |
| "outputs": [] | |
| }, | |
| { | |
| "metadata": {}, | |
| "cell_type": "markdown", | |
| "source": "## Load salesdf to get random sku" | |
| }, | |
| { | |
| "metadata": { | |
| "trusted": true | |
| }, | |
| "cell_type": "code", | |
| "source": "salesdf = pd.read_pickle('./data/pickle/magento_salesdf.pkl')", | |
| "execution_count": 4, | |
| "outputs": [] | |
| }, | |
| { | |
| "metadata": { | |
| "trusted": true | |
| }, | |
| "cell_type": "code", | |
| "source": "sku = salesdf.sample(1)['sku'].iloc[0]\nqr_code(sku, d['blue'], msg='5%\\nOFF',font_size=38)", | |
| "execution_count": 5, | |
| "outputs": [ | |
| { | |
| "output_type": "execute_result", | |
| "execution_count": 5, | |
| "data": { | |
| "text/plain": "('https://goo.gl/MLYFZN', 'OM-1616', './images/qr_codes/OM-1616.png')" | |
| }, | |
| "metadata": {} | |
| }, | |
| { | |
| "output_type": "display_data", | |
| "data": { | |
| "text/plain": "<matplotlib.figure.Figure at 0x11b9c8cc0>", | |
| "image/png": "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\n" | |
| }, | |
| "metadata": { | |
| "image/png": { | |
| "width": 235, | |
| "height": 235 | |
| } | |
| } | |
| } | |
| ] | |
| }, | |
| { | |
| "metadata": { | |
| "trusted": true | |
| }, | |
| "cell_type": "code", | |
| "source": "#OM-902TM&catalog_id=37065&prdcatid=0&qrid=19278\n\nqr_code('OM-902TM', d['blue'], msg='5%\\nOFF',font_size=38)", | |
| "execution_count": 6, | |
| "outputs": [ | |
| { | |
| "output_type": "execute_result", | |
| "execution_count": 6, | |
| "data": { | |
| "text/plain": "('https://goo.gl/GKy2qU', 'OM-902TM', './images/qr_codes/OM-902TM.png')" | |
| }, | |
| "metadata": {} | |
| }, | |
| { | |
| "output_type": "display_data", | |
| "data": { | |
| "text/plain": "<matplotlib.figure.Figure at 0x11ba040b8>", | |
| "image/png": "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\n" | |
| }, | |
| "metadata": { | |
| "image/png": { | |
| "width": 235, | |
| "height": 235 | |
| } | |
| } | |
| } | |
| ] | |
| }, | |
| { | |
| "metadata": {}, | |
| "cell_type": "markdown", | |
| "source": "---\n## Random Todos\n\n#### Unique Skus for Andrew" | |
| }, | |
| { | |
| "metadata": { | |
| "trusted": true | |
| }, | |
| "cell_type": "code", | |
| "source": "cols = ['sku', 'product_name', 'product_category', 'product_subcategory','product_brand']\n\n(salesdf[cols].drop_duplicates('sku')\n .sort_values(['product_category','product_brand','product_subcategory'])\n .to_csv('./data/csv/_exports/skus_images_required_from_andrew.csv', index=False)\n)", | |
| "execution_count": 7, | |
| "outputs": [] | |
| }, | |
| { | |
| "metadata": { | |
| "trusted": true | |
| }, | |
| "cell_type": "code", | |
| "source": "", | |
| "execution_count": null, | |
| "outputs": [] | |
| }, | |
| { | |
| "metadata": {}, | |
| "cell_type": "markdown", | |
| "source": "---" | |
| }, | |
| { | |
| "metadata": {}, | |
| "cell_type": "markdown", | |
| "source": "---" | |
| } | |
| ], | |
| "metadata": { | |
| "_draft": { | |
| "nbviewer_url": "https://gist.github.com/49c8e5a196c4256230fdb4fb5124710d" | |
| }, | |
| "gist": { | |
| "id": "49c8e5a196c4256230fdb4fb5124710d", | |
| "data": { | |
| "description": "QR Code from Provided Sku", | |
| "public": true | |
| } | |
| }, | |
| "kernelspec": { | |
| "name": "conda-env-jupyter-py", | |
| "display_name": "Python [conda env:jupyter]", | |
| "language": "python" | |
| }, | |
| "language_info": { | |
| "name": "python", | |
| "version": "3.6.3", | |
| "mimetype": "text/x-python", | |
| "codemirror_mode": { | |
| "name": "ipython", | |
| "version": 3 | |
| }, | |
| "pygments_lexer": "ipython3", | |
| "nbconvert_exporter": "python", | |
| "file_extension": ".py" | |
| }, | |
| "toc": { | |
| "threshold": 4, | |
| "number_sections": true, | |
| "toc_cell": false, | |
| "toc_window_display": false, | |
| "toc_section_display": "block", | |
| "sideBar": true, | |
| "navigate_menu": true, | |
| "moveMenuLeft": true, | |
| "widenNotebook": false, | |
| "colors": { | |
| "hover_highlight": "#DAA520", | |
| "selected_highlight": "#FFD700", | |
| "running_highlight": "#FF0000", | |
| "wrapper_background": "#FFFFFF", | |
| "sidebar_border": "#EEEEEE", | |
| "navigate_text": "#333333", | |
| "navigate_num": "#000000" | |
| }, | |
| "nav_menu": { | |
| "height": "12px", | |
| "width": "252px" | |
| } | |
| } | |
| }, | |
| "nbformat": 4, | |
| "nbformat_minor": 2 | |
| } |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment