User:Ulaaneot: Difference between revisions

From ICO wiki
Jump to navigationJump to search
Ulaaneot (talk | contribs)
Ulaaneot (talk | contribs)
 
(12 intermediate revisions by the same user not shown)
Line 1: Line 1:
== Quest 26 ==
Kirjutada skript, mis otsib üles kõik .html failid ning kirjutab iga faili html dokumendi pealkirja failid.html faili. Loodud html fail (failid.html) peab sisaldama .html faile linkidena, ehk sinna klikates suunab asukohta, kus fail asub.
== Lahendus 1 (arvestamiseks) ==
== Lahendus 1 (arvestamiseks) ==
'''Versioon 1.0'''
Bash Quest oli koostatud vigaselt, sest .html faili esimesel real on tavaliselt <html> blokk.
Siiski on Questi esialgne lahendus kontrollitud ja töötab:
<source lang="bash">
<source lang="bash">
#!/bin/bash
#!/bin/bash
Line 24: Line 38:
echo "Faili esimene rida: <textarea>$FIRSTLINE</textarea><br />" >> $FILENAME
echo "Faili esimene rida: <textarea>$FIRSTLINE</textarea><br />" >> $FILENAME
# Kirjutame faili aadressi .html faili
# Kirjutame faili aadressi .html faili
echo "Faili asukoht: <a href="$filename" target="_new">$line</a><br />" >> $FILENAME
echo "Faili asukoht: <a href="${files[$c]}" target="_new">${files[$c]}</a><br />" >> $FILENAME
done
done
# Lõpetame .html faili
# Lõpetame .html faili
Line 33: Line 47:
</source>
</source>


== Lahendus 2 (tegin esimesena) ==
 
 
== Bash Questi õige lahendus ==
 
Questi lahendus, mis vastab Margus Ernitsa poolt parandatud questile.
 
