Skip to content

Instantly share code, notes, and snippets.

View rinchik's full-sized avatar
🎯
Focusing

rinchik rinchik

🎯
Focusing
View GitHub Profile
@rinchik
rinchik / collatz2.js
Created December 31, 2016 16:48
Collatz Conjecture with JavaScript: binary tree as an array
function collatz(max) {
let tree = [1];
function calculate(parent, num) {
if (tree.length >= max) {
return;
}
const leftChild = 2*parent+1;
@rinchik
rinchik / collatz1.js
Last active December 31, 2016 16:35
Collatz Conjecture with JavaScript: Simple link-less levels
function collatz(maxLevels){
let levels = [[1]]
while (levels.length < maxLevels) {
let level = [];
levels[levels.length-1].forEach(function(num){
const mod6 = ((num-4)%6);
const odd = (num-1)/3;
if (!mod6 && odd != 1) {
level.push(odd)
}
@rinchik
rinchik / Scanner.py
Last active October 15, 2016 17:36
Script walks directories recursively, gets filenames and sends request to OMDb's API and saves the result into result.json
import os
import json
import urllib2
import re
class Scanner:
result = []
driver = None
movies_directory = 'Movies'
@rinchik
rinchik / Scanner.py
Last active October 15, 2016 17:23
Method for getting movie information from http://www.omdbapi.com/
def get_movie_info(self, movie):
match = re.search('\d{4}', movie['file'])
year = match.group(0).strip().replace(' ', '%20') if match else ''
title = movie['file'].replace(year, '').strip().replace(' ', '%20') if match else movie['file'].strip().replace(' ', '%20')
request = urllib2.urlopen(self.omdb+'?t='+title+'&y='+year+'&r=json').read()
movie_object = json.loads(request, object_hook=self.ascii_encode_dict)
movie_object['File'] = movie['file']
movie_object['filePath'] = movie['path']
@rinchik
rinchik / Scanner.py
Created October 15, 2016 15:46
Script that walk directory recursively and grabs file names
class Scanner:
movies = []
movies_directory = ''
def __init__(self):
self.get_file_names()
def get_file_names(self):
for dir_name, sub_dir_list, file_list in os.walk(self.movies_directory):
@rinchik
rinchik / CapitalOneInvestingNotifications.py
Created July 3, 2016 17:53
Python and Selenium script for checking and notifying about recent transactions
from selenium import webdriver
from twilio.rest import TwilioRestClient
class Dividends:
driver = None
capital_url = 'https://www.capitaloneinvesting.com/'
username = 'capital one investing username'
password = 'capital one investing password'
@rinchik
rinchik / CellIterator.py
Created July 3, 2016 16:44
Method that iterates over cells in Capital One investment Transaction History.
def process_transactions(self):
print "Processing transactions ...."
transaction_table = self.driver.find_element_by_css_selector('#TransactionHistoryList tbody')
rows = transaction_table.find_elements_by_css_selector('tr')
for row in rows:
cells = row.find_elements_by_css_selector('td')
print cells[0].text + ' ' + cells[2].text + ' ' + cells[6].text
print "Done."
@rinchik
rinchik / LoadTransactionsMethod.py
Created July 3, 2016 16:10
Method that navigates to the Transactions History in Capital One investing after login
def load_transactions(self):
print "Loading transactions ..."
transactions_link = self.driver.find_element_by_css_selector('#ctl00_ctl00_header_ctl19')
transactions_link.click()
self.screenshot('transactions.png')
print "Done."
@rinchik
rinchik / CapitalOneInvestingSeleniumLoging.py
Last active May 12, 2018 13:31
Capital One Investing login from the home page method
def login(self):
print 'Login ...'
self.driver.get(self.capital_url) # capital_url - Capital One Investing home page url
username_field = self.driver.find_element_by_css_selector('input#widget_signInUsername')
username_field.clear() # clear() is required for their form or send_key() below will fail
username_field.send_keys(self.username)
password_field = self.driver.find_element_by_css_selector('input#widget_signInPassword')
password_field.clear()
password_field.send_keys(self.password)
submit = self.driver.find_element_by_css_selector('#widget > div.SignInButtonWrapper > div.SignIn > a')
@rinchik
rinchik / medium.js
Created June 25, 2016 20:21
Medium Stats page DOM manipulation for the Chrome Extension
chrome.storage.local.get("medium_views", function(items) {
var viewsStorage = items["medium_views"] || {};
var viewsDOM = getViewsFromDOM();
for (var title in viewsDOM) {
if (viewsStorage[title] && viewsStorage[title] != viewsDOM[title]) {
updateDOM(title, viewsStorage[title]);
}
}