Välkommen till linuxportalen.se!

Linuxportalen.se är Sveriges största och aktivaste webbplats för användare av öppen- och fri programvara.

Du besöker Linuxportalen.se som gäst vilket begränsar din möjlighet att använda webbplatsens alla funktioner. Genom att registera dig som medlem får du inte bara möjlighet att söka bland webbplatsens innehåll, skapa nya och delta i befintliga diskussioner, skapa din egen blogg, kommunicera med andra medlemmar genom privata meddelanden och delta i omröstningar. Du får också tillgång till Veckans Kadavro - en seriestrip unikt skapad för Linuxportalen.se!

Registeringen sker snabbt och är helt kostnadsfri - tveka inte, bli medlem idag!

griffith vs. gcstar

Vill man lagra filmer i databas som hemanvändare är det - såvitt jag förstår - griffith och gcstar som är applikationerna att använda. Tidigare har jag varit väldigt nöjd med Griffith, men i.o.m. uppgraderingen av Ubuntu fungerar det inte som det ska vilket har fått mig att kika på gcstar istället.
 
Till det yttre är de funktionsmässigt väldigt jämförbara. Griffith lagrar sin data i en sqlite-databas (vilket jag ser som en fördel eftersom det är lättare att få ut resultat med egna små applikationer); GCStar använder XML-format.
Griffith kan anropas med växlar för att hämta data till terminalen utan att starta GUI:et vilket inte GCStar kan. Å andra sida kan GCStar uppdateras med kommandot: gcstar -u och det kan inte Griffith.
 
Här är en snabbt ihoptotad python-lösning som parsar igenom GCStars XML-fil och skriver ut data:
Anropas som: gcs rating -gt 7
På rad 27 anges vart XML-filen ligger
På rad 30 vilka fält som ska skrivas ut.
 
Just nu kan bara -eq -gt -lt användas... det går alltså inte att söka på "titel like '%dog%'", men det kommer.
 

#/usr/bin/env python
# _*_ coding: utf-8 _*_

from xml.dom import minidom as md
import sys, string
if len(sys.argv)<3:
  sys.stdout.write(sys.argv[0])
  print " field -eq|-gt|-lt value"
  print """
--------------------------------------------------
                   FÄLT
--------------------------------------------------
id, title, date, time, director, country, genre *4
image, webPage, seen, added, format, number, place
rating, comment, audio, subt, age, rank, borrower
borrowings
  """
  sys.exit(0)
field = sys.argv[1]
op = sys.argv[2]
if(op=='-eq'): op = "ivalue==value"
if(op=='-gt'): op = "ivalue>value"
if(op=='-lt'): op = "ivalue<value"
value = sys.argv[3]

# ändra till det namn och den plats där gcstars xml-fil ligger
doc = md.parse('gcstar_db.gcs').documentElement

# De fält som ska skrivas ut vid sökning
output=['title','rating']
for node in doc.childNodes:
  slask = ''; print_out = 0
  if (node.nodeName == 'item'):
    for inode in node.childNodes:
      for tnode in inode.childNodes:
        if(tnode.nodeType == node.TEXT_NODE):
          ifield = string.strip(inode.nodeName)
          ivalue = string.strip(tnode.nodeValue)
          if ifield in output:
            slask += ifield + ' : ' + ivalue + "\n"
          if (ifield == field) and (eval(op)): print_out = 1
      if print_out == 1:
        if slask != '': print slask; slask = ''