All Projects → jackm → kijiji-manager

jackm / kijiji-manager

Licence: MIT license
App for viewing, posting, reposting, and deleting your Kijiji ads

Programming Languages

python
139335 projects - #7 most used programming language
HTML
75241 projects
CSS
56736 projects
Dockerfile
14818 projects

Projects that are alternatives of or similar to kijiji-manager

lrkFM
Awesome, (ad) free, open source file manager for Android
Stars: ✭ 44 (+4.76%)
Mutual labels:  manager, ad
ovh-manager-dedicated
[DEPRECATED] — OVHcloud Control Panel Dedicated UI — Official Repository
Stars: ✭ 12 (-71.43%)
Mutual labels:  manager
Yadm
Yet Another Dotfiles Manager
Stars: ✭ 2,982 (+7000%)
Mutual labels:  manager
selectmanager
android select manager library
Stars: ✭ 15 (-64.29%)
Mutual labels:  manager
Example Bot
[WIP] An A-Z example of a PHP Telegram Bot.
Stars: ✭ 211 (+402.38%)
Mutual labels:  manager
flavours
🎨💧 An easy to use base16 scheme manager that integrates with any workflow.
Stars: ✭ 331 (+688.1%)
Mutual labels:  manager
Seo Manager
Seo Manager Package for Laravel ( with Localization )
Stars: ✭ 192 (+357.14%)
Mutual labels:  manager
Ffast-Java
Ffast 基于Srping boot + Mybatis Plus后台管理系统前后分离快速开发解决方案
Stars: ✭ 104 (+147.62%)
Mutual labels:  manager
ME3ModManager
Legacy mod manager for Mass Effect 3 (superceded by ME3Tweaks Mod Manager)
Stars: ✭ 17 (-59.52%)
Mutual labels:  manager
Todokit
TodoKit - A beautiful bug and issue tracking software.
Stars: ✭ 253 (+502.38%)
Mutual labels:  manager
Gitstars
Github Stars Repositories Manager
Stars: ✭ 253 (+502.38%)
Mutual labels:  manager
Lwrb
Lightweight generic ring buffer manager library
Stars: ✭ 215 (+411.9%)
Mutual labels:  manager
civet
一款类似Eagle的,基于electron-vue及C++开发的本地图片素材管理软件。An Image management software.
Stars: ✭ 164 (+290.48%)
Mutual labels:  manager
Cluster Lifecycle Manager
Cluster Lifecycle Manager (CLM) to provision and update multiple Kubernetes clusters
Stars: ✭ 200 (+376.19%)
Mutual labels:  manager
Message-Manager-Bot
A Telegram Message Manager Bot by @AbirHasan2005
Stars: ✭ 32 (-23.81%)
Mutual labels:  manager
Cgru
CGRU - AFANASY
Stars: ✭ 197 (+369.05%)
Mutual labels:  manager
Redis Manager
Integrates your Laravel application with a redis manager
Stars: ✭ 245 (+483.33%)
Mutual labels:  manager
lefthook
Fast and powerful Git hooks manager for any type of projects.
Stars: ✭ 2,845 (+6673.81%)
Mutual labels:  manager
Cheat-Sheet---Active-Directory
This cheat sheet contains common enumeration and attack methods for Windows Active Directory with the use of powershell.
Stars: ✭ 154 (+266.67%)
Mutual labels:  ad
airad
Beego based Restful API service
Stars: ✭ 63 (+50%)
Mutual labels:  ad

Kijiji Manager

Kijiji Manager app for viewing, posting, reposting, and deleting your Kijiji ads.

Built using the Flask framework with Python 3.7+. Completely API driven, with no web scraping. Runs a local webserver which provides the web user interface.

Kijiji Manager is able to handle all types of ads under every Kijiji category (although not every ad type has been extensively tested).

If you find any bugs with posting ads, please create a new issue to report it.

Requirements

Kijiji Manager requires Python 3.7+. Most manual testing is done on Python 3.7.

Minimum dependencies

  • Flask
  • Flask-WTF
  • Flask-Login
  • Flask-Executor
  • WTForms
  • httpx
  • xmltodict
  • is-safe-url
  • phonenumbers
  • pgeocode

