{ "info": { "author": "Elias Dabbas", "author_email": "eliasdabbas@gmail.com", "bugtrack_url": null, "classifiers": [ "Development Status :: 4 - Beta", "Intended Audience :: Developers", "Intended Audience :: End Users/Desktop", "License :: OSI Approved :: MIT License", "Natural Language :: English", "Programming Language :: Python :: 3", "Programming Language :: Python :: 3.5", "Programming Language :: Python :: 3.6", "Programming Language :: Python :: 3.7" ], "description": ".. image:: https://img.shields.io/pypi/v/advertools.svg\n :target: https://pypi.python.org/pypi/advertools\n\n.. image:: https://img.shields.io/travis/eliasdabbas/advertools.svg\n :target: https://travis-ci.org/eliasdabbas/advertools\n\n.. image:: https://readthedocs.org/projects/advertools/badge/?version=latest\n :target: https://advertools.readthedocs.io/en/latest/?badge=latest\n :alt: Documentation Status\n\n.. image:: http://pepy.tech/badge/advertools\n :target: http://pepy.tech/project/advertools \n\n.. image:: https://img.shields.io/lgtm/grade/python/g/eliasdabbas/advertools.svg\n :target: https://lgtm.com/projects/g/eliasdabbas/advertools/context:python\n\n| \ud83c\udf89 **Enhanced:** Text Analysis for Online Marketers\n| Part 1: SEMrush article on two `text analysis techniques`_ with examples.\n| Part 2: `Kaggle notebook`_ expanding on the concepts with new functions as well enhancements to existing functions.\n\nadvertools: create, scale, and manage online campaigns\n======================================================\n\n| A digital marketer is a data scientist.\n| Your job is to manage, manipulate, visualize, communicate, understand,\n and make decisions based on data.\n\nYou might be doing basic stuff, like copying and pasting text on spread\nsheets, you might be running large scale automated platforms with\nsophisticated algorithms, or somewhere in between. In any case your job\nis all about working with data.\n\n| As a data scientist you don\u2019t spend most of your time producing cool visualizations or finding great insights. The majority of your time is spent wrangling with URLs, figuring out how to stitch together two tables, hoping that the dates, won\u2019t break, without you knowing, or trying to generate the next 124,538 keywords for an upcoming campaign, by the end of the week!\n\n| advertools is a Python package, that can hopefully make that part of your job a little easier.\n\n\nI have a tutorial on DataCamp that demonstrates a real-life example of\nhow to use `Python for creating a Search Engine Marketing campaign`_. There is also a `project to practice those skills in an agency / case study setting`_.\n\nI also have an interactive tool based on this package, where you can\n`generate keyword combinations easily`_.\n\n.. image:: https://github.com/eliasdabbas/advertools/blob/master/app_screen_shot.png?raw=true\n :width: 600 px\n :align: center\n\n\nMain Uses:\n~~~~~~~~~~\n\n- **Generate keywords:** starting from a list of products, and a list\n of words that might make sense together, you can generate a full\n table of many possible combinations and permutations of relevant\n keywords for that product.\n The output is a ready-to-upload table to get you started with\n keywords.\n\n.. code:: python\n\n >>> import advertools as adv\n >>> adv.kw_generate(products=['toyota'],\n words=['buy', 'price'],\n match_types=['Exact']).head()\n ... Campaign Ad Group Keyword Criterion Type\n 0 SEM_Campaign toyota toyota buy Exact\n 1 SEM_Campaign toyota toyota price Exact\n 2 SEM_Campaign toyota buy toyota Exact\n 3 SEM_Campaign toyota price toyota Exact\n 4 SEM_Campaign toyota toyota buy price Exact\n\n- **Create ads:** Two main ways to create text ads, one is from scratch\n (bottom-up) and the other is top down (given a set of product names).\n\n1. From scratch: This is the traditional way of writing ads. You have\n a template text, and you want to insert the product name dynamically\n in a certain location. You also want to make sure you are within the\n character limits. For more details, I have a `tutorial on how to create multiple text ads from scratch`_.\n\n.. code:: python\n\n >>> ad_create(template='Let\\'s count {}',\n replacements=['one', 'two', 'three'],\n fallback='one', # in case the total length is greater than max_len\n max_len=20)\n [\"Let's count one\", \"Let's count two\", \"Let's count three\"]\n\n >>> ad_create('My favorite car is {}', ['Toyota', 'BMW', 'Mercedes', 'Lamborghini'], 'great', 28)\n ['My favorite car is Toyota', 'My favorite car is BMW', 'My favorite car is Mercedes',\n 'My favorite car is great'] # 'Lamborghini' was too long, and so was replace by 'great'\n\n2. Top-down approach: Sometimes you need to start with a given a list of\n product names, which you can easily split them into the relevant ad\n slots, taking into consideration the length restrictions imposed by\n the ad platform.\n Imagine having the following list of products, and you want to split\n each into slots of 30, 30, and 80 characters (based on the AdWords\n template):\n\n.. code:: python\n\n >>> products = [\n 'Samsung Galaxy S8+ Dual Sim 64GB 4G LTE Orchid Gray',\n 'Samsung Galaxy J1 Ace Dual Sim 4GB 3G Wifi White',\n 'Samsung Galaxy Note 8 Dual SIM 64GB 6GB RAM 4G LTE Midnight Black',\n 'Samsung Galaxy Note 8 Dual SIM 64GB 6GB RAM 4G LTE Orchid Grey'\n ]\n >>> [adv.ad_from_string(p) for p in products]\n ... [['Samsung Galaxy S8+ Dual Sim', '64gb 4g Lte Orchid Gray', '', '', '', ''],\n ['Samsung Galaxy J1 Ace Dual Sim', '4gb 3g Wifi White', '', '', '', ''],\n ['Samsung Galaxy Note 8 Dual Sim', '64gb 6gb Ram 4g Lte Midnight', 'Black', '', '', ''],\n ['Samsung Galaxy Note 8 Dual Sim', '64gb 6gb Ram 4g Lte Orchid', 'Grey', '', '', '']]\n\n| Each ad is split into the respective slots, making sure they contain\n complete words, and that each slot has at most the specific number of\n slots allowed.\n| This can save time when you have thousands of products to create ads\n for.\n\n- **Analyze word frequency:** Calculate the absolute and weighted\n frequency of words in a collection of documents to uncover hidden\n trends in the data. This is basically answering the question, \u2018What\n did we write about vs. what was actually read?\u2019\n Here is a tutorial on DataCamp on `measuring absolute vs weighted frequency of words`_.\n\n- **Extract important elements from social media posts:** Get the more informative\n elements of social media posts (hashtags, mentions, emoji). You also \n get some basic statistics about them. \n Check out a more detailed tutorial on Kaggle, on how to `extract entities from social media posts`_ using these functions.\n\n.. code:: python\n\n >>> posts = ['i like #blue', 'i like #green and #blue', 'i like all']\n >>> hashtag_summary = adv.extract_hashtags(posts)\n >>> hashtag_summary.keys()\n dict_keys(['hashtags', 'hashtags_flat', 'hashtag_counts', 'hashtag_freq', \n 'top_hashtags', 'overview'])\n\n what are the hashtags?\n >>> hashtag_summary['hashtags']\n [['#blue'], ['#green', '#blue'], []]\n\n >>> hashtag_summary['top_hashtags']\n [('#blue', 2), ('#green', 1)]\n\n How many were there per post? \n >>> hashtag_summary['hashtag_counts']\n [1, 2, 0]\n\nAnd you can do the same for mentions and emoji (with the textual name of each emoji).\n\n| The package is still under heavy development, so expect a lot of\n changes.\n| Feedback and suggestions are more than welcomed.\n\nInstallation\n~~~~~~~~~~~~\n\n.. code:: bash\n\n pip install advertools\n\nConventions\n~~~~~~~~~~~\n\nFunction names mostly start with the object you are working on:\n\n| ``kw_``: for keywords-related functions\n| ``ad_``: for ad-related functions\n| ``url_``: URL tracking and generation\n| ``extract_``: for extracting entities from social media posts (mentions, hashtags, emoji, etc.)\n| ``twitter``: a module for querying the Twitter API and getting results in a pandas DataFrame\n| ``serp_``: get search engine results pages in a DataFrame, currently available: Google and YouTube\n\n\n.. _measuring absolute vs weighted frequency of words: https://www.datacamp.com/community/tutorials/absolute-weighted-word-frequency\n\n\n.. _text analysis techniques: http://bit.ly/2WZ4ZUd\n.. _Kaggle notebook: http://bit.ly/2WwJusU\n.. _Python for creating a Search Engine Marketing campaign: https://www.datacamp.com/community/tutorials/sem-data-science\n.. _project to practice those skills in an agency / case study setting: https://www.datacamp.com/projects/400\n.. _generate keyword combinations easily: https://www.dashboardom.com/advertools\n.. _tutorial on how to create multiple text ads from scratch: https://nbviewer.jupyter.org/github/eliasdabbas/ad_create/blob/master/ad_create.ipynb\n.. _extract entities from social media posts: http://bit.ly/2wTWvBI\n\n\n=======\nHistory\n=======\n\nUnreleased\n----------\n\n* Changed\n - ``serp_goog`` with expanded ``pagemap`` and metadata\n\n* Fixed\n - ``serp_goog`` errors, some parameters not appearing in result df\n\n0.7.3 (2019-04-17)\n------------------\n\n* Added\n - New function ``extract_exclamations`` very similar to ``extract_questions``\n - New function ``extract_urls``, also counts top domains and top TLDs\n - New keys to ``extract_emoji``; ``top_emoji_categories`` & ``top_emoji_sub_categories``\n - Groups and sub-groups to emoji db\n\n0.7.2 (2019-03-29)\n------------------\n\n* Changed\n - Emoji regex updated\n - Simpler extraction of Spanish questions\n\n0.7.1 (2019-03-26)\n------------------\n\n* Fixed\n - Missing __init__ imports.\n\n0.7.0 (2019-03-26)\n------------------\n\n* Added\n - New ``extract_`` functions:\n\n * Generic ``extract`` used by all others, and takes arbitrary regex to extract text.\n * ``extract_questions`` to get question mark statistics, as well as the text of questions asked. \n * ``extract_currency`` shows text that has currency symbols in it, as well as surrounding text.\n * ``extract_intense_words`` gets statistics about, and extract words with any character repeated three or more times, indicating an intense feeling (+ve or -ve).\n\n - New function ``word_tokenize``: \n\n * Used by ``word_frequency`` to get tokens of 1,2,3-word phrases (or more).\n * Split a list of text into tokens of a specified number of words each.\n\n - New stop-words from the ``spaCy`` package:\n\n current: Arabic, Azerbaijani, Danish, Dutch, English, Finnish, French, German, Greek, Hungarian, Italian, Kazakh, Nepali, Norwegian, Portuguese, Romanian, Russian, Spanish, Swedish, Turkish.\n\n new: Bengali, Catalan, Chinese, Croatian, Hebrew, Hindi, Indonesian, Irish, Japanese, Persian, Polish, Sinhala, Tagalog, Tamil, Tatar, Telugu, Thai, Ukrainian, Urdu, Vietnamese\n* Changed\n - ``word_frequency`` takes new parameters:\n ``regex``: defaults to words, but can be changed to anything '\\S+' to split words and keep punctuation for example.\n\n ``sep``: not longer used as an option, the above regex can be used instead\n\n ``num_list``: now optional, and defaults to counts of 1 each if not\n provided. Usefull for counting abs_freq only if data not available.\n\n ``phrase_len``: the number of words in each split token. Defaults to 1\n and can be set to 2 or higher. This helps in analyzing phrases as\n opposed to words.\n - Parameters supplied to ``serp_goog`` appear at the beginning of the result df\n - ``serp_youtube`` now contains ``nextPageToken`` to make paginating requests easier\n\n0.6.0 (2019-02-11)\n------------------\n\n* New function\n - ``extract_words`` to extract an arbitrary set of words\n* Minor updates\n - ``ad_from_string`` slots argument reflects new text ad lenghts \n - hashtag regex improved\n\n0.5.3 (2019-01-31)\n------------------\n\n* Fix minor bugs\n - Handle Twitter search queries with 0 results in final request\n\n0.5.2 (2018-12-01)\n------------------\n\n* Fix minor bugs\n - Properly handle requests for >50 items (``serp_youtube``)\n - Rewrite test for _dict_product\n - Fix issue with string printing error msg\n\n0.5.1 (2018-11-06)\n------------------\n\n* Fix minor bugs\n - _dict_product implemented with lists\n - Missing keys in some YouTube responses\n\n0.5.0 (2018-11-04)\n------------------\n\n* New function serp_youtube\n - Query YouTube API for videos, channels, or playlists\n - Multiple queries (product of parameters) in one function call\n - Reponse looping and merging handled, one DataFrame \n* serp_goog return Google's original error messages\n* twitter responses with entities, get the entities extracted, each in a separate column\n\n\n0.4.1 (2018-10-13)\n------------------\n\n* New function serp_goog (based on Google CSE)\n - Query Google search and get the result in a DataFrame\n - Make multiple queries / requests in one function call\n - All responses merged in one DataFrame\n* twitter.get_place_trends results are ranked by town and country\n\n0.4.0 (2018-10-08)\n------------------\n\n* New Twitter module based on twython\n - Wraps 20+ functions for getting Twitter API data\n - Gets data in a pands DataFrame\n - Handles looping over requests higher than the defaults\n* Tested on Python 3.7\n\n0.3.0 (2018-08-14)\n------------------\n\n* Search engine marketing cheat sheet.\n* New set of extract\\_ functions with summary stats for each:\n * extract_hashtags\n * extract_mentions\n * extract_emoji\n* Tests and bug fixes\n\n0.2.0 (2018-07-06)\n------------------\n\n* New set of kw_ functions.\n* Full testing and coverage. \n\n0.1.0 (2018-07-02)\n------------------\n\n* First release on PyPI.\n* Functions available:\n - ad_create: create a text ad place words in placeholders\n - ad_from_string: split a long string to shorter string that fit into\n given slots\n - kw_generate: generate keywords from lists of products and words\n - url_utm_ga: generate a UTM-tagged URL for Google Analytics tracking\n - word_frequency: measure the absolute and weighted frequency of words in\n collection of documents\n\n\n", "description_content_type": "", "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/eliasdabbas/advertools", "keywords": "advertising marketing search-engine-optimization adwords seo sem bingads keyword-research", "license": "MIT license", "maintainer": "", "maintainer_email": "", "name": "advertools", "package_url": "https://pypi.org/project/advertools/", "platform": "", "project_url": "https://pypi.org/project/advertools/", "project_urls": { "Homepage": "https://github.com/eliasdabbas/advertools" }, "release_url": "https://pypi.org/project/advertools/0.7.4/", "requires_dist": [ "pandas", "twython" ], "requires_python": "", "summary": "Productivity and analysis tools for online marketing", "version": "0.7.4" }, "last_serial": 5689526, "releases": { "0.1.0": [ { "comment_text": "", "digests": { "md5": "872c8ff6313f2a1f794937c57d52f458", "sha256": "03feaf501f959fab40ba3085c1d18da567ea9dd8fc1df3cf7bb105230909f436" }, "downloads": -1, "filename": "advertools-0.1.0-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "872c8ff6313f2a1f794937c57d52f458", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 63773, "upload_time": "2018-06-11T20:02:56", "url": "https://files.pythonhosted.org/packages/e2/50/649056055dd86986d16b5efb930c6caf078e2ba3bf73cf25e2e611033713/advertools-0.1.0-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "4fe1b706f95e057f7310dfc7f6a40ce6", "sha256": "ce43b0f2cda142819f2a01dca27cba9b1e8bc932b8dc1fac918c5b29c6f0e5b1" }, "downloads": -1, "filename": "advertools-0.1.0.tar.gz", "has_sig": false, "md5_digest": "4fe1b706f95e057f7310dfc7f6a40ce6", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 541357, "upload_time": "2018-06-11T20:03:01", "url": "https://files.pythonhosted.org/packages/51/ba/6e366fc656921671e21fa6d36152d3116162693d7c02ea6f79a7183805c3/advertools-0.1.0.tar.gz" } ], "0.1.1": [ { "comment_text": "", "digests": { "md5": "f813d178429c69824fcc8aefa9c26d25", "sha256": "9e92c74cf48d70a2d9811eb0d348bb88499ee89172f75351bd8f537b862dc563" }, "downloads": -1, "filename": "advertools-0.1.1-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "f813d178429c69824fcc8aefa9c26d25", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 66174, "upload_time": "2018-06-11T20:53:42", "url": "https://files.pythonhosted.org/packages/88/28/b650f3323cf39b46ee47c401b4b5ffae37c17e7958a3b59c25973a55d284/advertools-0.1.1-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "6dca7b43064af6c539620a35efcba92a", "sha256": "7252e2e05a6fd7c00f7ccea6be0eefc4c7c4c1b67b75161f138592e792ed5640" }, "downloads": -1, "filename": "advertools-0.1.1.tar.gz", "has_sig": false, "md5_digest": "6dca7b43064af6c539620a35efcba92a", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 541444, "upload_time": "2018-06-11T20:53:46", "url": "https://files.pythonhosted.org/packages/ab/91/918adc2fb062308ef81e4e223f8d7a7846623347bd021fe054eda1390787/advertools-0.1.1.tar.gz" } ], "0.1.2": [ { "comment_text": "", "digests": { "md5": "a8a01f01828e54a607eae426092c9e11", "sha256": "cafbb0bd16c5cd2df31bb985dc7d7bd3dc8b1af01c9064dfe70778f0c6df113d" }, "downloads": -1, "filename": "advertools-0.1.2-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "a8a01f01828e54a607eae426092c9e11", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 66170, "upload_time": "2018-06-11T22:47:55", "url": "https://files.pythonhosted.org/packages/62/86/d122b398a96cf76feb43163d7533e9cd45ce3c1f0a93af8f800ba70477fb/advertools-0.1.2-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "e4499abb718173c0301832542112355a", "sha256": "df424d187f4c14fc33fb4002f8a037ee965945c56edc894ec567466740db786c" }, "downloads": -1, "filename": "advertools-0.1.2.tar.gz", "has_sig": false, "md5_digest": "e4499abb718173c0301832542112355a", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 541989, "upload_time": "2018-06-11T22:48:03", "url": "https://files.pythonhosted.org/packages/86/d4/da821ffb13d4a2bb21aec9a12f5cdbdfaa04761d6eb47317c28994d68936/advertools-0.1.2.tar.gz" } ], "0.1.3": [ { "comment_text": "", "digests": { "md5": "3aca0996be02ad4deb9163dccc2700fd", "sha256": "bc5beba6e2402f187458a276a5cb4d9b98c6c545f7951e621b38f49103893734" }, "downloads": -1, "filename": "advertools-0.1.3-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "3aca0996be02ad4deb9163dccc2700fd", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 66248, "upload_time": "2018-06-11T22:49:41", "url": "https://files.pythonhosted.org/packages/da/5e/05a2e33806144bc117513e0a87ccb4bf7e14a73012e7277e1cae3f8867b5/advertools-0.1.3-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "0fba8e00ef2a6d67e5d26c81840c25e3", "sha256": "c2a98d6cd90784bf61fa657a1a59431d570b54ce5f8175c0dcb6bb1dc671ee6a" }, "downloads": -1, "filename": "advertools-0.1.3.tar.gz", "has_sig": false, "md5_digest": "0fba8e00ef2a6d67e5d26c81840c25e3", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 541985, "upload_time": "2018-06-11T22:49:48", "url": "https://files.pythonhosted.org/packages/eb/6c/075d48039add93cf2688d811b89809f91bb64425f5ba9ff47dd950787b08/advertools-0.1.3.tar.gz" } ], "0.1a1": [ { "comment_text": "", "digests": { "md5": "2091291379f7dad5f80fb8fff76b0cf6", "sha256": "bbd1c805c8d80182b794c68be1566b16399a7d7a146118e7be45747e27d31d20" }, "downloads": -1, "filename": "Advertools-0.1a1-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "2091291379f7dad5f80fb8fff76b0cf6", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 2438, "upload_time": "2017-06-29T18:50:17", "url": "https://files.pythonhosted.org/packages/ec/25/939380dc629597211bb552c28198a5fec303636aef8905de41e0f98b25d6/Advertools-0.1a1-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "996c9049e1f576580315e3f6191973c1", "sha256": "c380f2f6bdbf74763992a443ac1891181012893d8b39dab3580daebea1d8798e" }, "downloads": -1, "filename": "Advertools-0.1a1.tar.gz", "has_sig": false, "md5_digest": "996c9049e1f576580315e3f6191973c1", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 1240, "upload_time": "2017-06-29T18:50:18", "url": "https://files.pythonhosted.org/packages/36/47/d626faeb4b7ce0c1f88243b7ab7b39a7ae70cffdf21456680c9ad5b3888a/Advertools-0.1a1.tar.gz" } ], "0.2.0": [ { "comment_text": "", "digests": { "md5": "a885178e692ca777ccdf2841f5026d28", "sha256": "4aa448c74d90c2214b891557074273a01ac788777b147b20e823c976095101c1" }, "downloads": -1, "filename": "advertools-0.2.0-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "a885178e692ca777ccdf2841f5026d28", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 27744, "upload_time": "2018-07-07T01:44:40", "url": "https://files.pythonhosted.org/packages/ac/17/72d9698e6e541b4c813d4704acf682cf750e9f24659b1888f286a4c7df95/advertools-0.2.0-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "49663ee6d528a38474c9dbdf10333451", "sha256": "3fdf8d18917b0213d4d7ed09b4d6f68d54092513e8e85d58ebe372f47c88b8d1" }, "downloads": -1, "filename": "advertools-0.2.0.tar.gz", "has_sig": false, "md5_digest": "49663ee6d528a38474c9dbdf10333451", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 49207, "upload_time": "2018-07-07T01:44:42", "url": "https://files.pythonhosted.org/packages/8d/4b/3fe067251750e054486ce5fb596b6e2fcfab110c038ec849d4d27eebe182/advertools-0.2.0.tar.gz" } ], "0.3.0": [ { "comment_text": "", "digests": { "md5": "16d78bb2bd55cfcdfeaaa3b5bb49bcf1", "sha256": "859029815f32de6b830289e13591063b72593e6be74e759e8f71d9cb4f76fa2c" }, "downloads": -1, "filename": "advertools-0.3.0-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "16d78bb2bd55cfcdfeaaa3b5bb49bcf1", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 56198, "upload_time": "2018-08-14T01:10:40", "url": "https://files.pythonhosted.org/packages/f5/49/5045b6edfc4d85460630a5120ad17b00ac8990eab3902615c8b971873e84/advertools-0.3.0-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "574a376d1b223957f3ef5f10f316a6bd", "sha256": "9aa37bc46b50e1b0fca2bb5a68df156e779b5d6b659cfb4e45156871c6ac416e" }, "downloads": -1, "filename": "advertools-0.3.0.tar.gz", "has_sig": false, "md5_digest": "574a376d1b223957f3ef5f10f316a6bd", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 83484, "upload_time": "2018-08-14T01:10:42", "url": "https://files.pythonhosted.org/packages/09/40/b7015dd6374cc66816bcf5b9749c80a0816fe7dd8985bf314cc33bda58fa/advertools-0.3.0.tar.gz" } ], "0.4.0": [ { "comment_text": "", "digests": { "md5": "63f1d2eac608f99cf7d3bf0401247ab0", "sha256": "f236bfd34ca6ebc9dd1a4f95f7d9f09ea75e21038ba64972ff0a64214bee8be0" }, "downloads": -1, "filename": "advertools-0.4.0-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "63f1d2eac608f99cf7d3bf0401247ab0", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 66148, "upload_time": "2018-10-08T18:29:40", "url": "https://files.pythonhosted.org/packages/92/60/af06df5cd49a81f57b0c0dea9ef1f9c4f9fe11024b05ec1f6ea9f06c5c61/advertools-0.4.0-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "42247ca675a7e11f64841f28599cbce2", "sha256": "0deaaf0f1c9ccae3e1766065ff316d2718e3493666f1dadda5f57e57044c4c5e" }, "downloads": -1, "filename": "advertools-0.4.0.tar.gz", "has_sig": false, "md5_digest": "42247ca675a7e11f64841f28599cbce2", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 94847, "upload_time": "2018-10-08T18:29:42", "url": "https://files.pythonhosted.org/packages/e0/e1/5418658a0170fba96d2f83d62615ed570dc6b9c3f5ed1f8b7c833f797083/advertools-0.4.0.tar.gz" } ], "0.4.1": [ { "comment_text": "", "digests": { "md5": "f99f4ac30aa8a2f1d8a2cdd3831cf307", "sha256": "34b1a2c003e8c3b10982fc4ff1ed37cd6a59eb708b507aaa566f5dab4c64ac85" }, "downloads": -1, "filename": "advertools-0.4.1-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "f99f4ac30aa8a2f1d8a2cdd3831cf307", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 73335, "upload_time": "2018-10-13T17:48:47", "url": "https://files.pythonhosted.org/packages/45/f2/58d07f93913ac47f239f363b4a4e1ac3d01c64c130c6ec21f2a460c716b3/advertools-0.4.1-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "fb8d2d686782cd5723434d96467d5c26", "sha256": "a04c815f2e5a8d0bc43251349e0da006feb8b366087f03c2b49ba3cfb769cf22" }, "downloads": -1, "filename": "advertools-0.4.1.tar.gz", "has_sig": false, "md5_digest": "fb8d2d686782cd5723434d96467d5c26", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 103940, "upload_time": "2018-10-13T17:48:49", "url": "https://files.pythonhosted.org/packages/ac/37/a14f41f1e40205ffbdc27706a75ba45bba6f1db3ce1a318882c2838e2e1e/advertools-0.4.1.tar.gz" } ], "0.5.0": [ { "comment_text": "", "digests": { "md5": "78bc0afa144a4792700cc1ec9e8618e1", "sha256": "16ef5ccac9fcd7ce7fcac05036de8268867974eba5cd48c7489374c0012a9dd5" }, "downloads": -1, "filename": "advertools-0.5.0-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "78bc0afa144a4792700cc1ec9e8618e1", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 82116, "upload_time": "2018-11-04T02:29:56", "url": "https://files.pythonhosted.org/packages/4f/34/edf735eb55215e81492ce37a15466baf5628bb8714eeeba1c367f376490b/advertools-0.5.0-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "8bb95294235265f1370cc57e67960d29", "sha256": "f37706a87a1c2df232856617063ad2e666976ee16c1397dbdb3a56ea1bbd1a5c" }, "downloads": -1, "filename": "advertools-0.5.0.tar.gz", "has_sig": false, "md5_digest": "8bb95294235265f1370cc57e67960d29", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 112377, "upload_time": "2018-11-04T02:29:58", "url": "https://files.pythonhosted.org/packages/be/de/39203af1c5e5bfbf701c5a837e86dd1572b232ea2dbded27a6497d6787c7/advertools-0.5.0.tar.gz" } ], "0.5.1": [ { "comment_text": "", "digests": { "md5": "b878af9ec9ae9822aff75fb7ee5b52ce", "sha256": "e91f4710f6bc3e4e001d5c07742da07e637ed42b1dfcb26910575737bc6466bd" }, "downloads": -1, "filename": "advertools-0.5.1-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "b878af9ec9ae9822aff75fb7ee5b52ce", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 82227, "upload_time": "2018-11-06T22:51:21", "url": "https://files.pythonhosted.org/packages/27/68/c1963fa163061ad69b0c320201ba7bcf254a370632f55e71610a1c08ed5f/advertools-0.5.1-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "d271e4ee6178f94df9ed8b91bc3018e1", "sha256": "d752baf6d3c909d452ac334fa7bc675c655ac3e75cf7c205419e25e6e67cb246" }, "downloads": -1, "filename": "advertools-0.5.1.tar.gz", "has_sig": false, "md5_digest": "d271e4ee6178f94df9ed8b91bc3018e1", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 112548, "upload_time": "2018-11-06T22:51:23", "url": "https://files.pythonhosted.org/packages/5d/4b/fa83cc801dbcd7bcd48129c8015db5ef6824f43ee4360231f8a8434bed2a/advertools-0.5.1.tar.gz" } ], "0.5.2": [ { "comment_text": "", "digests": { "md5": "2e2853866df13bee7db2e05b0b91b81f", "sha256": "aca3803cf433642b9a75adbb690dd65493ede1700f73caf13cfdf81d8adae3d3" }, "downloads": -1, "filename": "advertools-0.5.2-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "2e2853866df13bee7db2e05b0b91b81f", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 82470, "upload_time": "2018-12-01T22:29:42", "url": "https://files.pythonhosted.org/packages/72/32/df2251c945f8fda13c408eea387d255bfa9a3b2f3a4fac278666ea8a6123/advertools-0.5.2-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "1fcc052148afc8a288cf81ce97627586", "sha256": "e9eb4c70350622af8066dec87ead5d13b441b1d583e763ffa36835619a295cb6" }, "downloads": -1, "filename": "advertools-0.5.2.tar.gz", "has_sig": false, "md5_digest": "1fcc052148afc8a288cf81ce97627586", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 112956, "upload_time": "2018-12-01T22:29:45", "url": "https://files.pythonhosted.org/packages/b3/61/02699f1f04b5cbe47209a6bab12b8aa8ca9b71f732a59169db29d52d6c5c/advertools-0.5.2.tar.gz" } ], "0.5.3": [ { "comment_text": "", "digests": { "md5": "939a5ccaeb1f1e0a2693528539cdea48", "sha256": "21986644bc5e437717b147217d341bd629a9f4aa9dd130b06b8a65a006a243f2" }, "downloads": -1, "filename": "advertools-0.5.3-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "939a5ccaeb1f1e0a2693528539cdea48", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 82766, "upload_time": "2019-01-31T04:33:52", "url": "https://files.pythonhosted.org/packages/b9/bb/00695e5a7cb9ef2749427e04b4262223461947cb4196047b61637eaad5ac/advertools-0.5.3-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "11550d4e985bdf48fec3085cb9c669e5", "sha256": "ea0b26214db09c67e9c4522980c4c80122a94dc3c902623171a9053ff05ff72e" }, "downloads": -1, "filename": "advertools-0.5.3.tar.gz", "has_sig": false, "md5_digest": "11550d4e985bdf48fec3085cb9c669e5", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 113391, "upload_time": "2019-01-31T04:33:54", "url": "https://files.pythonhosted.org/packages/b9/9e/3fce8d2cb14b1f2e217df2cedd21d239eaf08bc8fdc4a8a1436711f4d0a2/advertools-0.5.3.tar.gz" } ], "0.6.0": [ { "comment_text": "", "digests": { "md5": "e098bbb5035cbdc3ce6e50e10379e43b", "sha256": "dad6e723a073b008423297544a34030ba9e0e419cef07183f185480eb076f1a7" }, "downloads": -1, "filename": "advertools-0.6.0-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "e098bbb5035cbdc3ce6e50e10379e43b", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 83689, "upload_time": "2019-02-11T01:31:23", "url": "https://files.pythonhosted.org/packages/88/f2/6576e6b40cc5a2c3e932cc2cc7d91f46fe1e398f326641e258ab725c433b/advertools-0.6.0-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "867ff94b712efb45e82c84c9dc5ae72e", "sha256": "d9b00eba05ce35313470f8d475c8d301784b07900251fd2960a6b6d5d28dc2eb" }, "downloads": -1, "filename": "advertools-0.6.0.tar.gz", "has_sig": false, "md5_digest": "867ff94b712efb45e82c84c9dc5ae72e", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 115285, "upload_time": "2019-02-11T01:31:26", "url": "https://files.pythonhosted.org/packages/dd/ee/2c0080ff0aa50ac7c91edea657cff4c78a250ea5dbf5c41ec7f2478fb70d/advertools-0.6.0.tar.gz" } ], "0.7.0": [ { "comment_text": "", "digests": { "md5": "6a90187ce9ce820f11f6d4f4b6d80316", "sha256": "ec8e8120e7c8600e3da95a86f40d748eaea61848d988b7742a5daf81e569fa14" }, "downloads": -1, "filename": "advertools-0.7.0-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "6a90187ce9ce820f11f6d4f4b6d80316", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 143509, "upload_time": "2019-03-26T02:30:43", "url": "https://files.pythonhosted.org/packages/91/37/5f7562fcc059d07640f7445e55601788a0c8fdda5e11454b4dcad90c449c/advertools-0.7.0-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "965b0182c0f6ced91bf721c8f27dfbc8", "sha256": "016514cd07ddedc1b22b2542066f3d70d4bd77c3c7de0756263a9c4219899acf" }, "downloads": -1, "filename": "advertools-0.7.0.tar.gz", "has_sig": false, "md5_digest": "965b0182c0f6ced91bf721c8f27dfbc8", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 177324, "upload_time": "2019-03-26T02:30:45", "url": "https://files.pythonhosted.org/packages/7b/55/b20fc223c00d00469c03f2fc97c02d50b79e2785c16cdeb07d8731b298d3/advertools-0.7.0.tar.gz" } ], "0.7.1": [ { "comment_text": "", "digests": { "md5": "d5372fd422f39a27d7ba66ba3900490a", "sha256": "b1fcaa0d83ee58ca60bb33be9a101e2b387466bed446fa12acb4906a18c23492" }, "downloads": -1, "filename": "advertools-0.7.1-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "d5372fd422f39a27d7ba66ba3900490a", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 143546, "upload_time": "2019-03-26T14:13:32", "url": "https://files.pythonhosted.org/packages/bd/78/a98aeb4c74630caa4256192e6f371c4107addb01d2b46dc24dd0f5be8108/advertools-0.7.1-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "10b9977be5526e9e07f9aa0334decbd8", "sha256": "dc7c18e430f3930e69491424ae7adf2a388c0a083d6d7094c0c1a1940beee1e1" }, "downloads": -1, "filename": "advertools-0.7.1.tar.gz", "has_sig": false, "md5_digest": "10b9977be5526e9e07f9aa0334decbd8", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 177381, "upload_time": "2019-03-26T14:13:34", "url": "https://files.pythonhosted.org/packages/81/a7/ee68cac489a951ac634e42cea1357120401d54fe2acbd4d0a30db94d2fd2/advertools-0.7.1.tar.gz" } ], "0.7.2": [ { "comment_text": "", "digests": { "md5": "9d9e2e844c17616cde9cd1376fcad4ae", "sha256": "e70d1c17985d4299b123cf741b993a55566b2ca2d5851ceea9ff5012e32a00ca" }, "downloads": -1, "filename": "advertools-0.7.2-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "9d9e2e844c17616cde9cd1376fcad4ae", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 143689, "upload_time": "2019-03-29T14:55:37", "url": "https://files.pythonhosted.org/packages/a9/fa/c403c30fb8e39a0aa8101878fad8a2325d712f4da59f52bb106020572a12/advertools-0.7.2-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "ec4a139654ab5c50d6970c5b974bab9b", "sha256": "97f623c1af01dd27645b89a3206a671c3c8496b2078bccfad5f702fc6ec972be" }, "downloads": -1, "filename": "advertools-0.7.2.tar.gz", "has_sig": false, "md5_digest": "ec4a139654ab5c50d6970c5b974bab9b", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 177581, "upload_time": "2019-03-29T14:55:39", "url": "https://files.pythonhosted.org/packages/99/d4/29d1d103834aec219943d89b0f129e6904237ff83363f176e4946e73a57e/advertools-0.7.2.tar.gz" } ], "0.7.3": [ { "comment_text": "", "digests": { "md5": "4cb2b6ba8f7cafb24666fa4b667f50ab", "sha256": "4b33196c33241ec6104ae664d7e5900be124a42158577310928297535143ec7f" }, "downloads": -1, "filename": "advertools-0.7.3-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "4cb2b6ba8f7cafb24666fa4b667f50ab", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 184844, "upload_time": "2019-04-16T23:27:47", "url": "https://files.pythonhosted.org/packages/2e/e3/2faa5e6aaa6456205eac38fc6dc144ba6768e5ed81a9d598462eaf161ddc/advertools-0.7.3-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "0f27dd8af886d86c1015953209c1218f", "sha256": "c1e368b134fbf92ec47c0643aad19aa8eeeef392ceb75dd4299907670241e195" }, "downloads": -1, "filename": "advertools-0.7.3.tar.gz", "has_sig": false, "md5_digest": "0f27dd8af886d86c1015953209c1218f", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 216570, "upload_time": "2019-04-16T23:27:50", "url": "https://files.pythonhosted.org/packages/4c/c0/8543d796e3652b3643624952a4c4a785f5ecfaafe45e656db4b829a7b63f/advertools-0.7.3.tar.gz" } ], "0.7.4": [ { "comment_text": "", "digests": { "md5": "23952f927f02d01013c6085647a5dd81", "sha256": "a030a128a5d4df75bef17fa30197780fce67da1385c23a931938bb781a25bd2a" }, "downloads": -1, "filename": "advertools-0.7.4-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "23952f927f02d01013c6085647a5dd81", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 185324, "upload_time": "2019-08-16T21:09:18", "url": "https://files.pythonhosted.org/packages/1c/55/dbf2eaacb1a8f2d295f9285cb1b129a412376762fcae3b13e27d1644a88f/advertools-0.7.4-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "a2d71b18bb4704a587c05c309b067df6", "sha256": "b7191f9864cd5ceb69f8ed1b749e641937781ac6aae94f97c0aa865295073ab0" }, "downloads": -1, "filename": "advertools-0.7.4.tar.gz", "has_sig": false, "md5_digest": "a2d71b18bb4704a587c05c309b067df6", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 217381, "upload_time": "2019-08-16T21:09:20", "url": "https://files.pythonhosted.org/packages/16/4c/6e3702102e3822895051457420b0adcb1dbc7f022c86240be3ed64aa4aec/advertools-0.7.4.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "23952f927f02d01013c6085647a5dd81", "sha256": "a030a128a5d4df75bef17fa30197780fce67da1385c23a931938bb781a25bd2a" }, "downloads": -1, "filename": "advertools-0.7.4-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "23952f927f02d01013c6085647a5dd81", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 185324, "upload_time": "2019-08-16T21:09:18", "url": "https://files.pythonhosted.org/packages/1c/55/dbf2eaacb1a8f2d295f9285cb1b129a412376762fcae3b13e27d1644a88f/advertools-0.7.4-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "a2d71b18bb4704a587c05c309b067df6", "sha256": "b7191f9864cd5ceb69f8ed1b749e641937781ac6aae94f97c0aa865295073ab0" }, "downloads": -1, "filename": "advertools-0.7.4.tar.gz", "has_sig": false, "md5_digest": "a2d71b18bb4704a587c05c309b067df6", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 217381, "upload_time": "2019-08-16T21:09:20", "url": "https://files.pythonhosted.org/packages/16/4c/6e3702102e3822895051457420b0adcb1dbc7f022c86240be3ed64aa4aec/advertools-0.7.4.tar.gz" } ] }