Yanıtlar:
1. temel çalar saat fonksiyonu
Askıya alma moduna girme
bu çözüm için, aşağıdaki komut dosyasını çalıştırarak askıya alma moduna girmeniz gerekir. Bilgisayarı bekleme moduna geçirir ve sizin tarafınızdan (komut dosyasında) tanımlanan (saat) zamanında sizi uyandırır. şarkınızı çalıyor.
Elbette komut dosyasını kullanmak için manuel olarak çalıştırabilirsiniz, ancak ayarlanmış bir tuş kombinasyonu ile kullanılabilir hale getirmek daha uygundur System Settings > Keyboard > Shortcuts > Custom Shortcuts
.
Kurmak
Aşağıdaki komut dosyasını boş bir dosyaya yapıştırın, uyandırma (saat) süresini (1-24 saat, 1-60 dakika içinde) ayarlayın, uyandırma şarkınızın yolunu ayarlayın ve olarak kaydedin wakeup.py
.
#!/usr/bin/env python3
import datetime
import subprocess
###############################################
# set wakeuptime and location of the mp3:
hour = 7
minutes = 15
command = "rhythmbox /path/to/wakeupsong.mp3"
###############################################
currtime = str(datetime.datetime.now().time()).split(":")[:2]
minutes_set = hour*60 + minutes
minutes_curr = int(currtime[0])*60 + int(currtime[1])
if minutes_curr < minutes_set:
minutes_togo = minutes_set - minutes_curr
else:
minutes_togo = minutes_set + 1440-minutes_curr
interval = minutes_togo*60
run = "rtcwake -m disk -s "+str(interval)+" && "+"sleep 20 &&"+command
subprocess.call(['/bin/bash', '-c', run])
komut dosyasını yürütülebilir yap
Komut dosyasını çalıştırmak için bir tuş kombinasyonu ayarlayın; aç System Preferences > Keyboard > Shortcuts > Custom Shortcuts
, komutu ekle
sudo /path/to/wakeup.py (sudo = assuming you do the next step below)
ve bir tuş kombinasyonu seçin
Komut dosyasının yöneticinin ayrıcalıklarına ihtiyacı var. Şifreyi girmek zorunda kalmadan çalıştırmak için sudoers dosyasını açın:
sudo visudo
satırı dosyanın en altına ekleyin:
[your_username] ALL=NOPASSWD: [/path/to/wakeup.py]
Sudoers dosyasının önemli bir dosya olduğunu unutmayın; dosyadaki hatalar muhtemelen ciddi sorunlara yol açar , bu yüzden dikkatli olun!
NB
gksu
: sudo apt-get install gksu
. Bu durumda, komut dosyasını çalıştırma komutu olur gksu /path/to/wakeup.py
ve her çalıştırdığınızda parolanız istenir.Artık tuş kombinasyonunuzla askıya alma moduna girebilirsiniz ve uyandırma şarkınızla uyandırılacaksınız.
2. (herhangi) tuşa veya fareye basıldığında durdurma işlevini içeren genişletilmiş sürüm
Bu ve "temel" sürüm arasındaki farklar, bu tuşta herhangi bir tuş vuruşu veya fare hareketi algılandığında alarmın durmasıdır (uyandığınızda bilgisayarda Rhythmbox'ı durdurmaktan daha uygundur) ve alarmın daha sonra otomatik olarak çıkmasıdır. belirli bir süre.
Kurulum, temel sürümle hemen hemen aynıdır, ancak xprintidle
tuş vuruşu veya fare hareketi olaylarını algılamak için yüklenmesi gerekir:
sudo apt-get install xprintidle
Senaryo:
#!/usr/bin/env python3
import subprocess
import time
import datetime
from threading import Thread
#-------------------------- edit settings below -------------------------------
max_wakeupduration = 1 # max time the song will play (minutes)
wakeup_hour = 7 # wake up hour (0-24)
wakeup_minute = 15 # wake up minute
wakeup_song = "/path/to/song.mp3" # path to wake up song
#------------------------------------------------------------------------------
def stop_wakeup():
time1 = int(time.time()); time2 = time1
last_idle = 0
playtime = max_wakeupduration*60
while time2 - time1 < playtime:
get_idle = subprocess.Popen(["xprintidle"], stdout=subprocess.PIPE)
curr_idle = int(get_idle.communicate()[0].decode("utf-8"))
if curr_idle < last_idle:
break
else:
last_idle = curr_idle
time.sleep(1)
time2 = int(time.time())
subprocess.Popen(["pkill", "rhythmbox"])
def calculate_time():
currtime = str(datetime.datetime.now().time()).split(":")[:2]
minutes_set = wakeup_hour*60 + wakeup_minute
minutes_curr = int(currtime[0])*60 + int(currtime[1])
if minutes_curr < minutes_set:
minutes_togo = minutes_set - minutes_curr
else:
minutes_togo = minutes_set + 1440-minutes_curr
return minutes_togo*60
def go_asleep():
sleeptime = calculate_time()
run = "rtcwake -m disk -s "+str(sleeptime)+" && "+"sleep 20"
subprocess.call(['/bin/bash', '-c', run])
combined_actions()
def play_song():
command = "rhythmbox "+wakeup_song
subprocess.Popen(['/bin/bash', '-c', command])
def combined_actions():
Thread(target = play_song).start()
Thread(target = stop_wakeup).start()
go_asleep()
açıklama
rtcwake
Her iki komut dosyası da buradartcwake
açıklandığı gibi komutun etrafına yazılır . Komut, bilgisayarı belirli bir süre sonra askıya alma ve uyandırma (ve isteğe bağlı olarak uyandıktan sonra bir komut çalıştırma) için kullanılabilir. OP onun bilgisayar desteklemek BIOS özelliğini "RAM ile askıya" değil sözü beri seçeneği kullanılır. Ayrıca bakınız .-m disk
man rtcwake
Durdurma işlevi
Durdurma işlevi, şarkı çalarken her saniye boşta kalma süresini ölçen ve son boşta kalma süresini hatırlayan bir işlevle çalışır. EĞER son boş zaman mevcut olanı aşar, bir tuş ya da fare olayı gerçekleştikten ve Rhythmbox öldürdü demektir.
sudo visudo /etc/sudoers
?
Dizüstü bilgisayarınızı bir kabloyla internete bağlayabilirseniz, ona "sihirli bir paket" göndermek için başka bir bilgisayar veya akıllı telefon kullanmayı deneyebilir ve uyandırabilirsiniz.
"Wake on lan" (WOL) için arama yapın.
Jacob'un python senaryosunu çalıştırırken sorun yaşadım, bu yüzden bash'de yeniden yazdım . Sadece indirin, yürütülebilir yapın ve değişkenleri buna göre düzenleyin.
Birkaç şey: alarm zamanı üzerinden ayarlanır date -d
. Bazı örnekler man date
:
Uyandıktan sonra vlc -L
döngü halinde müzik çalmak için kullanıyorum . Yolunuz bir klasörse, içindeki dosyaları oynatmaya çalışır. İşte bu yaptığım şey.