Installation

  1. Install from source
    1. Clone this repository
      git clone https://github.com/jackm/kijiji-manager.git
      cd kijiji-manager
      
    2. Create a new virtualenv (optional but highly recommended)
      python3 -m venv venv
      source venv/bin/activate
      
      • When using a virtualenv, you must source the venv/bin/activate script each time you start a new shell, otherwise the installed Python packages will not be available
      • If using a Debian based Linux distro, and the venv Python library is not found or if there is an error about missing ensurepip, you will have to apt install python3-venv first
      • If using Windows, you may have to use the py command in place of python or python3
      • If using Windows, the activate script will be at venv/Scripts/Activate instead
      • See the Python virtual environments tutorial for more information
    3. Install the kijiji-manager package from the current directory
      pip install .
  2. Copy the sample config file at kijiji_manager/kijiji-manager-sample.cfg and rename it to kijiji-manager.cfg, putting it in the instance folder
    • Create a folder named instance at the root of this repository if it does not exist
  3. Edit the secret key variable on the first line in instance/kijiji-manager.cfg to a random value
    • To generate a random value you can run the following and copy the output:
      python -c "import secrets; print(secrets.token_urlsafe(16))"
  4. Run the app from a shell/terminal: python -m kijiji_manager or kijiji-manager -c instance/kijiji-manager.cfg
    • Append --help to see all possible command line arguments
  5. Open a browser and go to http://localhost:5000/ or http://127.0.0.1:5000/
    • Cookies must be enabled in order to log in
  6. Login using an existing Kijiji account
    • You must register for a new account on kijiji.ca if you do not yet have one

For all subsequent runs, start the app again using python -m kijiji_manager or kijiji-manager -c instance/kijiji-manager.cfg and then go to the web interface in your browser. You can also leave the app running in the terminal if you wish. No background HTTP calls are made unless you refresh or load new pages.

Command line arguments

usage: kijiji-manager [-h] [-c CONFIG] [-b BIND] [-p PORT] [-d]

optional arguments:
  -h, --help            show this help message and exit
  -c CONFIG, --config CONFIG
                        path to config file
  -b BIND, --bind BIND  interface to bind to (default: localhost)
  -p PORT, --port PORT  port to bind to (default: 5000)
  -d, --debug           enable debugging

Default form values

Default values for certain form fields can be chosen by adding any of the following variables to their instance/kijiji-manager.cfg config file:

  • DEFAULT_AD_TITLE
  • DEFAULT_AD_DESCRIPTION
  • DEFAULT_AD_PRICE
  • DEFAULT_POSTAL_CODE
  • DEFAULT_FULL_ADDRESS
  • DEFAULT_PHONE
  • DEFAULT_LOCATION2_CONTAINS
    • Select second location tier by checking if location label contains given string value; case-insensitive
  • DEFAULT_LOCATION3_CONTAINS
    • Select third location tier (if required) by checking if location label contains given string value; case-insensitive

Note that these config values are only read once during startup - you will need to restart the app for any changes to take effect.

e.g.

DEFAULT_AD_TITLE = 'This is a test ad title'
DEFAULT_AD_DESCRIPTION = 'This is a test ad description'
DEFAULT_AD_PRICE = 149.99
DEFAULT_POSTAL_CODE = 'A1A 1A1'
DEFAULT_FULL_ADDRESS = '123 Main St.'
DEFAULT_PHONE = '555-5555'
DEFAULT_LOCATION2_CONTAINS = 'Toronto'
DEFAULT_LOCATION3_CONTAINS = 'Markham'

Docker container

A Dockerfile is provided as well as a docker-compose.yml file to allow running this app within a Docker container. At minimum this method will require Docker to be installed.

Using this method does not require installing any Python packages locally - the whole app will be installed and run within an isolated container.

You should still create a instance/kijiji-manager.cfg file containing a randomly generated secret key within the instance folder (steps 2 and 3 of Installation). By default, the web interface will still be reachable at http://localhost:5000/ or http://127.0.0.1:5000/.

If you want to provide a custom config file path other than instance/kijiji-manager.cfg, this can be done by setting the CONFIG_FILE environment variable when running the container.

Docker Compose

Docker Compose is an additional tool that can be used to easily deploy app containers. In this case, Docker Compose is used to automatically build and run the app container.

Run docker-compose up from the root of this repository.

If changes are made to the kijiji_manager package, you will have to run docker-compose up --build instead to force rebuild the container image.

Without Docker Compose

If you do not want to use Docker Compose, you can build the container image and then run the container using the following commands from the root of this repository:

docker build -t kijiji-manager .
docker run --rm --name kijiji-manager -p 5000:80 -v "$(pwd)"/instance:/app/instance kijiji-manager

Append the --detach option to the docker run command to run the container in the background (detached mode).

Screenshots

Login page

Home page

Show ad page

Post ad step 1

Post ad step 2

Credits

Many of the core architecture concepts have been borrowed from the Kijiji-Reposter project. Many thanks to rybodiddly for the work they have done, especially on the Kijiji API.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].