Filter Angka dari String di Python3

Ingin mendapat nilai digit (angka) dari sebuah string? Jangan terburu-buru pakai regex, di Python ada kok built-in function untuk itu… Continue reading “Filter Angka dari String di Python3”

Advertisements

Belajar Menerapkan Flask Configuration

Kondisi:

Server:

menggunakan mongodb authentication

Localhost:

mongodb tanpa authentication

Awalnya cukup merepotkan, karena harus melakukan hardcode, namun setelah baca-baca lagi, dokumentasi, ada teknik konfigurasi yang manjur.

app 
    --- __init__.py
    --- views.py
    --- config/
        --- config.py
        --- __init__.py

Didalam config.py, masukkan konfig berikut:

class Config(object):
    DEBUG = False

class ProductionConfig(Config):
    MONGODB_USERNAME = "username"
    MONGODB_PASSWORD = "password"

class DevelopmentConfig(Config):
    DEBUG = True

class TestingConfig(Config):
    TESTING = True

Kemudian di file __init__.py yang ada di direktori app, tambahkan baris berikut:

app.config.from_object('app.config.config.ProductionConfig')

Biar lebih modular lagi, saya disini menggunakan python-decouple, dan menambahkan di berkas .env saya

ENVIRON=app.config.config.ProductionConfig

Sehingga baris yang kita tambahkan di berkas __init__.py di direktori app tadi, berubah menjadi:

from decouple import config


app.config.from_object(config("ENVIRON"))

Tentunya Anda butuh menambahkan library python-decouple terlebih dahulu:

pip install python-decouple

Dan… success… Meski begitu, saya kurang tau apa ini termasuk best practice apa bukan, mohon bimbingan dan pencerahan dari pembaca sekalian..

 

Terima kasih..

 

Data DateTime di MongoDB Tanpa MicroSecond

Kalau di MySQL, ketika insert datetime dengan format

datetime.datetime.now()

maka data yang masuk adalah tahun bulan hari jam menit detik” tanpa microsecond. Hal ini berbeda ketika kita memasukkan format datetime yang sama ke MongoDB, secara otomatis, waktu microsecond ikut tercatat. Bagaimana cara biar microsecond tidak usah ikut tercatat?

datetime.datetime.now().replace(microsecond=0)

Otomatis, data datetime akan masuk ke mongodb tanpa microsecond.

 

 

Posting ke WordPress Menggunakan Python WordPress XMLRPC

Berikut code snippet untuk melakukan posting ke WP:

from wordpress_xmlrpc import Client, WordPressPost
from wordpress_xmlrpc.methods.posts import GetPosts, NewPost
from wordpress_xmlrpc.methods.users import GetUserInfo
from wordpress_xmlrpc.methods import posts


wp = Client("http://localhost/xmlrpc.php", "admin", "admin")
# posts = wp.call(GetPosts())
# print(posts)
# users = wp.call(GetUserInfo())
# print(users)

post = WordPressPost()
post.title = "My new python title"
post.content = "This is the body of my new post."
post.terms_names = {
 "post_tag": ["test", "firstpost"],
 "category": ["Introductions", "Tests"]
 }
post.id = wp.call(NewPost(post))

post.post_status = "publish"
wp.call(posts.EditPost(post.id, post))

Kenapa wordpress? Karena platform ini terkenal SEO friendly.. Tinggal bagaimana kreativitas kita aja…

Mengubah Jam Server ke Jam Lokal

Mungkin judul inggrisnya “how to convert server time to local time zone?”. Yak kurang lebih begitu… Bagaimana caranya?

import arrow
import pytz
from datetime import datetime

def to_local_tz(s):
    """Convert UTC to local timezone (Asia/Jakarta)."""
    try:
        dt_str = datetime.strftime(s, "%Y-%m-%d %H:%M:%S")
        dt_arr = arrow.Arrow.strptime(dt_str, "%Y-%m-%d %H:%M:%S")
        return dt_arr.to("Asia/Jakarta").naive
    except Exception as e:
        pass

Selamat mencoba…

MySQL di Python3

1200px-MySQL.svg

Jarang banget saya menggunakan engine database yang satu ini, seringnya menggunakan engine NoSQL seperti mongo. Namun, kali ini beda, karena project ini tuntutan klien, dan klien familiar dengan MySQL ya sudah…

Di sini saya menggunakan Python3, library yang saya butuhkan:

  • mysqlclient
  • sqlalchemy
  • sqlalchemy_utils

Saya menggunakan ORM (sqlalchemy) untuk mempermudah kerja, daripada harus menulis raw query syntax, so painful…

Berikut ini contoh kode membuat database dan tabel:

from sqlalchemy import create_engine, MetaData
from sqlalchemy_utils import database_exists, create_database
from sqlalchemy import Column, DateTime, String, Integer, func
from sqlalchemy.ext.declarative import declarative_base

Base = declarative_base()

# create db if not exist
engine = create_engine("mysql://root:@localhost/subdhunter")
if not database_exists(engine.url):
    create_database(engine.url)

# create db model
class Domain(Base):
    __tablename__ = 'domain'
    id= Column(Integer, primary_key=True)
    domain_name = Column(String(100))
    domain_title = Column(String(250))
    domain_status = Column(Integer)
    real_domain_name = Column(String(100))
    created = Column(DateTime, default=func.now())

# create table
from sqlalchemy.orm import sessionmaker
session = sessionmaker()
session.configure(bind=engine)
Base.metadata.create_all(engine)

sdasd

Scraping Tokopedia Menggunakan Python Feedparser

Kali ini saya akan mencontohkan bagaimana kita bisa membuat scraper Tokopedia hanya dengan memanfaatkan Feed URL. Tokopedia memiliki Feed URL untuk setiap kategori yang mereka punya, sebagai contoh kategori Fashion Anak, URL nya adalah:

https://www.tokopedia.com/feed?sc=78

Dengan memanfaatkan library feedparser di Python, kita bisa dengan mudah melakukan scraping terhadap produk-produk terbaru dari Tokopedia. Berikut ini contoh kode-nya:

import feedparser
url = "https://www.tokopedia.com/feed?sc=78"
data = feedparser.parse(url)
data = data['entries']

# selanjutnya tinggal looping, misal kita ingin mendapatkan title:

for i in data:
    print(i['title'])

Jika ingin dikembangkan lagi, kita dapat menggabungkan kode di atas dengan web framework misal Flask atau Django, mongodb untuk menyimpan data, lakukan markup terhadap harga, dan BOOM! Jadilah sebuah aplikasi web dropship instan!!!

Preview Web Dropship Tokopedia Instan

Screen Shot 2017-08-09 at 12.25.04 PM