Script kirjutab <title></title> blokkide vahele jääva info .html faili.
 
 
<source lang="bash">
<source lang="bash">
#!/bin/bash
#!/bin/bash
# Autor: Urmo Laaneots
# Autor: Urmo Laaneots
# Versioon: 0.1
# Versioon: 2.0
# Skript otsib üles kõik .html failid ja kirjutab faili esimese rea ja aadressi faili failid.html.
# Quest 26
# Skript otsib süsteemist üles kõik .html failid ja kirjutab faili pealkirja (<title></title>) ja aadressi faili failid.html.
echo "Skript otsib süsteemist üles kõik .html failid ja kirjutab faili pealkirja (<title></title>) ja aadressi faili failid.html"
# Määrame failinime, kuhu lõpptulemus kirjutatakse
# Määrame failinime, kuhu lõpptulemus kirjutatakse
FILENAME=failid.html
FILENAME=failid.html
Line 49: Line 73:
</head>
</head>
<body>" > $FILENAME
<body>" > $FILENAME
# `Otsime kõik .html failid süsteemist ja paneme need temp faili.
# `Otsime kõik .html failid süsteemist ja paneme need massiivi
echo `find / -type f -name "*.html" > temp`
files=( `find / -type f -name "*.html"` )
# Loeb rida haaval temp faili.
# Tsükkel, mis käib kõik massiivi liikmed läbi
while read line
for (( c=1; c<${#files[@]}; c++ )); do
do
# Loeme failide <title> bloki ja valime seal ainult pealkirja ning paneme selle muutujasse
# Kirjutame failiaadressi temp2 faili
TITLE=`grep -i "<title>" ${files[$c]} | cut -f 2 -d ">" | cut -f 1 -d "<"`
echo $line > temp2
# Kirjutame faili pealkirja .html faili
# Tsükkel, mis avab faili ja loeb esimese rea ning kirjutab faili aadressi .html faili.
echo "<i>Faili pealkiri:</i> <b>$TITLE</b><br />" >> $FILENAME
while read line
# Kirjutame faili aadressi .html faili
do
echo "<i>Faili asukoht:</i> <a href="${files[$c]}" target="_new">${files[$c]}</a><br />" >> $FILENAME
FIRSTLINE=`head -n 1 $line`
done
echo "Faili esimene rida: <textarea>$FIRSTLINE</textarea><br />" >> $FILENAME
echo "Faili asukoht: <a href="$line" target="_new">$line</a><br />" >> $FILENAME
echo " "
done < temp2
done < temp
# Lõpetame .html faili
# Lõpetame .html faili
echo "</body>
echo "</body>
</html>" >> $FILENAME
</html>" >> $FILENAME
# Kustutame temp failid
# Teavitame kasutajat scripti töö lõpetamisest
rm temp
rm temp2
# Teavitame kasutajat, et script lõpetas oma töö!
echo "Done!"
echo "Done!"
</source>
== Powershelli script ==
Parandasin Meelis Tamme scripti. Nüüd peaks script töötama ka Windows 7'ga. Ning veel: taustapildile kirjutatakse kõik aruviti ip aadressid.
== Powershelli Lahendus ==
<source lang=powershell>
#Koostaja: Urmo Laaneots, A21, ulaaneot@itcollege.ee
#Versioon: 2
#Ajalugu: Versioon 1 on tehtud Meelis Tamme poolt!
#Skript loob taustapildi, millele on kirjutatud arvuti nimi, kasutaja, kes on sisse logitud ja aruvti IP aadress
#faili asukoht, kuhu loodav pilt salvestatakse
$filename =  $ENV:USERPROFILE + "\taust.png"
#Funktsioon, mis määrab sisselogitud kasutaja desktopi registrivõtmes taustapildi asukohaks skripti loodud pildi
Function Set-WallPaper1
{
#requires -version 2.0
## Set-Wallpaper - set your windows desktop wallpaper
###################################################################################################
## Usage:
##    Set-Wallpaper "C:\Users\Joel\Pictures\Wallpaper\Dual Monitor\mandolux-tiger.jpg" "Tile"
##    ls *.jpg | get-random | Set-Wallpaper
##    ls *.jpg | get-random | Set-Wallpaper -Style "Stretch"
###################################################################################################
## History:
##    v0.5  First release (on #PowerShell@irc.freenode.net)
##    v1.0  Public release (http://www.poshcode.org/488)
##          - Added Style: Tile|Center|Stretch
##    v1.1  (http://poshcode.org/491)
##          - Added "NoChange" style to just use the style setting already set
##          - Made the Style parameter to the cmdlet optional
##    v2.0  This Release
##          - Updated for CTP3, and made it run as a script instead of a function.
###################################################################################################
[CmdletBinding()]
Param(
  [Parameter(Position=0, Mandatory=$true, ValueFromPipelineByPropertyName=$true)]
  [Alias("FullName")]
  [string]
  $Path
,
  [Parameter(Position=1, Mandatory=$false)]
  $Style = "NoChange"
)
BEGIN {
try {
  $WP = [Wallpaper.Setter]
} catch {
  $WP = add-type @"
using System;
using System.Runtime.InteropServices;
using Microsoft.Win32;
namespace Wallpaper
{
  public enum Style : int
  {
      Tile, Center, Stretch, NoChange
  }
  public class Setter {
      public const int SetDesktopWallpaper = 20;
      public const int UpdateIniFile = 0x01;
      public const int SendWinIniChange = 0x02;
      [DllImport("user32.dll", SetLastError = true, CharSet = CharSet.Auto)]
      private static extern int SystemParametersInfo (int uAction, int uParam, string lpvParam, int fuWinIni);
     
      public static void SetWallpaper ( string path, Wallpaper.Style style ) {
        SystemParametersInfo( SetDesktopWallpaper, 0, path, UpdateIniFile | SendWinIniChange );
       
        RegistryKey key = Registry.CurrentUser.OpenSubKey("Control Panel\\Desktop", true);
        switch( style )
        {
            case Style.Stretch :
              key.SetValue(@"WallpaperStyle", "2") ;
              key.SetValue(@"TileWallpaper", "0") ;
              break;
            case Style.Center :
              key.SetValue(@"WallpaperStyle", "1") ;
              key.SetValue(@"TileWallpaper", "0") ;
              break;
            case Style.Tile :
              key.SetValue(@"WallpaperStyle", "1") ;
              key.SetValue(@"TileWallpaper", "1") ;
              break;
            case Style.NoChange :
              break;
        }
        key.Close();
      }
  }
}
"@ -Passthru
}
}
PROCESS {
  Write-Verbose "Setting Wallpaper ($Style) to $(Convert-Path $Path)"
  $WP::SetWallpaper( (Convert-Path $Path), $Style )
}
}
#Funktsioon, mis määrab sisselogitud kasutaja desktopi registrivõtmes taustapildi asukohaks skripti loodud pildi
Function Set-WallPaper-older($Value)
{
Set-ItemProperty -path 'HKCU:\Control Panel\Desktop\' -name wallpaper -value "$value"
rundll32.exe user32.dll, UpdatePerUserSystemParameters
}
#Funktsioon, mis väljastab kõik arvuti ip aadressid
Function Get-IPAddresses
{
$Computer = "."
$IPconfigset = Get-WmiObject Win32_NetworkAdapterConfiguration
$count = 0
foreach ($IPConfig in $IPConfigSet) {
  if ($Ipconfig.IPaddress) {
      foreach ($addr in $Ipconfig.Ipaddress) {
      "IP Address: {0}" -f  $addr;
      $count++ 
      }
  }
}
if ($count -eq 0) {"No IP addresses found"}
}
# Arvuti nimi
$PC=Get-Content Env:\COMPUTERNAME
# Kasutajanimi
$USER=Get-Content Env:\USERNAME
# IP Aadress
$IP=@(Get-IPAddresses)
# Tekst, mida kirjutatakse pildile (mitu rida)
$PC_text ="Masin: $PC"
$USER_text = "Kasutaja: $USER"
# Väärtustame text array
$text = ($PC_text,$USER_text) + $IP
Add-Type -AssemblyName System.Drawing
 
# Loome uue bitmapi, viimased kaks nr määravad reso
$bmp = new-object System.Drawing.Bitmap 1024,780
# Valime kirjastiili, millega teks kirjutatakse
$font = new-object System.Drawing.Font Consolas,18
# Määrame taustapintsli värvi
$brushBg = [System.Drawing.Brushes]::Black
# Määrame kirjutamis pintsli värvi
$brushFg = [System.Drawing.Brushes]::White
$graphics = [System.Drawing.Graphics]::FromImage($bmp)
$graphics.FillRectangle($brushBg,0,0,$bmp.Width,$bmp.Height)
$korgus=30
# Kirjutame teksti pildile
foreach ($number in $text) {
$korgus = $korgus + 20
$graphics.DrawString($number,$font,$brushFg,50,$korgus)
  $count++ 
}
$graphics.Dispose()
# Salvestame pildi
$bmp.Save($filename)
# Funktsioon, mis küsib op süsteemi
$OPSYS=((get-wmiobject Win32_OperatingSystem | select Version | findstr [0-9].))
If ($OPSYS -gt 6) {
Set-WallPaper1 -Path $filename
}
Else {
Set-WallPaper-older -value $filename
}
</source>
== Pythoni kodutöö ==
Script, mis otsib arvuti aku(de) kohta infot ning arvutab aku seisukorra (aku mahutavuse).
== Pythoni lahendus ==
<source lang=python>
#!/usr/bin/python
#-*- coding: utf-8-*
#Autor: Urmo Laaneots, A21
#Skript otsib sülearvuti aku(de) kohta infot ja väljastab selle html'i faili.
import os
from os.path import join
#Loome html faili, kuhu tuleb info
fh = open ('aku.html', 'w')
#Loome standard HTML faili
fh.write('<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0//EN\" \"http://www.w3.org/TR/REC-html40/strict.dtd\">\n')
fh.write("<html>\n")
fh.write("<head>\n")
fh.write("<title>Arvuti </title>\n")
fh.write('<meta http-equiv=\"content-type\" content=\"text/html; charset=UTF-8\" />\n')
fh.write("</head>\n")
fh.write("<body>\n")
#Väärtustame akude arvu 0ga.
akusid=0
# Otsime üles arvutis oleva(d) aku(d)
for root, dirs, files in os.walk('/proc/acpi/battery'):
for name in files:
filename = os.path.join(root, name)
                #Kui leiame aku info faili, siis avame selle
if filename.endswith('info'):
fail = open (filename)
for rida in fail.readlines():
#Kirjutame aku arvu (nt 1.).
if "present:" in rida:
akusid+=1
fh.write('<h3>Aku nr %s</h3>' %(akusid))
fh.write('%s<br />\n' %(rida))
                                #Võtame avatud failist aku disainitud mahutavause ja viimase täislaetud väärtuse ning paneme nad int() tüüpi muutujasse
if "design capacity:" in rida:
design=int(rida.split('design capacity')[1].split(':')[1].split('m')[0])
elif "last full capacity:" in rida:
lastfull=int(rida.split('last full capacity')[1].split(':')[1].split('m')[0])
#Arvutame aku seisukorra
akuolukord= '{:.0%}'.format(lastfull/design)
#Vastavalt aku seisukorrale, kirjutame seisukorra
if (akuolukord > 80):
fh.write('<h3><font color="green">Aku on väga heas korras (%s)!</font></h3><br />' %(akuolukord))
elif (akuolukord > 50):
fh.write('<h3><font color="brown">Aku on heas korras (%s)!</font></h3><br />' %(akuolukord))
elif (akuolukord > 30):
fh.write('<h3><font color="blue">Aku on rahuldavas korras (%s)!</font></h3><br />' %(akuolukord))
elif (akuolukord < 30):
fh.write('<h3><font color="red">Aku on vajab vahetamist (%s)!</font></h3>' %(akuolukord))
fh.write('<hr width="100%">')
#Sulgeme avatud failid
fail.close()
#Kui akusid üldsegi ei ole, siis kuvatakse vastav info
if (akusid == 0):
fh.write('<h2>Sellel arvutil ei ole akut!!!</h2>')
#Lõpetame html faili
fh.write("</body>\n")
fh.write("</html>")
fh.close()
</source>
</source>

Latest revision as of 17:14, 9 June 2011

Quest 26

Kirjutada skript, mis otsib üles kõik .html failid ning kirjutab iga faili html dokumendi pealkirja failid.html faili. Loodud html fail (failid.html) peab sisaldama .html faile linkidena, ehk sinna klikates suunab asukohta, kus fail asub.


Lahendus 1 (arvestamiseks)

Versioon 1.0

Bash Quest oli koostatud vigaselt, sest .html faili esimesel real on tavaliselt <html> blokk.

Siiski on Questi esialgne lahendus kontrollitud ja töötab:

#!/bin/bash
# Autor: Urmo Laaneots
# Versioon: 1.0
# Skript otsib üles kõik .html failid ja kirjutab faili esimese rea ja aadressi faili failid.html.
# Määrame failinime, kuhu lõpptulemus kirjutatakse
FILENAME=failid.html
# Loome html faili alguse vastavalt W3 standarditele ja kirjutame selle faili
echo "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0//EN\" \"http://www.w3.org/TR/REC-html40/strict.dtd\">
<html>
<head>
<title>.html failid</title>
<meta http-equiv=\"content-type\" content=\"text/html; charset=UTF-8\" /> 
</head>
<body>" > $FILENAME
# `Otsime kõik .html failid süsteemist ja paneme need massiivi
files=( `find / -type f -name "*.html"` ) 
# Tsükkel, mis käib kõik massiivi liikmed läbi
for (( c=1; c<${#files[@]}; c++ )); do
	# Loeme failide esimese rea ja paneme selle muutujasse
	FIRSTLINE=`head -n 1 ${files[$c]}`
	# Kirjutame faili esimese rea .html faili
	echo "Faili esimene rida: <textarea>$FIRSTLINE</textarea><br />" >> $FILENAME
	# Kirjutame faili aadressi .html faili
	echo "Faili asukoht: <a href="${files[$c]}" target="_new">${files[$c]}</a><br />" >> $FILENAME
done
# Lõpetame .html faili
echo "</body>
</html>" >> $FILENAME
# Teavitame kasutajat scripti töö lõpetamisest
echo "Done!"


Bash Questi õige lahendus

Questi lahendus, mis vastab Margus Ernitsa poolt parandatud questile.

Script kirjutab <title></title> blokkide vahele jääva info .html faili.


#!/bin/bash
# Autor: Urmo Laaneots
# Versioon: 2.0
# Quest 26
# Skript otsib süsteemist üles kõik .html failid ja kirjutab faili pealkirja (<title></title>) ja aadressi faili failid.html.
echo "Skript otsib süsteemist üles kõik .html failid ja kirjutab faili pealkirja (<title></title>) ja aadressi faili failid.html"
# Määrame failinime, kuhu lõpptulemus kirjutatakse
FILENAME=failid.html
# Loome html faili alguse vastavalt W3 standarditele ja kirjutame selle faili
echo "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0//EN\" \"http://www.w3.org/TR/REC-html40/strict.dtd\">
<html>
<head>
<title>.html failid</title>
<meta http-equiv=\"content-type\" content=\"text/html; charset=UTF-8\" /> 
</head>
<body>" > $FILENAME
# `Otsime kõik .html failid süsteemist ja paneme need massiivi
files=( `find / -type f -name "*.html"` ) 
# Tsükkel, mis käib kõik massiivi liikmed läbi
for (( c=1; c<${#files[@]}; c++ )); do
	# Loeme failide <title> bloki ja valime seal ainult pealkirja ning paneme selle muutujasse
	TITLE=`grep -i "<title>" ${files[$c]} | cut -f 2 -d ">" | cut -f 1 -d "<"`
	# Kirjutame faili pealkirja .html faili
	echo "<i>Faili pealkiri:</i> <b>$TITLE</b><br />" >> $FILENAME
	# Kirjutame faili aadressi .html faili
	echo "<i>Faili asukoht:</i> <a href="${files[$c]}" target="_new">${files[$c]}</a><br />" >> $FILENAME
done
# Lõpetame .html faili
echo "</body>
</html>" >> $FILENAME
# Teavitame kasutajat scripti töö lõpetamisest
echo "Done!"

Powershelli script

Parandasin Meelis Tamme scripti. Nüüd peaks script töötama ka Windows 7'ga. Ning veel: taustapildile kirjutatakse kõik aruviti ip aadressid.

Powershelli Lahendus

#Koostaja: Urmo Laaneots, A21, ulaaneot@itcollege.ee
#Versioon: 2
#Ajalugu: Versioon 1 on tehtud Meelis Tamme poolt!
#Skript loob taustapildi, millele on kirjutatud arvuti nimi, kasutaja, kes on sisse logitud ja aruvti IP aadress
 
#faili asukoht, kuhu loodav pilt salvestatakse
$filename =  $ENV:USERPROFILE + "\taust.png" 

#Funktsioon, mis määrab sisselogitud kasutaja desktopi registrivõtmes taustapildi asukohaks skripti loodud pildi
Function Set-WallPaper1
{
#requires -version 2.0
## Set-Wallpaper - set your windows desktop wallpaper
###################################################################################################
## Usage:
##    Set-Wallpaper "C:\Users\Joel\Pictures\Wallpaper\Dual Monitor\mandolux-tiger.jpg" "Tile"
##    ls *.jpg | get-random | Set-Wallpaper
##    ls *.jpg | get-random | Set-Wallpaper -Style "Stretch"
###################################################################################################
## History:
##    v0.5  First release (on #PowerShell@irc.freenode.net)
##    v1.0  Public release (http://www.poshcode.org/488)
##          - Added Style: Tile|Center|Stretch
##    v1.1  (http://poshcode.org/491)
##          - Added "NoChange" style to just use the style setting already set
##          - Made the Style parameter to the cmdlet optional
##    v2.0  This Release
##          - Updated for CTP3, and made it run as a script instead of a function.
###################################################################################################
[CmdletBinding()]
Param(
   [Parameter(Position=0, Mandatory=$true, ValueFromPipelineByPropertyName=$true)]
   [Alias("FullName")]
   [string]
   $Path
,
   [Parameter(Position=1, Mandatory=$false)]
   $Style = "NoChange"
)

BEGIN {
try {
   $WP = [Wallpaper.Setter]
} catch {
   $WP = add-type @"
using System;
using System.Runtime.InteropServices;
using Microsoft.Win32;
namespace Wallpaper
{
   public enum Style : int
   {
       Tile, Center, Stretch, NoChange
   }

   public class Setter {
      public const int SetDesktopWallpaper = 20;
      public const int UpdateIniFile = 0x01;
      public const int SendWinIniChange = 0x02;

      [DllImport("user32.dll", SetLastError = true, CharSet = CharSet.Auto)]
      private static extern int SystemParametersInfo (int uAction, int uParam, string lpvParam, int fuWinIni);
      
      public static void SetWallpaper ( string path, Wallpaper.Style style ) {
         SystemParametersInfo( SetDesktopWallpaper, 0, path, UpdateIniFile | SendWinIniChange );
         
         RegistryKey key = Registry.CurrentUser.OpenSubKey("Control Panel\\Desktop", true);
         switch( style )
         {
            case Style.Stretch :
               key.SetValue(@"WallpaperStyle", "2") ; 
               key.SetValue(@"TileWallpaper", "0") ;
               break;
            case Style.Center :
               key.SetValue(@"WallpaperStyle", "1") ; 
               key.SetValue(@"TileWallpaper", "0") ; 
               break;
            case Style.Tile :
               key.SetValue(@"WallpaperStyle", "1") ; 
               key.SetValue(@"TileWallpaper", "1") ;
               break;
            case Style.NoChange :
               break;
         }
         key.Close();
      }
   }
}
"@ -Passthru
}
}
PROCESS {
   Write-Verbose "Setting Wallpaper ($Style) to $(Convert-Path $Path)"
   $WP::SetWallpaper( (Convert-Path $Path), $Style )
}

}

#Funktsioon, mis määrab sisselogitud kasutaja desktopi registrivõtmes taustapildi asukohaks skripti loodud pildi
Function Set-WallPaper-older($Value)
{
 Set-ItemProperty -path 'HKCU:\Control Panel\Desktop\' -name wallpaper -value "$value"
 rundll32.exe user32.dll, UpdatePerUserSystemParameters
}

#Funktsioon, mis väljastab kõik arvuti ip aadressid
Function Get-IPAddresses
{ 
$Computer = "." 
$IPconfigset = Get-WmiObject Win32_NetworkAdapterConfiguration 

$count = 0
foreach ($IPConfig in $IPConfigSet) { 
   if ($Ipconfig.IPaddress) { 
      foreach ($addr in $Ipconfig.Ipaddress) { 
      "IP Address: {0}" -f  $addr; 
      $count++  
      } 
   } 
} 
if ($count -eq 0) {"No IP addresses found"} 
}

# Arvuti nimi
$PC=Get-Content Env:\COMPUTERNAME
 
# Kasutajanimi
$USER=Get-Content Env:\USERNAME
 
# IP Aadress
$IP=@(Get-IPAddresses)

# Tekst, mida kirjutatakse pildile (mitu rida)
$PC_text ="Masin: $PC"
$USER_text = "Kasutaja: $USER"

# Väärtustame text array
$text = ($PC_text,$USER_text) + $IP

Add-Type -AssemblyName System.Drawing
  
# Loome uue bitmapi, viimased kaks nr määravad reso
$bmp = new-object System.Drawing.Bitmap 1024,780
 
# Valime kirjastiili, millega teks kirjutatakse
$font = new-object System.Drawing.Font Consolas,18
 
# Määrame taustapintsli värvi
$brushBg = [System.Drawing.Brushes]::Black
 
# Määrame kirjutamis pintsli värvi
$brushFg = [System.Drawing.Brushes]::White
 
$graphics = [System.Drawing.Graphics]::FromImage($bmp)
$graphics.FillRectangle($brushBg,0,0,$bmp.Width,$bmp.Height)

$korgus=30

# Kirjutame teksti pildile
foreach ($number in $text) { 
	$korgus = $korgus + 20
	$graphics.DrawString($number,$font,$brushFg,50,$korgus)
  	$count++  
}
 
$graphics.Dispose()
 
# Salvestame pildi
$bmp.Save($filename)
 
# Funktsioon, mis küsib op süsteemi
$OPSYS=((get-wmiobject Win32_OperatingSystem | select Version | findstr [0-9].))

If ($OPSYS -gt 6) {
Set-WallPaper1 -Path $filename
}
Else {
Set-WallPaper-older -value $filename
}

Pythoni kodutöö

Script, mis otsib arvuti aku(de) kohta infot ning arvutab aku seisukorra (aku mahutavuse).

Pythoni lahendus

#!/usr/bin/python
#-*- coding: utf-8-*
#Autor: Urmo Laaneots, A21
#Skript otsib sülearvuti aku(de) kohta infot ja väljastab selle html'i faili.
 
import os
from os.path import join
 
#Loome html faili, kuhu tuleb info
fh = open ('aku.html', 'w')
 
#Loome standard HTML faili
fh.write('<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0//EN\" \"http://www.w3.org/TR/REC-html40/strict.dtd\">\n')
fh.write("<html>\n")
fh.write("<head>\n")
fh.write("<title>Arvuti </title>\n")
fh.write('<meta http-equiv=\"content-type\" content=\"text/html; charset=UTF-8\" />\n')
fh.write("</head>\n")
fh.write("<body>\n")
 
#Väärtustame akude arvu 0ga.
akusid=0
 
# Otsime üles arvutis oleva(d) aku(d)
for root, dirs, files in os.walk('/proc/acpi/battery'):
	for name in files:
		filename = os.path.join(root, name)
 
                #Kui leiame aku info faili, siis avame selle
		if filename.endswith('info'):
			fail = open (filename)
			for rida in fail.readlines():
 
				#Kirjutame aku arvu (nt 1.).				
				if "present:" in rida:
					akusid+=1
					fh.write('<h3>Aku nr %s</h3>' %(akusid)) 
				fh.write('%s<br />\n' %(rida))
 
                                #Võtame avatud failist aku disainitud mahutavause ja viimase täislaetud väärtuse ning paneme nad int() tüüpi muutujasse
				if "design capacity:" in rida:
					design=int(rida.split('design capacity')[1].split(':')[1].split('m')[0])
				elif "last full capacity:" in rida:
					lastfull=int(rida.split('last full capacity')[1].split(':')[1].split('m')[0])
 
			#Arvutame aku seisukorra
			akuolukord= '{:.0%}'.format(lastfull/design)
 
			#Vastavalt aku seisukorrale, kirjutame seisukorra
			if (akuolukord > 80):	
				fh.write('<h3><font color="green">Aku on väga heas korras (%s)!</font></h3><br />' %(akuolukord))
			elif (akuolukord > 50):	
				fh.write('<h3><font color="brown">Aku on heas korras (%s)!</font></h3><br />' %(akuolukord))
			elif (akuolukord > 30):	
				fh.write('<h3><font color="blue">Aku on rahuldavas korras (%s)!</font></h3><br />' %(akuolukord))
			elif (akuolukord < 30):	
				fh.write('<h3><font color="red">Aku on vajab vahetamist (%s)!</font></h3>' %(akuolukord))
			fh.write('<hr width="100%">')
 
			#Sulgeme avatud failid
			fail.close()
 
#Kui akusid üldsegi ei ole, siis kuvatakse vastav info
if (akusid == 0):
	fh.write('<h2>Sellel arvutil ei ole akut!!!</h2>')
#Lõpetame html faili
fh.write("</body>\n")
fh.write("</html>")
fh.close()