Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht Das deutsche QBasic- und FreeBASIC-Forum
Für euch erreichbar unter qb-forum.de, fb-forum.de und freebasic-forum.de!
 
FAQFAQ   SuchenSuchen   MitgliederlisteMitgliederliste   BenutzergruppenBenutzergruppen  RegistrierenRegistrieren
ProfilProfil   Einloggen, um private Nachrichten zu lesenEinloggen, um private Nachrichten zu lesen   LoginLogin
Zur Begleitseite des Forums / Chat / Impressum
Aktueller Forenpartner:

Subtitle to SRT

 
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Projektvorstellungen
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
Elvis



Anmeldungsdatum: 01.06.2006
Beiträge: 818
Wohnort: Deutschland, BW

BeitragVerfasst am: 04.03.2010, 17:16    Titel: Subtitle to SRT Antworten mit Zitat

Hallo,

Mein Programm konvertiert subtitle-Dateien (DivX Author) in srt-Dateien (SubRip). Beide Dateiformate sind sehr einfach, da komplett in Klartext. Trotzdem (vielleicht, weil DivX Author wahrscheinlich kaum verbreitet ist) habe ich im Internet kein vergleichbares Tool finden können.

Überschneidungen von Untertiteln (ein Untertitel wird zu lange angezeigt und schiebt sich unter den nachfolgenden) werden automatisch korrigiert. Weiter kann der minimale Abstand zwischen zwei Untertiteln in frames bestimmt werden.
Mit thailändischen Schriftzeichen gab es keine Probleme. Ich schätze also, es sieht genauso für z.B. osteuropäische Schriftarten aus.

Ich fürchte, es gibt hier im Forum niemanden, der mit solchen Dateiformaten viel arbeitet. Über eine kleine Resonanz würde ich mich trotzdem sehr freuen.

Code:

CLS
COLOR 7, 1
PRINT " Konverter fr Untertitel                                                       "
PRINT " [*.subtitle (Divx Author 1.5) nach *.srt (SubRip)]                              "
PRINT "                                                                                "
COLOR 7, 0
PRINT
INPUT "Quelldatei [subitlte]: ", quelldatei$
INPUT "Zieldatei [srt]: ", zieldatei$
PRINT
INPUT "Mindestpause zwischen Untertiteln [in frames]? ", mindestpause

OPEN quelldatei$ FOR INPUT AS #1
OPEN "e:\temp.txt" FOR OUTPUT AS #2

FOR a = 1 TO 13
 LINE INPUT #1, nix$
NEXT a

nummer1 = -1
nummer2 = 0

DO

LINE INPUT #1, zeile1$

FOR komma = 1 TO 10
 zeichen$ = MID$(zeile1$, komma, 1)
 IF zeichen$ = "," THEN kommastelle = komma: komma = 10
NEXT komma

zeit0$ = MID$(zeile1$, kommastelle + 4, 12)
zeit1$ = MID$(zeile1$, kommastelle + 19, 12)
text1$ = MID$(zeile1$, kommastelle + 36, LEN(zeile1$) - 37)
text1$ = MID$(text1$, 1, LEN(text1$) - 1)
nummer1 = nummer1 + 2

LINE INPUT #1, zeile2$

FOR komma = 1 TO 10
 zeichen$ = MID$(zeile2$, komma, 1)
 IF zeichen$ = "," THEN kommastelle = komma: komma = 10
NEXT komma

zeit2$ = MID$(zeile2$, kommastelle + 4, 12)
zeit4$ = MID$(zeile2$, kommastelle + 19, 12)
text2$ = MID$(zeile2$, kommastelle + 36, LEN(zeile2$) - 37)
text2$ = MID$(text2$, 1, LEN(text2$) - 1)
nummer2 = nummer2 + 2


std1 = VAL(MID$(zeit1$, 1, 2))
min1 = VAL(MID$(zeit1$, 4, 2))
sek1 = VAL(MID$(zeit1$, 7, 2))
mil1 = VAL(MID$(zeit1$, 10, 3))
std2 = VAL(MID$(zeit2$, 1, 2))
min2 = VAL(MID$(zeit2$, 4, 2))
sek2 = VAL(MID$(zeit2$, 7, 2))
mil2 = VAL(MID$(zeit2$, 10, 3))


