Add requirements and update main.py
This commit is contained in:
parent
7c33c5eb27
commit
38200ef409
77
README.md
77
README.md
|
@ -1,5 +1,76 @@
|
||||||
# poweroffer
|
# Poweroffer
|
||||||
|
|
||||||
this simple program will allow you to not procrastinate and to have a break from the PC during the day :)
|
<p align="center">
|
||||||
|
<br>
|
||||||
|
<a href="https://github.com/archnotwindows/poweroffer/">
|
||||||
|
<img alt="Repo Size" src="https://img.shields.io/github/repo-size/archnotwindows/poweroffer?logo=github">
|
||||||
|
</a>
|
||||||
|
<a href="https://github.com/archnotwindows/poweroffer/issues">
|
||||||
|
<img alt="Issues" src="https://img.shields.io/github/issues/archnotwindows/poweroffer?logo=github">
|
||||||
|
</a>
|
||||||
|
<a href="https://github.com/archnotwindows/poweroffer/pulls">
|
||||||
|
<img alt="Pull requests" src="https://img.shields.io/github/issues-pr/archnotwindows/poweroffer?logo=github">
|
||||||
|
</a>
|
||||||
|
</p>
|
||||||
|
<p align="center">
|
||||||
|
<br>
|
||||||
|
<a href="https://github.com/archnotwindows/poweroffer/fork">
|
||||||
|
<img alt="Forks" src="https://img.shields.io/github/forks/archnotwindows/poweroffer?logo=github">
|
||||||
|
</a>
|
||||||
|
<a href="https://img.shields.io/github/stars/archnotwindows/poweroffer">
|
||||||
|
<img alt="Stars" src="https://img.shields.io/github/stars/archnotwindows/poweroffer?logo=github">
|
||||||
|
</a>
|
||||||
|
|
||||||
to see all the installation steps check the wiki session of this repository :)
|
Whith this simple python program you will be able to not procrastinate during the day in some sort of website (like Youtube) that you can choose! so try it out!!
|
||||||
|
## Getting Started
|
||||||
|
**WARNING!! to use this software you must use a linux distro and the Firefox web browser**
|
||||||
|
|
||||||
|
0 - Install **[Python](https://python.org)** on your machine. **Version 3.10 or higher is required!**
|
||||||
|
|
||||||
|
1 - Clone the repository on your machine.
|
||||||
|
|
||||||
|
2 - Put the poweroffer extracted folder in the Desktop
|
||||||
|
|
||||||
|
0 - Install tkinter with these commands "sudo apt-get install python3-tk" and "pip install tk"
|
||||||
|
|
||||||
|
1 - Install os,json and time ( but probably these libraries are already installed on your system)
|
||||||
|
|
||||||
|
2 - become a root user ( with " su " command and continue to do all the operations with root)
|
||||||
|
|
||||||
|
3 - Install lz4.block with this command "pip install lz4"
|
||||||
|
|
||||||
|
4 - download all the repository files and put the poweroffer folder in your desktop
|
||||||
|
|
||||||
|
5 - open a terminal emulator and write "crontab -e" ( if is your first time you may have to choose witch editor you wanna use)
|
||||||
|
|
||||||
|
6 - write at the end of the file this string " * * * * * /bin/bash /home/your-username/Desktop/poweroffer/executable.sh "
|
||||||
|
|
||||||
|
7 - close the editor and save the changes
|
||||||
|
|
||||||
|
8 - search for this file "recovery.jsonlz4" and copy it's path
|
||||||
|
|
||||||
|
9 - edit the main.py file and scroll down until you see this
|
||||||
|
|
||||||
|
![Istantanea_2022-07-21_14-07-03](https://user-images.githubusercontent.com/108471111/180209819-e4a4d0e0-80db-4a75-8689-e00b6b1ed44a.png)
|
||||||
|
|
||||||
|
|
||||||
|
10 - replace the selected area with the path you have copied
|
||||||
|
|
||||||
|
11 - exit from the root user and login to your everyday user
|
||||||
|
|
||||||
|
11 - open a terminal and run the index.py file using " python3 index.py " to execute the program ( use this command every time you wanna run my program :)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
## License
|
||||||
|
|
||||||
|
This project is licensed under either of:
|
||||||
|
- [GNU General Public License v3.0](https://www.gnu.org/licenses/gpl-3.0.html)
|
||||||
|
|
||||||
|
## Contact
|
||||||
|
|
||||||
|
[![gmail](https://img.shields.io/badge/Gmail-D14836?style=for-the-badge&logo=Gmail&logoColor=white)](mailto:lorenzo020406@gmail.com)
|
||||||
|
[![github](https://img.shields.io/badge/GitHub-000000?style=for-the-badge&logo=GitHub&logoColor=white)](https://github.com/archnotwindows)
|
||||||
|
[![twitter](https://img.shields.io/badge/Twitter-007fff?style=for-the-badge&logo=twitter&logoColor=white)](https://twitter.com/Lollopro59_)
|
||||||
|
[![instagram](https://img.shields.io/badge/Instagram-8f00ff?style=for-the-badge&logo=instagram&logoColor=white)](https://www.instagram.com/lollog020406/)
|
||||||
|
[![stackoverflow](https://img.shields.io/badge/StackOverFlow-FF8000?style=for-the-badge&logo=stackoverflow&logoColor=white)](https://stackoverflow.com/users/19628082/archnotwindows)
|
86
main.py
86
main.py
|
@ -1,56 +1,70 @@
|
||||||
#Libraries for create a window
|
#Libraries for create window
|
||||||
import tkinter as tk
|
import tkinter as tk
|
||||||
#Libraries for execute command
|
#Libraries for run command
|
||||||
import subprocess
|
import subprocess
|
||||||
#Libraries for read web browser history
|
|
||||||
from browser_history import get_history
|
|
||||||
#Libraries for date time
|
|
||||||
from datetime import datetime
|
|
||||||
#Libraries for read csv
|
|
||||||
import csv
|
|
||||||
|
|
||||||
#Print all browser history on cvs
|
#Create window
|
||||||
outputs = get_history()
|
|
||||||
outputs.save("history.csv")
|
|
||||||
|
|
||||||
#Get current date
|
|
||||||
now = datetime.now()
|
|
||||||
date_time_str = now.strftime("%Y-%m-%d %H:%M")
|
|
||||||
print('DateTime String:', date_time_str)
|
|
||||||
|
|
||||||
#Search Youtube Link on history.csv
|
|
||||||
how_to_search = 'https://www.youtube.com/'
|
|
||||||
rows = []
|
|
||||||
with open('history.csv', 'rt') as f:
|
|
||||||
reader = csv.reader(f, delimiter=',')
|
|
||||||
for line in reader:
|
|
||||||
if how_to_search in line:
|
|
||||||
print("Yes!")
|
|
||||||
|
|
||||||
#Create a window
|
|
||||||
window = tk.Tk()
|
window = tk.Tk()
|
||||||
#Resolution program
|
#Dimensional window
|
||||||
window.geometry("800x500")
|
window.geometry("800x500")
|
||||||
#Title program
|
#Title window
|
||||||
window.title("Poweroffer")
|
window.title("poweroffer")
|
||||||
#Background program
|
|
||||||
window.configure(background="blue")
|
window.configure(background="blue")
|
||||||
window.grid_columnconfigure(0, weight=1)
|
window.grid_columnconfigure(0, weight=1)
|
||||||
|
|
||||||
#Welcome text
|
#Welcome text
|
||||||
scritta = tk.Label(window, text="Welcome!", font=("Helvetica",15))
|
scritta = tk.Label(window, text="Welcome!", font=("Helvetica",15))
|
||||||
scritta.grid(row=0, column=0, sticky="N", padx=20, pady=10)
|
scritta.grid(row=0, column=0, sticky="N", padx=20, pady=10)
|
||||||
|
|
||||||
sito = tk.StringVar
|
sito = tk.StringVar
|
||||||
text_input= tk.Entry(textvariable=sito)
|
text_input= tk.Entry(textvariable=sito)
|
||||||
text_input.grid(row=3, column=0, sticky="WE", padx=10, pady=10)
|
text_input.grid(row=3, column=0, sticky="WE", padx=10, pady=10)
|
||||||
|
|
||||||
#Button stop procrastinating
|
#Function for shutdown PC
|
||||||
second_button= tk.Button(text="Stop procrastinating")
|
def spegni():
|
||||||
|
subprocess.run('shutdown now', shell=True)
|
||||||
|
subprocess.run('shutdown -s -t O', shell=True)
|
||||||
|
|
||||||
|
#Function for shutdown PC when you visit YouTube and add website
|
||||||
|
def smetti():
|
||||||
|
sito = text_input.get()
|
||||||
|
print(sito)
|
||||||
|
#Create siti.dat to save the sites to be checked, if you visit one of the sites listed, turn off your computer.
|
||||||
|
f = open ("siti.dat","w")
|
||||||
|
f.write(sito)
|
||||||
|
f.close()
|
||||||
|
#Read and save history web and if you visit one of the listed sites, turn off your computer.
|
||||||
|
a = open("executable.py","w")
|
||||||
|
a.write("#!/usr/bin/env python3 \n")
|
||||||
|
a.write("import os,json,lz4.block,time \n")
|
||||||
|
a.write("f = open(\"siti.dat\",\"r\") \n")
|
||||||
|
a.write("sito = f.read()\n")
|
||||||
|
a.write("d = open(\"/home/usr/snap/firefox/common/.mozilla/firefox/8gnxd9f4.default/sessionstore-backups/recovery.jsonlz4\", \"rb\") \n")
|
||||||
|
a.write("magic = d.read(8)\n")
|
||||||
|
a.write("data = json.loads(lz4.block.decompress(d.read()).decode(\"utf-8\"))\n")
|
||||||
|
a.write("d.close()\n")
|
||||||
|
a.write("current_window = \"\"\n")
|
||||||
|
a.write("for win in data.get(\"windows\"):\n")
|
||||||
|
a.write(" for tab in win.get(\"tabs\"):\n")
|
||||||
|
a.write(" i = int(tab.get(\"index\")) - 1 \n")
|
||||||
|
a.write(" current_window = tab.get(\"entries\")[i].get(\"url\")\n")
|
||||||
|
a.write("print(current_window)\n")
|
||||||
|
a.write("if sito in str(current_window):\n")
|
||||||
|
a.write(" print(\"Yes\")\n")
|
||||||
|
a.write(" os.system(\"shutdown now\")")
|
||||||
|
a.close()
|
||||||
|
|
||||||
|
#Create executable.sh for crontab (This way you can run the script every time you start your pc)
|
||||||
|
b = open("executable.sh", "w")
|
||||||
|
b.write("#!/bin/bash\n")
|
||||||
|
b.write("/home/lorenzo/Scrivania/poweroffer/executable.py")
|
||||||
|
b.close()
|
||||||
|
|
||||||
|
#Stop procrastinating text
|
||||||
|
second_button= tk.Button(text="Stop procrastinating", command=smetti)
|
||||||
second_button.grid(row=5, column=0, sticky="WE", padx=15, pady=8)
|
second_button.grid(row=5, column=0, sticky="WE", padx=15, pady=8)
|
||||||
|
|
||||||
#Button for shutdown pc
|
#Have a break from the pc for shutdown PC
|
||||||
first_button = tk.Button(text="have a break from the pc")
|
first_button = tk.Button(text="have a break from the pc", command=spegni)
|
||||||
first_button.grid(row=1, column=0, sticky="W", padx=50, pady=50)
|
first_button.grid(row=1, column=0, sticky="W", padx=50, pady=50)
|
||||||
|
|
||||||
#Always open window
|
#Always open window
|
||||||
|
|
|
@ -0,0 +1 @@
|
||||||
|
tk
|
Loading…
Reference in New Issue