Skip to content

Instantly share code, notes, and snippets.

View cyrillsemenov's full-sized avatar
🦧
Anxious

cyrillsemenov

🦧
Anxious
View GitHub Profile
@cyrillsemenov
cyrillsemenov / format.js
Created April 11, 2024 14:49
Format JS
String.prototype.format = String.prototype.format ||
function () {
"use strict";
var str = this.toString();
if (arguments.length) {
var t = typeof arguments[0];
var key;
var args = ("string" === t || "number" === t) ? Array.prototype.slice.call(arguments) : arguments[0];
for (key in args) {
@cyrillsemenov
cyrillsemenov / transcript.py
Created November 22, 2023 22:12
Convert csv to text or srt like Premiere tracscript wants
"""
Convert csv to text or srt like Premiere tracscript wants
"""
import csv
def convert_csv_to_text(csv_filename, text_filename):
with open(csv_filename, 'r') as csv_file, open(text_filename, 'w') as text_file:
csv_reader = csv.reader(csv_file)
next(csv_reader) # Skip the header row
for row in csv_reader:
@cyrillsemenov
cyrillsemenov / ae_pie_v1.js
Created August 5, 2023 15:23
Generate pie chart in After effects using createPath() expression
const r = effect("Radius")("Slider");
const progress = Math.max(Math.min(effect("Completion")("Slider"), 1), 0);
const ratio = 0.551915024494;
const t = r*ratio;
const points = [[r,0],[0,r],[-r,0],[0,-r],[r,0]];
const inTangents = [[0,t],[-t,0],[0,-t],[t,0],[0,0]];
const outTangents = [[0,0],[t,0],[0,t],[-t,0],[0,-t]];
@cyrillsemenov
cyrillsemenov / scroll.js
Created April 8, 2023 17:25
Scroll to position from the start of page
const sleep = ms => new Promise(r => setTimeout(r, ms));
async function animateScroll(dest, easeAmt) {
window.scroll(0,0);
let easeIn = (p) => p < 0.5 ? Math.pow(p*2, easeAmt)/2 : p;
let easeOut = (p) => p > 0.5 ? (2 - Math.pow(2 - p*2, easeAmt))/2 : p;
await sleep(1000);
for (let i = 0; i < 1; i+=0.001) {
let progress = easeIn(easeOut(i));
window.scroll(0, dest*progress);
@cyrillsemenov
cyrillsemenov / userscipt.js
Last active March 16, 2023 17:08
Get all comments from GDoc in right order
// Step 1: Export doc as HTML
// Step 2: open html in browser
// Step 3: run this script in developer console
// Step 4: copy res object, convert it to csv or use as is
// It could (and should) be easily converted to python script
const REGEX = {
"links": /https?:\/\/(?:www\.)?(?:[-a-zA-Z0-9@:%._\+~#=]{2,256}\.[a-z]{2,6}\b)*(?:\/[\/\d\w\.-]*)*(?:[\?])*(?:[-\w.\/:}{=?!@#$%^&*()_+<>]+)/gmi,
"timecodes": /(?:\d?\d[:\-–—]\d\d) ?[\-–—]? ?(?:\d?\d[:\-–—]\d\d)?(?: ?[+:\-–—] ?(?:\d?\d[:\-–—]\d\d) ?[\-–—]? ?(?:\d?\d[:\-–—]\d\d)?)?/gi,
};
@cyrillsemenov
cyrillsemenov / post-merge
Created January 28, 2023 16:05
.git/hooks/post-merge for stop and rerun application on push
#!/bin/sh
cd ~/<work_dir_here>
script=main.py
pid=$(ps auxwww | grep $script | grep -v grep | awk '{print $2}')
kill -9 $pid
pip install -r requirements.txt
nohup python -u $script > script.log 2>&1 &
@cyrillsemenov
cyrillsemenov / fb_comments.js
Created January 25, 2023 09:48
This is how you can try to scrape all comments from FB post just using console
let comments = document.querySelectorAll('[role="article"]');
let result = "";
for (let i = 1; i < comments.length-2; i++) {
let data = comments[i].querySelectorAll('span');
result = result + `${i}, \"Name: ${data[5].textContent}\", \"Comment(can be broken): ${data[6].textContent}\",\"Full text: ${data.textContent}\"\n`;
}
console.log(result);
@cyrillsemenov
cyrillsemenov / wordleSuggestions.js
Last active February 14, 2022 17:54
Three guesses
let regex = /(?<=Ma=\[).+(?=\]\,Oa)/gm,
alphabet = {},
wordsList = [],
weights = {};
// Каждый день у игры новый хэш, его легко достать из объекта window,
// затем в тексте файла нужно найти переменную со списком слов
// и превратить ее из текста в массив
fetch(`main.${window.wordle.hash}.js`)
.then(response => response.text())
@cyrillsemenov
cyrillsemenov / CSS
Last active November 8, 2021 12:40
Script for "User JavaScript and CSS" Chrome extension
.float#pretty-button {
z-index: 2147483999;
position: fixed;
width: 60px;
height: 60px;
bottom: 30px;
right: 30px;
background-color: #00bcd4;
color:#fff;
border: none;