IF std1 > std2 THEN std1 = std2: min1 = min2: sek1 = sek2: mil1 = mil2 - mindestpause

IF min1 > min2 THEN min1 = min2: sek1 = sek2: mil1 = mil2 - mindestpause

IF sek1 > sek2 THEN sek1 = sek2: mil1 = mil2 - mindestpause

IF sek1 = sek2 AND mil1 > mil2 THEN mil1 = mil2 - mindestpause

IF mil2 + mindestpause > mil1 THEN mil2 = mil1 - mindestpause


100 IF std1 = 10 OR std1 > 10 THEN std1$ = STR$(std1): GOTO 200
120 IF std1 = 1 OR std1 > 1 THEN std1$ = "0" + STR$(std1): GOTO 200
140 IF std1 = 0 THEN std1$ = "00":

200 IF min1 = 10 OR min1 > 10 THEN min1$ = STR$(min1): GOTO 300
220 IF min1 = 1 OR min1 > 1 THEN min1$ = "0" + STR$(min1): GOTO 300
240 IF min1 = 0 THEN min1$ = "00":

300 IF sek1 = 10 OR sek1 > 10 THEN sek1$ = STR$(sek1): GOTO 400
320 IF sek1 = 1 OR sek1 > 1 THEN sek1$ = "0" + STR$(sek1): GOTO 400
340 IF sek1 = 0 THEN sek1$ = "00":

400 IF mil1 = 100 OR mil1 > 100 THEN mil1$ = STR$(mil1): GOTO 500
420 IF mil1 = 10 OR mil1 > 10 THEN mil1$ = "0" + STR$(mil1): GOTO 500
440 IF mil1 = 1 OR mil1 > 1 THEN mil1$ = "00" + STR$(mil1): GOTO 500
460 IF mil1 = 0 THEN mil1$ = "000":

500 IF std2 = 10 OR std2 > 10 THEN std2$ = STR$(std2): GOTO 600
510 IF std2 = 1 OR std2 > 1 THEN std2$ = "0" + STR$(std2): GOTO 600
520 IF std2 = 0 THEN std2$ = "00"

600 IF min2 = 10 OR min2 > 10 THEN min2$ = STR$(min2): GOTO 700
610 IF min2 = 1 OR min2 > 1 THEN min2$ = "0" + STR$(min2): GOTO 700
620 IF min2 = 0 THEN min2$ = "00"

700 IF sek2 = 10 OR sek2 > 10 THEN sek2$ = STR$(sek2): GOTO 800
710 IF sek2 = 1 OR sek2 > 1 THEN sek2$ = "0" + STR$(sek2): GOTO 800
720 IF sek2 = 0 THEN sek2$ = "00"

800 IF mil2 = 100 OR mil2 > 100 THEN mil2$ = STR$(mil2): GOTO 900
810 IF mil2 = 10 OR mil2 > 10 THEN mil2$ = "0" + STR$(mil2): GOTO 900
820 IF mil2 = 1 OR mil2 > 1 THEN mil2$ = "00" + STR$(mil2): GOTO 900
830 IF mil2 = 0 THEN mil2$ = "000"

900

zeit1$ = std1$ + ":" + min1$ + ":" + sek1$ + "," + mil1$
FOR i = 1 TO LEN(zeit1$)
 zeichen$ = MID$(zeit1$, i, 1)
 IF zeichen$ <> CHR$(32) THEN zeitblank$ = zeitblank$ + zeichen$
NEXT i
zeit1$ = zeitblank$: zeitblank$ = ""

zeit2$ = std2$ + ":" + min2$ + ":" + sek2$ + "," + mil2$
FOR i = 1 TO LEN(zeit2$)
 zeichen$ = MID$(zeit2$, i, 1)
 IF zeichen$ <> CHR$(32) THEN zeitblank$ = zeitblank$ + zeichen$
NEXT i
zeit2$ = zeitblank$: zeitblank$ = ""

