Commit 990292ab authored by angella's avatar angella
Browse files

Migrated to plugin_template

parent 0c8f6cc8
Showing with 607 additions and 958 deletions
+607 -958
venv/*
\ No newline at end of file
nbs/_test.ipynb
docs/public/
*.bak
.gitattributes
.last_checked
.gitconfig
*.bak
*.log
*~
~*
_tmp*
tmp*
tags
pod_docker
tools/example_run.sh
# Byte-compiled / optimized / DLL files
__pycache__/
.pytest_cache/
*.py[cod]
*$py.class
# C extensions
*.so
# Distribution / packaging
.Python
env/
build/
develop-eggs/
dist/
downloads/
eggs/
.eggs/
lib/
lib64/
parts/
sdist/
var/
wheels/
*.egg-info/
.installed.cfg
*.egg
/config/settings.py
# PyInstaller
# Usually these files are written by a python script from a template
# before PyInstaller builds the exe, so as to inject date/other infos into it.
*.manifest
*.spec
# Installer logs
pip-log.txt
pip-delete-this-directory.txt
# Unit test / coverage reports
htmlcov/
.tox/
.coverage
.coverage.*
.cache
nosetests.xml
coverage.xml
*.cover
.hypothesis/
# Translations
*.mo
*.pot
# Django stuff:
*.log
local_settings.py
# Flask stuff:
instance/
.webassets-cache
# Scrapy stuff:
.scrapy
# Sphinx documentation
docs/_build/
# PyBuilder
target/
# Jupyter Notebook
.ipynb_checkpoints
# pyenv
.python-version
# celery beat schedule file
celerybeat-schedule
# SageMath parsed files
*.sage.py
# dotenv
.env
# virtualenv
.venv
venv/
ENV/
# Spyder project settings
.spyderproject
.spyproject
# Rope project settings
.ropeproject
# mkdocs documentation
/site
# mypy
.mypy_cache/
.vscode
*.swp
# osx generated files
.DS_Store
.DS_Store?
.Trashes
ehthumbs.db
Thumbs.db
.idea
# pytest
.pytest_cache
# tools/trust-doc-nbs
docs_src/.last_checked
# link checker
checklink/cookies.txt
# .gitconfig is now autogenerated
.gitconfig
build/
builds/
dist/
/config/settings.py
\ No newline at end of file
FROM python:3.7 as twitter_importer
ENV DEBIAN_FRONTEND=noninteractive
FROM python:3.8-slim as base
RUN apt-get update && apt-get install -y libgl1-mesa-glx
WORKDIR /usr/src/twitter_importer
# Setup env
ENV PYTHONDONTWRITEBYTECODE 1
ENV PYTHONFAULTHANDLER 1
# In order to leverage docker caching, copy only the minimal
# information needed to install dependencies
RUN apt-get update
RUN apt-get install ffmpeg libsm6 libxext6 python3 python-dev python-pip build-essential git -y
COPY ./settings.ini ./settings.ini
COPY ./setup.py ./setup.py
RUN touch ./README.md
FROM base AS python-deps
# Install dependencies
COPY ./setup.py ./setup.py
RUN python3 ./setup.py egg_info
# Install pipenv and compilation dependencies
RUN apt-get update && apt-get install -y --no-install-recommends gcc
# Required for pymemri
RUN pip install fastprogress fastscript ipdb matplotlib nbdev==1.1.5 opencv-python requests tqdm tweepy
# Copy the real project-s sources (docker caching is broken from here onwards)
FROM python-deps as plugin-base
COPY ./MANIFEST.in ./MANIFEST.in
COPY ./README.md ./README.md
COPY ./twitter_importer ./twitter_importer
COPY ./nbs ./nbs
COPY ./config ./config
# Setup app
RUN mkdir /tmp/plugin
WORKDIR /tmp/plugin
# Build the final image
# Install itself
COPY . .
RUN pip install .
RUN pip3 install --editable .
# CMD ["python3", "twitter_importer/twitter.py"]
# Install this module
# RUN pip install .
ENTRYPOINT [ "python", "./scripts/main.py" ]
\ No newline at end of file
This diff is collapsed.
include settings.ini
include LICENSE
include CONTRIBUTING.md
include README.md
recursive-exclude * __pycache__
.ONESHELL:
SHELL := /bin/bash
SRC = $(wildcard nbs/*.ipynb)
all: integrators docs
integrators: $(SRC)
nbdev_build_lib
touch integrators
sync:
nbdev_update_lib
docs_serve: docs
cd docs && bundle exec jekyll serve
docs: $(SRC)
nbdev_build_docs
touch docs
test:
nbdev_test_nbs
release: pypi
nbdev_conda_package
nbdev_bump_version
pypi: dist
twine upload --repository pypi dist/*
dist: clean
python setup.py sdist bdist_wheel
clean:
rm -rf dist
\ No newline at end of file
# Twitter importer plugin
## About
This plugin is designed on top of the [Twitter API](https://developer.twitter.com).
The twitter API uses OAuth 1.0a and OAuth 2.0 Bearer Token. In this plugin, we are using OAuth 1.0a which is documented [here](https://developer.twitter.com/en/docs/authentication/oauth-1-0a).
......@@ -157,12 +155,6 @@ These are fetched everytime the username is given. However, if a follower or fri
Tweets are fetched from the last tweet id saved for the mentioned user. E.g. If a following's latest tweet in the pod is with id 3, then tweets fetched will be greater that id 3. The same applies for the user's tweets
## Plugin design
The plugin is made of two classes i.e.
- TwitterClient which handles twitter authentication and retrieving data from twitter
- TwitterImporter which handles formating the retrieved data and saving it to the pod
## Duration for running the plugin
The amount of time it takes to import the data varies depending on the amount of data to be fetched and the internet speed. Typically this can take between 30 seconds (for records less than 10) to 20 minutes (for 200 records plus) in case of no ratelimit interruption. Records refers to each data to fetch. For example 200 followings, 200 followings, 200 tweets of each following, 200 tweets of the user
......@@ -171,6 +163,9 @@ The amount of time it takes to import the data varies depending on the amount of
- The plugin does not fetch user direct messages.
- The plugin does not support tweeting, commenting, retweeting on the speficied twitter handle account.
## Future improvements
The plugin will with the support of pymemri save videos associated to tweets that have been imported.
## Limitations
Depending on your subscription category for the twitter developer account, you will have limitations to how many tweets you can fetch per month. Read more about it [here](https://developer.twitter.com/en/docs/twitter-api/v1/tweets/timelines/faq#:~:text=What%20are%20the%20new%20rate,auth%20and%20app%2Dauth%20requests.). Ensure to [log into](https://developer.twitter.com/en/portal/dashboard) your developer account and know how much you can fetch.
......@@ -180,70 +175,51 @@ Twitter also has rate limits per minute for each subscription level for a given
## How to run project
- First, you need to create an account with twitter developer [here](https://developer.twitter.com/en/docs/twitter-api/getting-started/getting-access-to-the-twitter-api)
- Clone this repository
- Download [Anaconda](https://www.continuum.io/downloads). This project is using anaconda 3.5.
- Install the version of Anaconda which you downloaded, following the instructions on the download page.
### Install with pip
To install the Python package, and correctly setup nbdev for development run:
Run **git init** to initialize git hooks in your project folder then run
pip install -e . && nbdev_install_git_hooks
### Install with Docker
The importer can be invoked by the Pod by launching a Docker container. To build the image for this container, run:
docker build -t twitter_importer .
### Run notebook
To run the notebook. cd into the project directory and run
jupyter notebook
### To run the importer plugin
Once you have a developer account, get your api credentials listed below
- ACCESS_TOKEN
- ACCESS_SECRET
- CONSUMER_KEY
- CONSUMER_SECRET
#### Note that these maybe named differently depending on how recent your account is
- Create twitter developer account. First, you need to create an account with twitter developer [here](https://developer.twitter.com/en/docs/twitter-api/getting-started/getting-access-to-the-twitter-api)
- Clone this repository
Once you have a developer account, get your api credentials listed below. Go to /config and create a new `settings.py` file. Add your twitter developer account credentials as illustrated below.
path /config/settings.py
tokens = {
"ACCESS_TOKEN": "YOUR_ACCESS_TOKEN",
"ACCESS_SECRET": 'YOUR_"ACCESS_SECRET"',
"CONSUMER_KEY": 'YOUR_CONSUMER_KEY',
"CONSUMER_SECRET": 'YOUR_CONSUMER_SECRET'
}
**Note: These maybe named differently depending on how recent your account is**
Use this to guide you on the naming
##### Client credentials:
###### Client credentials:
App Key === API Key === Consumer API Key === Consumer Key === Customer Key === oauth_consumer_key
App Key Secret === API Secret Key === Consumer Secret === Consumer Key === Customer Key === oauth_consumer_secret
Callback URL === oauth_callback
##### Token credentials:
###### Token credentials:
Access token === Token === resulting oauth_token
Access token secret === Token Secret === resulting oauth_token_secret
Open TwitterImporter.ipynb and run the cells. Ensure that you have a stable internet connection for best results
### Run in Docker
### To run tests
The importer can be invoked by the Pod by launching a Docker container. To build the image for this container, run:
docker build -t twitter_importer .
To test notebooks, run:
nbdev_test_nbs
### Locally
To run the plugin, after starting the POD (on dev branch) and building this docker image, run the following commands:
## Tools
pip install poetry #Installs poetry
poetry install #Creates virtualenv and installs dependencies
poetry shell #Enters newly created virtualenv
python scripts/client-simulator.py {POD_URL} twitter_importer
### Nbdev & Jupyter Notebooks
The Python integrators are written in nbdev (video). With nbdev, it is encouraged to write code in
Jupyter Notebooks. Nbdev syncs all the notebooks in /nbs with the python code in /integrators. Tests are written side by side with the code in the notebooks, and documentation is automatically generated from the code and markdown in the notebooks and exported into the /docs folder. Check out the nbdev quickstart for an introduction, watch the video linked above, or see the nbdev documentation for a all functionalities and tutorials.
### To run tests
pytest ./tests/*
## Tools
### Tweepy
The plugin is accessing the twitter API using tweepy an easy-to-use Python library for accessing the Twitter API
......
<svg xmlns="http://www.w3.org/2000/svg" width="81" height="20"><linearGradient id="a" x2="0" y2="100%"><stop offset="0" stop-color="#bbb" stop-opacity=".1"/><stop offset="1" stop-opacity=".1"/></linearGradient><rect rx="3" width="81" height="20" fill="#555"/><rect rx="3" x="37" width="44" height="20" fill="#e05d44"/><path fill="#e05d44" d="M37 0h4v20h-4z"/><rect rx="3" width="81" height="20" fill="url(#a)"/><g fill="#fff" text-anchor="middle" font-family="DejaVu Sans,Verdana,Geneva,sans-serif" font-size="11"><text x="19.5" y="15" fill="#010101" fill-opacity=".3">build</text><text x="19.5" y="14">build</text><text x="58" y="15" fill="#010101" fill-opacity=".3">failing</text><text x="58" y="14">failing</text></g></svg>
\ No newline at end of file
<svg xmlns="http://www.w3.org/2000/svg" width="90" height="20"><linearGradient id="a" x2="0" y2="100%"><stop offset="0" stop-color="#bbb" stop-opacity=".1"/><stop offset="1" stop-opacity=".1"/></linearGradient><rect rx="3" width="90" height="20" fill="#555"/><rect rx="3" x="37" width="53" height="20" fill="#4c1"/><path fill="#4c1" d="M37 0h4v20h-4z"/><rect rx="3" width="90" height="20" fill="url(#a)"/><g fill="#fff" text-anchor="middle" font-family="DejaVu Sans,Verdana,Geneva,sans-serif" font-size="11"><text x="19.5" y="15" fill="#010101" fill-opacity=".3">build</text><text x="19.5" y="14">build</text><text x="62.5" y="15" fill="#010101" fill-opacity=".3">passing</text><text x="62.5" y="14">passing</text></g></svg>
\ No newline at end of file
_site/
source "https://rubygems.org"
gem 'github-pages', group: :jekyll_plugins
# Added at 2019-11-25 10:11:40 -0800 by jhoward:
gem "nokogiri", "< 1.11.1"
gem "jekyll", ">= 3.7"
gem "kramdown", ">= 2.3.0"
gem "jekyll-remote-theme"
GEM
remote: https://rubygems.org/
specs:
activesupport (6.0.3.4)
concurrent-ruby (~> 1.0, >= 1.0.2)
i18n (>= 0.7, < 2)
minitest (~> 5.1)
tzinfo (~> 1.1)
zeitwerk (~> 2.2, >= 2.2.2)
addressable (2.7.0)
public_suffix (>= 2.0.2, < 5.0)
coffee-script (2.4.1)
coffee-script-source
execjs
coffee-script-source (1.11.1)
colorator (1.1.0)
commonmarker (0.17.13)
ruby-enum (~> 0.5)
concurrent-ruby (1.1.7)
dnsruby (1.61.5)
simpleidn (~> 0.1)
em-websocket (0.5.2)
eventmachine (>= 0.12.9)
http_parser.rb (~> 0.6.0)
ethon (0.12.0)
ffi (>= 1.3.0)
eventmachine (1.2.7)
execjs (2.7.0)
faraday (1.3.0)
faraday-net_http (~> 1.0)
multipart-post (>= 1.2, < 3)
ruby2_keywords
faraday-net_http (1.0.1)
ffi (1.14.2)
forwardable-extended (2.6.0)
gemoji (3.0.1)
github-pages (209)
github-pages-health-check (= 1.16.1)
jekyll (= 3.9.0)
jekyll-avatar (= 0.7.0)
jekyll-coffeescript (= 1.1.1)
jekyll-commonmark-ghpages (= 0.1.6)
jekyll-default-layout (= 0.1.4)
jekyll-feed (= 0.15.1)
jekyll-gist (= 1.5.0)
jekyll-github-metadata (= 2.13.0)
jekyll-mentions (= 1.6.0)
jekyll-optional-front-matter (= 0.3.2)
jekyll-paginate (= 1.1.0)
jekyll-readme-index (= 0.3.0)
jekyll-redirect-from (= 0.16.0)
jekyll-relative-links (= 0.6.1)
jekyll-remote-theme (= 0.4.2)
jekyll-sass-converter (= 1.5.2)
jekyll-seo-tag (= 2.6.1)
jekyll-sitemap (= 1.4.0)
jekyll-swiss (= 1.0.0)
jekyll-theme-architect (= 0.1.1)
jekyll-theme-cayman (= 0.1.1)
jekyll-theme-dinky (= 0.1.1)
jekyll-theme-hacker (= 0.1.2)
jekyll-theme-leap-day (= 0.1.1)
jekyll-theme-merlot (= 0.1.1)
jekyll-theme-midnight (= 0.1.1)
jekyll-theme-minimal (= 0.1.1)
jekyll-theme-modernist (= 0.1.1)
jekyll-theme-primer (= 0.5.4)
jekyll-theme-slate (= 0.1.1)
jekyll-theme-tactile (= 0.1.1)
jekyll-theme-time-machine (= 0.1.1)
jekyll-titles-from-headings (= 0.5.3)
jemoji (= 0.12.0)
kramdown (= 2.3.0)
kramdown-parser-gfm (= 1.1.0)
liquid (= 4.0.3)
mercenary (~> 0.3)
minima (= 2.5.1)
nokogiri (>= 1.10.4, < 2.0)
rouge (= 3.23.0)
terminal-table (~> 1.4)
github-pages-health-check (1.16.1)
addressable (~> 2.3)
dnsruby (~> 1.60)
octokit (~> 4.0)
public_suffix (~> 3.0)
typhoeus (~> 1.3)
html-pipeline (2.14.0)
activesupport (>= 2)
nokogiri (>= 1.4)
http_parser.rb (0.6.0)
i18n (0.9.5)
concurrent-ruby (~> 1.0)
jekyll (3.9.0)
addressable (~> 2.4)
colorator (~> 1.0)
em-websocket (~> 0.5)
i18n (~> 0.7)
jekyll-sass-converter (~> 1.0)
jekyll-watch (~> 2.0)
kramdown (>= 1.17, < 3)
liquid (~> 4.0)
mercenary (~> 0.3.3)
pathutil (~> 0.9)
rouge (>= 1.7, < 4)
safe_yaml (~> 1.0)
jekyll-avatar (0.7.0)
jekyll (>= 3.0, < 5.0)
jekyll-coffeescript (1.1.1)
coffee-script (~> 2.2)
coffee-script-source (~> 1.11.1)
jekyll-commonmark (1.3.1)
commonmarker (~> 0.14)
jekyll (>= 3.7, < 5.0)
jekyll-commonmark-ghpages (0.1.6)
commonmarker (~> 0.17.6)
jekyll-commonmark (~> 1.2)
rouge (>= 2.0, < 4.0)
jekyll-default-layout (0.1.4)
jekyll (~> 3.0)
jekyll-feed (0.15.1)
jekyll (>= 3.7, < 5.0)
jekyll-gist (1.5.0)
octokit (~> 4.2)
jekyll-github-metadata (2.13.0)
jekyll (>= 3.4, < 5.0)
octokit (~> 4.0, != 4.4.0)
jekyll-mentions (1.6.0)
html-pipeline (~> 2.3)
jekyll (>= 3.7, < 5.0)
jekyll-optional-front-matter (0.3.2)
jekyll (>= 3.0, < 5.0)
jekyll-paginate (1.1.0)
jekyll-readme-index (0.3.0)
jekyll (>= 3.0, < 5.0)
jekyll-redirect-from (0.16.0)
jekyll (>= 3.3, < 5.0)
jekyll-relative-links (0.6.1)
jekyll (>= 3.3, < 5.0)
jekyll-remote-theme (0.4.2)
addressable (~> 2.0)
jekyll (>= 3.5, < 5.0)
jekyll-sass-converter (>= 1.0, <= 3.0.0, != 2.0.0)
rubyzip (>= 1.3.0, < 3.0)
jekyll-sass-converter (1.5.2)
sass (~> 3.4)
jekyll-seo-tag (2.6.1)
jekyll (>= 3.3, < 5.0)
jekyll-sitemap (1.4.0)
jekyll (>= 3.7, < 5.0)
jekyll-swiss (1.0.0)
jekyll-theme-architect (0.1.1)
jekyll (~> 3.5)
jekyll-seo-tag (~> 2.0)
jekyll-theme-cayman (0.1.1)
jekyll (~> 3.5)
jekyll-seo-tag (~> 2.0)
jekyll-theme-dinky (0.1.1)
jekyll (~> 3.5)
jekyll-seo-tag (~> 2.0)
jekyll-theme-hacker (0.1.2)
jekyll (> 3.5, < 5.0)
jekyll-seo-tag (~> 2.0)
jekyll-theme-leap-day (0.1.1)
jekyll (~> 3.5)
jekyll-seo-tag (~> 2.0)
jekyll-theme-merlot (0.1.1)
jekyll (~> 3.5)
jekyll-seo-tag (~> 2.0)
jekyll-theme-midnight (0.1.1)
jekyll (~> 3.5)
jekyll-seo-tag (~> 2.0)
jekyll-theme-minimal (0.1.1)
jekyll (~> 3.5)
jekyll-seo-tag (~> 2.0)
jekyll-theme-modernist (0.1.1)
jekyll (~> 3.5)
jekyll-seo-tag (~> 2.0)
jekyll-theme-primer (0.5.4)
jekyll (> 3.5, < 5.0)
jekyll-github-metadata (~> 2.9)
jekyll-seo-tag (~> 2.0)
jekyll-theme-slate (0.1.1)
jekyll (~> 3.5)
jekyll-seo-tag (~> 2.0)
jekyll-theme-tactile (0.1.1)
jekyll (~> 3.5)
jekyll-seo-tag (~> 2.0)
jekyll-theme-time-machine (0.1.1)
jekyll (~> 3.5)
jekyll-seo-tag (~> 2.0)
jekyll-titles-from-headings (0.5.3)
jekyll (>= 3.3, < 5.0)
jekyll-watch (2.2.1)
listen (~> 3.0)
jemoji (0.12.0)
gemoji (~> 3.0)
html-pipeline (~> 2.2)
jekyll (>= 3.0, < 5.0)
kramdown (2.3.0)
rexml
kramdown-parser-gfm (1.1.0)
kramdown (~> 2.0)
liquid (4.0.3)
listen (3.4.0)
rb-fsevent (~> 0.10, >= 0.10.3)
rb-inotify (~> 0.9, >= 0.9.10)
mercenary (0.3.6)
mini_portile2 (2.5.0)
minima (2.5.1)
jekyll (>= 3.5, < 5.0)
jekyll-feed (~> 0.9)
jekyll-seo-tag (~> 2.1)
minitest (5.14.3)
multipart-post (2.1.1)
nokogiri (1.11.0)
mini_portile2 (~> 2.5.0)
racc (~> 1.4)
octokit (4.20.0)
faraday (>= 0.9)
sawyer (~> 0.8.0, >= 0.5.3)
pathutil (0.16.2)
forwardable-extended (~> 2.6)
public_suffix (3.1.1)
racc (1.5.2)
rb-fsevent (0.10.4)
rb-inotify (0.10.1)
ffi (~> 1.0)
rexml (3.2.4)
rouge (3.23.0)
ruby-enum (0.8.0)
i18n
ruby2_keywords (0.0.2)
rubyzip (2.3.0)
safe_yaml (1.0.5)
sass (3.7.4)
sass-listen (~> 4.0.0)
sass-listen (4.0.0)
rb-fsevent (~> 0.9, >= 0.9.4)
rb-inotify (~> 0.9, >= 0.9.7)
sawyer (0.8.2)
addressable (>= 2.3.5)
faraday (> 0.8, < 2.0)
simpleidn (0.1.1)
unf (~> 0.1.4)
terminal-table (1.8.0)
unicode-display_width (~> 1.1, >= 1.1.1)
thread_safe (0.3.6)
typhoeus (1.4.0)
ethon (>= 0.9.0)
tzinfo (1.2.9)
thread_safe (~> 0.1)
unf (0.1.4)
unf_ext
unf_ext (0.0.7.7)
unicode-display_width (1.7.0)
zeitwerk (2.4.2)
PLATFORMS
ruby
DEPENDENCIES
github-pages
jekyll (>= 3.7)
jekyll-remote-theme
kramdown (>= 2.3.0)
nokogiri (< 1.11.1)
BUNDLED WITH
2.1.4
---
title: Title
keywords: fastai
sidebar: home_sidebar
nb_path: "nbs/TwitterImporter.ipynb"
---
<!--
#################################################
### THIS FILE WAS AUTOGENERATED! DO NOT EDIT! ###
#################################################
# file to edit: nbs/TwitterImporter.ipynb
# command to build the docs after a change: nbdev_build_docs
-->
<div class="container" id="notebook-container">
{% raw %}
<div class="cell border-box-sizing code_cell rendered">
</div>
{% endraw %}
{% raw %}
<div class="cell border-box-sizing code_cell rendered">
</div>
{% endraw %}
{% raw %}
<div class="cell border-box-sizing code_cell rendered">
</div>
{% endraw %}
{% raw %}
<div class="cell border-box-sizing code_cell rendered">
<div class="output_wrapper">
<div class="output">
<div class="output_area">
<div class="output_markdown rendered_html output_subarea ">
<h2 id="TwitterImporter" class="doc_header"><code>class</code> <code>TwitterImporter</code><a href="https://gitlab.memri.io/memri/twitter_importer/tree/prod/twitter_importer/importer.py#L41" class="source_link" style="float:right">[source]</a></h2><blockquote><p><code>TwitterImporter</code>()</p>
</blockquote>
</div>
</div>
</div>
</div>
</div>
{% endraw %}
{% raw %}
<div class="cell border-box-sizing code_cell rendered">
</div>
{% endraw %}
</div>
baseurl: /twitter_importer/
collections:
tooltips:
output: false
company_name: memri
defaults:
- scope:
path: ''
type: pages
values:
comments: true
layout: page
search: true
sidebar: home_sidebar
topnav: topnav
- scope:
path: ''
type: tooltips
values:
comments: true
layout: page
search: true
tooltip: true
description: memri twitter importer, integrating your twitter information to memri
exclude:
- vendor
google_analytics: null
google_search: null
highlighter: rouge
host: 127.0.0.1
kramdown:
auto_ids: true
hard_wrap: false
input: GFM
syntax_highlighter: rouge
markdown: kramdown
output: web
plugins:
- jekyll-remote-theme
port: 4000
remote_theme: fastai/nbdev-jekyll-theme
repository: https://gitlab.memri.io/plugins/twitter/-/tree/dev
sidebars:
- home_sidebar
site_title: memri integrators
topnav_title: integrators
use_math: true
tip: '<div class="alert alert-success" role="alert"><i class="fa fa-check-square-o"></i> <b>Tip: </b>'
note: '<div class="alert alert-info" role="alert"><i class="fa fa-info-circle"></i> <b>Note: </b>'
important: '<div class="alert alert-warning" role="alert"><i class="fa fa-warning"></i> <b>Important: </b>'
warning: '<div class="alert alert-danger" role="alert"><i class="fa fa-exclamation-circle"></i> <b>Warning: </b>'
end: '</div>'
callout_danger: '<div class="bs-callout bs-callout-danger">'
callout_default: '<div class="bs-callout bs-callout-default">'
callout_primary: '<div class="bs-callout bs-callout-primary">'
callout_success: '<div class="bs-callout bs-callout-success">'
callout_info: '<div class="bs-callout bs-callout-info">'
callout_warning: '<div class="bs-callout bs-callout-warning">'
hr_faded: '<hr class="faded"/>'
hr_shaded: '<hr class="shaded"/>'
\ No newline at end of file
#################################################
### THIS FILE WAS AUTOGENERATED! DO NOT EDIT! ###
#################################################
# Instead edit ../../sidebar.json
entries:
- folders:
- folderitems:
- output: web,pdf
title: Overview
url: /
- output: web,pdf
title: Pod Client
url: pod.client.html
- output: web,pdf
title: ItemBase
url: itembase.html
output: web
title: Getting Started
- folderitems:
- output: web,pdf
title: Overview
url: importers.Importer.html
- output: web,pdf
title: EmailImporter
url: importers.EmailImporter.html
output: web
title: Importers
- folderitems:
- output: web,pdf
title: Overview
url: indexers.indexer.html
- output: web,pdf
title: GeoIndexer
url: indexers.GeoIndexer.html
subfolders:
- output: web
subfolderitems:
- output: web,pdf
title: Detecting and comparing faces
url: indexers.FaceRecognitionModel.html
- output: web,pdf
title: Clustering cropped faces
url: indexers.FaceClusteringIndexer.Models.html
- output: web,pdf
title: Faceclustering Indexer
url: indexers.FaceClusteringIndexer.indexer.html
- output: web,pdf
title: Photos & Utils
url: indexers.FacerecognitionIndexer.Photo.html
title: Facerecognition
- output: web
subfolderitems:
- output: web,pdf
title: Parser
url: indexers.NoteListIndexer.Parser.html
- output: web,pdf
title: Data
url: indexers.NoteListIndexer.NoteList.html
title: NoteListIndexer
output: web
title: Indexers
output: web
title: Sidebar
allowed-tags:
- getting_started
- navigation
topnav:
- title: Topnav
items:
- title: gitlab
external_url: https://gitlab.memri.io/memri/pyintegrators
#Topnav dropdowns
topnav_dropdowns:
- title: Topnav dropdowns
folders:
\ No newline at end of file
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment