dauerregen
Anmeldungsdatum: 25. März 2012
Beiträge: 19
|
Mit Scripten kenne ich mich nicht aus, deshalb meine Fragen: Als was und wo speichere ich denn dieses Script? Wie mache ich dieses Script ausführbar und wie rufe ich es auf? Muss ich dieses Script jedes mal aufrufen, wenn ich den Stift eingesteckt habe oder wird das Script automatisch aufgerufen nachdem der Stift erkannt wurde? Vielen Dank, lg Dauerregen
|
buchenberger
Anmeldungsdatum: 29. September 2009
Beiträge: 19
|
Hallo zusammen, ich habe das Shell Skript getestet das geht selbstverständlich auch nach einigen Anpassungen: Bevor man es auführt muss man allerdings einmal das betreffende Buch gestartet haben, damit einem der Stick zum anschließen an den Computer auffordert. Ansonsten ist auf dem Stick nicht die richtige Buchnummer in der Datei TBD.txt abgelegt. Diese kann man nach erfolgreichem Download dann auch wieder leeren. Was passiert wenn man mehrere Bücher scannt, die unbekannt sind habe ich nicht getestet. Evlt. sind dann dort zwei Nummern drinne, damit käme das Shell Skript nicht klar. 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34 | #!/bin/bash
##Deklarationsteil
#Ting verzeichnis abhängig vom Benutzer f. ubuntu 14.4 mounts
export tingv=/media/`whoami`/Ting/\$ting
export id=`cat $tingv/TBD.TXT`
export png=en.png
export txt=en.txt
export ouf=en.ouf
pngfile=$id\_$png
txtfile=$id\_$txt
ouffile=$id\_$ouf
#Wenn das Zielverzeichnis existiert weiter machen...
if [ -d "$tingv" ]; then
echo “Verzeichnis $tingv”
echo “Lade BuchId $id”
echo “Dateien:”
echo $pngfile
echo $txtfile
echo $ouffile
#FTP Download der drei Dateien... Kann bei letzterer etwas dauern wg. sync
wget http://system.ting.eu/book-files/get-description/id/$id/area/en -O $tingv/$txtfile
wget http://system.ting.eu/book-files/get/id/$id/area/en/type/thumb -O $tingv/$pngfile
wget http://system.ting.eu/book-files/get/id/$id/area/en/type/archive -O $tingv/$ouffile
#Wenn irgendwas mit dem VZ nicht stimmt....
else
echo "es gibt ein Problem mit dem Zielverzeichnis..."
echo "entweder es wurde vom Skript nicht korrekt ermittelt,"
echo "oder der Stick ist nicht angeschlossen"
fi
|
Für alle die nichts damit anfangen können vielleicht hier eine kleine Anleitung: 1. Code kopieren
2. Terminal öffnen
3. Code in eine Datei kopieren z.B. mit vi
4. Datei ausführbar machen –> chmod +x <dateiname>
5. Skript ausführen –> ./<dateiname> Einige Grundkenntnisse sind allerdings erforderlich Hope that helps ☺ @dauerregen Mit Scripten kenne ich mich nicht aus, deshalb meine Fragen: Als was und wo speichere ich denn dieses Script?
Wie ist eigentlich egal, als eifache Textdatei → geht aber aus meiner minianleitung hervor
Wie mache ich dieses Script ausführbar und wie rufe ich es auf?
chmod +x dateiname
Muss ich dieses Script jedes mal aufrufen, wenn ich den Stift eingesteckt habe oder wird das Script automatisch aufgerufen nachdem der Stift erkannt wurde?
Ja muss Du immer machen, wenn Du ein unbekanntes Buch gescannt hast. Dessen ID ist dann in dieser TBD.txt. Diese wird ausgelesen und lädt die betreffenden Dateien per ftp herunter.
Vielen Dank, lg Dauerregen
|
Liooo
Anmeldungsdatum: 24. Januar 2015
Beiträge: 1
|
Hi, @buchenberger
Leider hat dein Skript bei mir nicht funktioniert (cat bereitete Probleme mit meiner TBD.TXT) weswegen ich mir erlaubt habe dein Skript anzupassen, bzw. zu erweitern. Aus der TBD.TXT vom Ting-Stift wird nur die erste Buch-ID (fünf Stellen) gelsen, ehe die Datei nach dem Herunterladen geleert wird.
Ein Massenimport mehrerer Bücher ist mit diesem Skript NICHT möglich. Für diejenigen unter euch, die noch eine Herausforderung suchen (To-do):
Massenimport (mehrere Bücher-IDs auf einmal) Prüfung auf Vorhandensein der Dateien (auf dem Stift und/oder dem Server) Verbesserung der Fehlermeldungen
#!/bin/bash
# credits
# basierend auf buchenbergers Ting Shell Script
# http://forum.ubuntuusers.de/topic/synchronisation-von-ting-dem-hoerstift-von-bro/2/
#
# Aus der TBD.TXT vom Ting-Stift wird nur die erste Buch-ID (fünf Zeichen) gelsen, ehe die Datei nach dem Herunterladen geleert wird.
# Ein Massenimport mehrerer Bücher ist mit diesem Script NICHT möglich.
#
# Ting-Verzeichnis abhängig vom Benutzer
export TINGVERZ=/media/`whoami`/Ting/\$ting
export TBDPFAD=$TINGVERZ/TBD.TXT
export BUCHID="`cut -c-5 $TBDPFAD`"
export PNG=_en.png
export TXT=_en.txt
export OUF=_en.ouf
PNGFILE=$BUCHID$PNG
TXTFILE=$BUCHID$TXT
OUFFILE=$BUCHID$OUF
if [ -s $TBDPFAD ]
then
echo "------------------"
echo "Buch-ID vorhanden"
echo "------------------"
else
echo "------------------------------------------"
echo "KEINE BUCH-ID VORHANDEN! TBD.TXT ist leer."
echo "Bitte das Buch mit dem Ting-Stift einlesen"
echo "------------------------------------------"
sleep 5
exit
fi
# Wenn das Zielverzeichnis existiert weiter machen...
if [ -d "$TINGVERZ" ]; then
echo "Verzeichnis: $TINGVERZ"
echo "BuchID: $BUCHID"
echo "Dateien:"
echo $PNGFILE
echo $TXTFILE
echo $OUFFILE
sleep 4
echo "---------------------------"
echo "Download wird gestartet..."
echo "---------------------------"
echo
# FTP-Download der drei Dateien kann bei letzterer etwas dauern wg. Sync
wget http://system.ting.eu/book-files/get-description/id/$BUCHID/area/en -O $TINGVERZ/$TXTFILE
wget http://system.ting.eu/book-files/get/id/$BUCHID/area/en/type/thumb -O $TINGVERZ/$PNGFILE
echo
echo
echo "-----------------------------------------------------------"
echo "BITTE WARTEN BIS DER VORGANG ABGESCHLOSSEN IST!"
echo "Wenn der Vorgang abgeschlossen ist, erscheint eine Meldung."
echo "-----------------------------------------------------------"
wget http://system.ting.eu/book-files/get/id/$BUCHID/area/en/type/archive -O $TINGVERZ/$OUFFILE
# TBD.TXT leeren
> $TBDPFAD
echo "-----------------------"
echo "VORGANG ABGESCHLOSSEN"
echo "TBD.TXT geleert"
echo "-----------------------"
echo
sleep 5
exit
# Wenn etwas mit dem Verzeichnis nicht stimmt
else
echo "------------------------------------------------------"
echo "Es gibt ein Problem mit dem Zielverzeichnis..."
echo "entweder wurde es vom Script nicht korrekt ermittelt,"
echo "oder der Stick ist nicht angeschlossen"
echo "------------------------------------------------------"
sleep 8
exit
fi
- TingDownloadscript_v1.sh (2.5 KiB)
- Download TingDownloadscript_v1.sh
|
buchenberger
Anmeldungsdatum: 29. September 2009
Beiträge: 19
|
So soll es doch laufen nach meinem Verständnis 😉 Nur zu... und Danke für die Korrektur.
|
howil001
Anmeldungsdatum: 14. September 2014
Beiträge: 5
|
Alternativ zu der bash-Skript Lösung (erkennbar an der Zeile #!/bin/bash) gibt es hier ein update zur python-Lösung. Code einfach in eine Datei kopiern (z.B. 'ting.py') und diese dann in der Konsole mit 'python ting.py' starten. Für alle die weiterbasteln wollen... ich habe nur den Benutzernamen in den mountpoint eingebaut. Läuft einwandfrei unter Ubuntu 14.04. 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134 | # -*- coding: utf-8 -*-
import urllib
import os
import re
import hashlib
import commands
import getpass
from sys import platform as _platform
# Check linux platform and find mountpoint
if _platform == "linux" or _platform == "linux2":
# Execute mount command
mount = commands.getoutput('mount -v')
lines = mount.split('\n')
points = map(lambda line: line.split()[2], lines)
# Defining standard mount point
username = getpass.getuser()
MountedTingPath = "/media/"+username+"/Ting/$ting"
# Check all found mount points
n = -1
for a in enumerate(points):
if 'Ting' in a[1]:
n =a[0]
MountedTingPath = a[1]+'/$ting'
print('Found Ting mounted to "'+MountedTingPath+'"')
if n ==-1:
print('Could not find mounted Ting. Please connect Ting to System.')
else:
print('Could not find Linux system!')
#set global parameters
TingURL = "system.ting.eu/book-files"
TingFileTypes = ["Thumb", "File", "Script"]
TingFileDestDict = {}
TingFileDestDict["Thumb"] = MountedTingPath + "/{}_en.png"
TingFileDestDict["File"] = MountedTingPath + "/{}_en.ouf"
TingFileDestDict["Script"] = MountedTingPath + "/{}_en.src"
TingFileSourceDict = {}
TingFileSourceDict["Thumb"] = "http://"+TingURL+"/get/id/{}/area/en/type/thumb"
TingFileSourceDict["File"] = "http://"+TingURL+"/get/id/{}/area/en/type/archive"
TingFileSourceDict["Script"] = "http://"+TingURL+"/get/id/{}/area/en/type/script"
def GetBookIDs(TBDFilePath=MountedTingPath+"/TBD.TXT"):
TBDFile = open(TBDFilePath, "r")
BookIDs = TBDFile.readlines()
for i, BookID in enumerate(BookIDs):
BookIDs[i] = BookID.strip()
return BookIDs
def CheckForBookDesciptionFile(BookIDAsString, TingPath=MountedTingPath):
BookExists = os.path.exists(TingPath+"/"+BookIDAsString+"_en.txt")
return BookExists
def GetBookMD5Sums(BookID, TingPath=MountedTingPath):
ResultDict = dict.fromkeys(TingFileTypes)
aFile = open(TingPath+"/"+BookID+"_en.txt")
Lines = aFile.readlines()
aFile.close()
for key in ResultDict.iterkeys():
for Line in Lines:
Match = re.findall(key+"MD5: ([0-9,a-f]+)", Line)
if Match:
ResultDict[key] = Match[0]
break
return ResultDict
def CheckForBookFileValid(BookID, FileType, MD5SUM, FileDestDict=TingFileDestDict):
LocalFilePath = FileDestDict[FileType].format(BookID)
isValid = True
isValid = isValid and os.path.exists(LocalFilePath)
if isValid:
md5 = hashlib.md5()
File = open(LocalFilePath, "r")
md5.update(File.read())
isValid = isValid and (MD5SUM == md5.hexdigest())
print "Book: ", BookID, FileType, MD5SUM, isValid
return isValid
def GetBookFile(BookID, FileType, FileSourceDict=TingFileSourceDict, FileDestDict=TingFileDestDict):
LocalFilePath = FileDestDict[FileType].format(BookID)
FullURL = FileSourceDict[FileType].format(BookID)
print "Start Download from", FullURL
urllib.urlretrieve(FullURL, LocalFilePath)
return
def GetBookDesciptionFile(BookIDAsString, URL=TingURL, TingPath=MountedTingPath):
FullURL = "http://"
FullURL += URL
FullURL += "/get-description/id/"
FullURL += BookIDAsString
FullURL += "/area/en"
LocalFile = TingPath
LocalFile += "/"
LocalFile += BookIDAsString
LocalFile += "_en.txt"
urllib.urlretrieve(FullURL, LocalFile)
return
BookIDs = GetBookIDs()
print "Found followings BookIDs for processing:"
print BookIDs
for BookID in BookIDs:
if not(CheckForBookDesciptionFile(BookID)):
GetBookDesciptionFile(BookID)
MD5Sums = GetBookMD5Sums(BookID)
for key, value in MD5Sums.iteritems():
if value != None:
if not(CheckForBookFileValid(BookID, key, value)):
GetBookFile(BookID, key)
if not(CheckForBookFileValid(BookID, key, value)):
print "Error: download failed for Book", BookID, key
print "Job done!"
|
|
janosch24
Anmeldungsdatum: 19. Dezember 2015
Beiträge: 2
|
Hi, bei mir findet das python-script den Ting-Stift nicht (auch Ubuntu 14.04).
Hier wird der Stift unter '/media/user/TING' statt '/media/user/Ting' gemountet → musste ich im Skript anpassen, dann hat's funktioniert ... Woher die Unterschiede bei gleicher Plattform kommen ist mir unklar. Für alle die noch nach einer Alternative zu den Skript-Lösungen suchen habe ich mit den hier gefundenen Infos ein paar Zeilen Java eingetippt, um die Inhalte des Stifts in Tabellenform anzuschauen (so ähnlich wie das originale Download-Programm für den Stift unter Windows).
Sieht im Resultat so aus wie im angehängten Screenshot.
Funktioniert ganz gut, meine Family kam jedenfalls spontan klar damit.
Man muss dazu lediglich OpenJDK 7 aus den Paketquellen istallieren (falls man es nicht ohnehin schon drauf hat). Falls jemand Interesse hat, poste ich hier die jar-Datei gerne mal.
- Bilder
|
janosch24
Anmeldungsdatum: 19. Dezember 2015
Beiträge: 2
|
Hi Leute, ich antworte mir mal selbst.
Also wie ich herausgefunden habe gibt es mittlerweile mehrere 'Generationen' des Stiftes.
Daher der Fehler mit dem Verzeichnisnamen (TING statt Ting).
Unser Stift (mittlerweile schon der dritte, da die anderen abgeraucht sind) ist relativ neu und wird halt unter /media/user/TING gemountet. Habe aber auch ältere Modelle gesehen, die unter /media/user/Ting gemountet wurden. Der Ordner mit den Inhalten ist aber bei allen Varianten die ich gesehen habe gleich ($ting). Wie versprochen im Anhang das kleine Programm mit dem man sehr einfach Bücher runterladen kann (egal welche Stift-Variante). Vor der Verwendung muss man die OpenJDK-Java-7-Laufzeitumgebung aus den offiziellen Paketquellen installieren (findet man einfach unter diesem Namen im Ubuntu Software-Center). Danach die Datei TING.zip herunterladen und umbenennen in TING.jar. Die Datei TING.jar muss man dann noch als ausführbare Datei markieren (entweder so wie in buchenberger's Beitrag weiter oben, oder per Rechtsclick auf die Datei → Eigenschaften → Zugriffsrechte → Datei als Programm ausführen). Wer's noch schöner will kann das Tingsymbol im Anhang noch mit der Datei verknüpfen. Fertig. Nach dem Starten sucht das Programm standardmäßig unter /media nach dem Stift (genauer gesagt, rekursiv nach einem Verzeichnis namens $ting). Wenn das klappt werden alle lokalen Bücher eingelesen und mit den neu eingescannten in einer Tabelle angezeigt. Mit den Buttons auf der rechten seite der Tabelle kann man dann nach Lust und Laune Bücher runterladen (zumindest wenn man Internet-Zugang hat) oder vom Stift löschen. Der Vollständigkeit halber, sei noch erwähnt, dass das Programm im home-Verzeichnis einen Ordner namens '.ting' anlegt. Neben einer Logdatei mit Debug-Ausgaben findet man dort eine Konfigurationsdatei 'ting.properties' die die folgenden Einstellungen unterstützt (weglassen der Einträge bedeutet die Verwendung der hier aufgeführten Default-Werte durch das Programm):
| ting.scan.root=/media
ting.scan.depth=5
ting.scan.local.md5=false
ting.proxy.host=
ting.proxy.port=0
ting.log.level=info
ting.locale=
ting.window.width=1280
ting.window.height=800
|
Achtung: Nach dem Runterladen eines Buches sollte man den Stift nicht zu schnell vom Rechner abstöpseln, sondern erst wenn das Lämpchen am Stift aufhört zu flackern. Ansonsten ist das Buch evtl. nicht komplett drauf ... So das war's erstmal von mir. Ach ja, wer selber an dem Ding weiterbasteln will (und im Übrigen zum Zeichen dafür, dass es sich bei dem Programm nicht um Schadsoftware handelt), bekommt natürlich auch die Quellen von mir. Dazu sind dann aber vermutlich noch ein paar extra Erklärungen fällig ...
- TING.zip (78.4 KiB)
- Download TING.zip
- Ting-src.zip (56.6 KiB)
- Download Ting-src.zip
- Bilder
|
Knatterton
Anmeldungsdatum: 4. Juni 2008
Beiträge: 7
|
Moin, seit gestern haben wir auch einen TING-Stift. Mein Ubuntu "sieht" leider keine Partition darauf, d.h. der Stift wird gar nicht eingebunden. ☹ fdisk und gparted rödeln ewig herum ohne ein Ergebnis auszuspucken. Wie habt ihr die Partition einbinden können?
|
tomtomtom
Supporter
Anmeldungsdatum: 22. August 2008
Beiträge: 52312
|
Knatterton schrieb: seit gestern haben wir auch einen TING-Stift. Mein Ubuntu "sieht" leider keine Partition darauf, d.h. der Stift wird gar nicht eingebunden. ☹
Zeige bitte die Terminal-Ausgaben von lsusb sudo parted --list und dmesg (die letzte soll so lang sein, wie sie ist 😛) hier jeweils im Codeblock.
|
Knatterton
Anmeldungsdatum: 4. Juni 2008
Beiträge: 7
|
Die Ausgabe von dmesg:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22 | [ 1658.745519] usb 3-1: new high-speed USB device number 7 using xhci_hcd
[ 1658.868574] usb 3-1: New USB device found, idVendor=1b3f, idProduct=1fff
[ 1658.868576] usb 3-1: New USB device strings: Mfr=1, Product=2, SerialNumber=1
[ 1658.868577] usb 3-1: Product: TING USB Mass Storage Device
[ 1658.868578] usb 3-1: Manufacturer: TING
[ 1658.868579] usb 3-1: SerialNumber: TING
[ 1658.868914] usb-storage 3-1:1.0: USB Mass Storage device detected
[ 1658.868983] scsi10 : usb-storage 3-1:1.0
[ 1659.865131] scsi 10:0:0:0: Direct-Access TING USB -MSDC R/WDISK A 1.00 PQ: 0 ANSI: 0
[ 1659.865271] scsi 10:0:0:1: CD-ROM TING USB -CDROM RODISK A 1.00 PQ: 0 ANSI: 1
[ 1659.865411] sd 10:0:0:0: Attached scsi generic sg4 type 0
[ 1659.865565] sd 10:0:0:0: [sdd] 4227072 512-byte logical blocks: (2.16 GB/2.01 GiB)
[ 1659.865765] sd 10:0:0:0: [sdd] Write Protect is off
[ 1659.865766] sd 10:0:0:0: [sdd] Mode Sense: 03 00 00 00
[ 1659.866176] sd 10:0:0:0: [sdd] No Caching mode page found
[ 1659.866179] sd 10:0:0:0: [sdd] Assuming drive cache: write through
[ 1659.866492] sr1: scsi3-mmc drive: 0x/0x caddy
[ 1659.866583] sr 10:0:0:1: Attached scsi CD-ROM sr1
[ 1659.866632] sr 10:0:0:1: Attached scsi generic sg5 type 5
[ 1659.868281] sd 10:0:0:0: [sdd] No Caching mode page found
[ 1659.868284] sd 10:0:0:0: [sdd] Assuming drive cache: write through
[ 1659.869217] sdd: sdd1
|
parted verhält sich ebenso wie gparted oder fdisk: keine Ausgabe, rödelt ewig herum bis man abbricht. Folgendes hat jetzt funktioniert:
| sudo mount -t auto /dev/sdd1 ting
|
Schreibzugriff ist damit nur als superuser möglich. ... Muss ich noch ein bisschen dran basteln, damit der so komfortabel eingebunden wird wie andere USB-Speicher.
|
datilde
Anmeldungsdatum: 7. September 2020
Beiträge: 1
|
Hallo werte Ting-Stift-Runde, erstmal vielen Dank an alle für die verständlichen Anleitungen ☺
Leider scheint es mir so, als hätten sich irgendwelche server verändert, so dass ich nicht mal mehr manuell die Dateien herunterladen kann. Das Buch, dass ich laden möchte hat die ID 05096 (Kosmosverlag), wie aus der tbd.txt ersichtlich wird, aber das herunterladen schlägt seit Tagen fehl: ich@meincomputer$ wget http://system.ting.eu/book-files/get-description/id/05096/area/en -O /home/ich/tingtemp/05096_en.txt --2020-09-07 13:01:13-- http://system.ting.eu/book-files/get-description/id/05096/area/en Auflösen des Hostnamens system.ting.eu (system.ting.eu) … 13.80.138.170 Verbindungsaufbau zu system.ting.eu (system.ting.eu)|13.80.138.170|:80 … verbunden. HTTP-Anforderung gesendet, auf Antwort wird gewartet … 404 Not Found 2020-09-07 13:01:13 FEHLER 404: Not Found.
Hat jemand einen Tip?
|
Jayky
Anmeldungsdatum: 28. März 2009
Beiträge: 172
|
janosch24 schrieb:
Wie versprochen im Anhang das kleine Programm mit dem man sehr einfach Bücher runterladen kann (egal welche Stift-Variante). Nach dem Starten sucht das Programm standardmäßig unter /media nach dem Stift (genauer gesagt, rekursiv nach einem Verzeichnis namens $ting). Wenn das klappt werden alle lokalen Bücher eingelesen und mit den neu eingescannten in einer Tabelle angezeigt. Mit den Buttons auf der rechten seite der Tabelle kann man dann nach Lust und Laune Bücher runterladen (zumindest wenn man Internet-Zugang hat) oder vom Stift löschen. Der Vollständigkeit halber, sei noch erwähnt, dass das Programm im home-Verzeichnis einen Ordner namens '.ting' anlegt.
Hallo @janosch24, vielen Dank für die großartige Arbeit. Ich habe seit gestern einen TING und bislang hat dieser alle Bücher auf Anhieb erkannt, die ich ihm gezeigt habe. Dennoch würde es mich interessieren, ob ich testen kann, bzw. ob die Script unter Ubuntu 20.04 ebenfalls läuft.
Ich hatte bislang nur erfolglose Versuche, vermute aber es lag daran, das der Stift kein "unbekanntes Buch" gezeigt bekommen hat. Ich habe mal eine Log aus dem .ting Verzeichnis angehängt, die den Eintrag "Could not start Ting" beinhaltet.
Jetzt meine Frage: Liegt es daran, dass die tbd.txt leer ist oder ist der Fehler an einer anderen Stelle zu suchen? Und falls es an der leeren tbd.txt liegt, kann ich die mit einem manuellen Eintrag so manipulieren, dass das Scritpt Futter hätte um zu starten? Auch wenn es lange her ist, hoffe ich, du findest Zeit für eine Antwort. 😀
- ting.log.0.4 (1.3 KiB)
- Download ting.log.0.4
|