nummer1$ = STR$(nummer1): nummer1$ = LTRIM$(nummer1$)
nummer2$ = STR$(nummer2): nummer2$ = LTRIM$(nummer2$)


PRINT #2, nummer1$
PRINT #2, zeit0$ + " --> " + zeit1$
PRINT #2, text1$: PRINT #2, ""
PRINT #2, nummer2$
PRINT #2, zeit2$ + " --> " + zeit4$
PRINT #2, text2$
PRINT #2, ""


LOOP WHILE NOT EOF(1)


CLOSE #1
CLOSE #2

OPEN "e:\temp.txt" FOR INPUT AS #1
OPEN zieldatei$ FOR OUTPUT AS #2

DO

text1$ = "": text2$ = "": text3$ = ""

LINE INPUT #1, nummer$
LINE INPUT #1, zeiten$
LINE INPUT #1, text1$
LINE INPUT #1, nix$

FOR i = 1 TO LEN(text1$)
 IF MID$(text1$, i, 2) = "\n" THEN text2$ = MID$(text1$, i + 2, LEN(text1$) - i): text1$ = MID$(text1$, 1, i - 1): i = LEN(text1$)
NEXT i

IF text2$ <> "" THEN
 FOR i = 1 TO LEN(text2$)
  IF MID$(text2$, i, 2) = "\n" THEN text3$ = MID$(text2$, i + 2, LEN(text1$) - i): text2$ = MID$(text2$, 1, i - 1): i = 10
 NEXT i
END IF

PRINT #2, nummer$
PRINT #2, zeiten$
PRINT #2, text1$
IF text2$ <> "" THEN PRINT #2, text2$
IF text3$ <> "" THEN PRINT #2, text3$
PRINT #2, nix$

LOOP WHILE NOT EOF(1)

CLOSE #1
CLOSE #2

KILL "e:\temp.txt"

PRINT : PRINT
PRINT "Datei erfolgreich konvertiert."
PRINT
PRINT "Beliebige Taste drücken..."
SLEEP


Könnt ihr mir einen geeigneten Webspace nennen, wo ich die kompilierte EXE-Datei hochladen kann? Ich möchte jemandem, der dieses Programm möglicherweise über Google findet, nicht zumuten müssen, sich mit einem Compiler zu beschäftigen.

Grüße,
Elvis
_________________
Geforce 7300GT (256MB GDDR3, Gainward) -- 2x 512MB (DDR2 800, MDT) -- AMD Athlon64 X2 EE 3800+ -- Asrock ALiveNF5-eSATA2+
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
28398



Anmeldungsdatum: 25.04.2008
Beiträge: 1917

BeitragVerfasst am: 05.03.2010, 15:03    Titel: Antworten mit Zitat

funpic.de, ohost o.ä.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
St_W



Anmeldungsdatum: 22.07.2007
Beiträge: 949
Wohnort: Austria

BeitragVerfasst am: 06.03.2010, 19:53    Titel: Antworten mit Zitat

Ich habe die Dateiformate noch nie verwendet und auch keine solche Datei zum Testen - zu deinem Projekt kann ich folglich leider nichts sagen (außer dass die GOTO's nicht unbedingt die schönste Lösung sind lächeln ).

Als Webhoster könnte ich dir bplaced.net empfehlen. Von funpic.de würde ich in letzter Zeit eher abraten. Die haben die dortige Situation derzeit nicht so ganz im Griff (meine Homepage ist z.B. schon seit einigen Monaten (!) nicht erreichbar). Weiters hat funpic eine ärgerliche Dateigrößenbeschränkung und Werbung, was bei bplaced wegfällt.
_________________
Aktuelle FreeBasic Builds, Projekte, Code-Snippets unter http://users.freebasic-portal.de/stw/
http://www.mv-lacken.at Musikverein Lacken (MV Lacken)
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Beiträge der letzten Zeit anzeigen:   
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Projektvorstellungen Alle Zeiten sind GMT + 1 Stunde
Seite 1 von 1

 
Gehe zu:  
Du kannst keine Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum nicht antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.

 Impressum :: Datenschutz