Synology-Forum.nl

Tweaks / Addons A.K.A. The Underground => Media Streaming mods => Topic gestart door: mvveelen op 24 juli 2017, 13:03:06

Titel: iconv op DS414
Bericht door: mvveelen op 24 juli 2017, 13:03:06
Hi,

ik heb al mijn media met externe .srt bestanden op mijn NAS staan. Nu heb ik begrepen dat ik mbv iconv alle .srt bestanden kan omzetten naar UTF-8 (een must omdat ik nu bij elke aflevering dit handmatig moet instellen). Alleen kent m'n Syno het commando 'iconv' niet.  Hoe krijg ik dit geïnstalleerd (zonder bootstrap) zodat ik het toch kan gebruiken?

Of is er een andere mogelijkheid dat ik alle .srt bestanden kan zoeken, omzetten naar UTF-8 en dan ook nog eens in een cron ?
Titel: Re: iconv op DS414
Bericht door: Ben(V) op 24 juli 2017, 16:23:03
piconv staat wel op je Nas en kan hetzelfde.

Hier vind je de syntax:
http://para.se/perldoc/piconv.html

Overigens zijn alle ascii karakter gelijk in utf-8 en windows codepages.
Alleen de karakters met speciale tekens verschilen.

Als je autosub gebruikt om je subs te downloaden zit daar een setting in om het formaat van de .srt file op utf-8 te zetten.
Autosub converteert dan voor je als dat nodig is.
Titel: Re: iconv op DS414
Bericht door: mvveelen op 24 juli 2017, 18:17:05
Ik heb net ontdekt dat iconv wel degelijk op de Syno staat, je moet er alleen php voor zetten.....

Nu nog een script vinden dat precies doet wat ik wil: alle .srt bestanden opslaan als UTF-8

Ik gebruik wel Autosub, maar veelal haal ik QoQ afleveringen binnen en haal ik daar de .srt uit en converteer ik video en audio tot 1 .mkv bestand. Vraag me niet waarom, maar dat is ooit zo gestart en ik trek die lijn door. Ik wil nu alleen dus die .srt bestanden 'en masse' omzetten.
Titel: Re: iconv op DS414
Bericht door: Ben(V) op 24 juli 2017, 18:23:13
http://www.ustrem.org/en/articles/bash-iconv-all-files-from-directory-en/
Titel: Re: iconv op DS414
Bericht door: mvveelen op 24 juli 2017, 18:25:34
Hey,

die ga ik eens goed bekijken. Ik had al gestoeid met een ander script en dat resulteerde in alle seizoenen van 1 serie die nu .srt bestanden van 1Kb hebben  :'(  Ik ga dus eerst verder testen in een mapje waar het geen kwaad kan, en ondertussen op zoek naar die hele serie met bijbehorende .srt bestanden, hahahaha.

Thanks !
Titel: Re: iconv op DS414
Bericht door: Ben(V) op 24 juli 2017, 19:52:48
Als het niet lukt kan ik wel een python script voor je schrijven, maar dan zul je tot het weekend moeten wachten.
Titel: Re: iconv op DS414
Bericht door: mvveelen op 24 juli 2017, 19:55:28
Ik wil dan wel wachten eigenlijk. Ik ben nu de serie aan het binnenharken en heb liever iets dat goed werkt.

Hoe wil je het gaan aanpakken? De bestaande .srt renamen naar .bak en dan de UTF-8-srt opslaan als .srt met dezelfde naam als de oude/originele/bestaande .srt? Ach, ik merk het wel :)
Titel: Re: iconv op DS414
Bericht door: Ben(V) op 25 juli 2017, 06:15:16
Die sub uit de video halen doe je dat op een windows systeem?

Met andere woorden, weet je zeker dat al je sub's met een windows codepage zijn gemaakt?
Als je namelijk gaat omzetten naar utf-8 en de sub is al utf-8 dan gaat er van alles mis.

Bij converteren moet je weten in welk formaat de bron weggeschreven is.
Titel: Re: iconv op DS414
Bericht door: mvveelen op 25 juli 2017, 07:22:17
Het converteren doe ik dmv MKVtools op een MacBook Pro. Wat voor codering het (over het algemeen) is durf ik niet te zeggen. Het zal ook vast niet 100% hetzelfde zijn. Is er geen check in te bouwen die bepaalt wat de codering het is en als het al UTF-8 is om het dan met rust te laten en als het een andere codering is om het dan naar UTF-8 om te zetten?

Hoe kan ik dmv wat steekproeven bekijken wat de coderingen nu zijn?
Titel: Re: iconv op DS414
Bericht door: Ben(V) op 25 juli 2017, 12:04:50
Dan zit daar vermoedelijk je probleem.

De standaard encoding van een MAC is UTF-8, dus als er bij het maken van de .mkv niet is aangegeven welke codering gebruikt wordt dan zal mkvtoolnix de standaard codering van de MAC gebruiken.
Als er in de .mkv het wel netjes is aangegeven zal mkvtoolnix de sub converteren naar UTF-8 ( of zo laten als hij al utf-8 was).

De meeste .mkv's waar al een sub in zit zijn gemaakt op windows systemen en daar gaat het dus fout bij elk speciaal karakter, want als het 8ste bit op een staat dan wordt het karakter opgezocht in de actuele codepage.
Bij utf-8 geeft het 8ste bit aan dat het een adres (van 2, 3 of 4 byte) is in de utf-8 code tabel.

Met behulp van mkvinfo kun je kijken of er een codec opgegeven is en zo ja welke codering gebruikt is.

Ik weet niet hoe het met mkvtoolnix zit, maar zelf gebruik ik ffmpeg om subs uit een mkv te halen en daarmee kun je opgeven welke codec gebruikt moet worden.
Als ik dan windows-1252 gebruikt gaat het altijd goed.

EDIT:
Ik kan wel een python progje voor je schrijven die met behulp van ffmpeg de video,audio en nederlandse sub uit je .mkv haalt en daar weer een nieuwe .mkv van maakt.
Kan allemaal op je NAS draaien en via de taakplanner regelmatig laten draaien.
Titel: Re: iconv op DS414
Bericht door: mvveelen op 25 juli 2017, 12:44:27
Het is MKVtools, niet MKVtoolnix wat ik gebruik. Ik heb die een tijd geleden aangeschaft hiervoor.

Er is dus geen mogelijkheid om dmv een script eerst uit te lezen wat de codering is en het dan om te laten zetten als het geen UTF-8 is?

Als ik handmatig de .srt bestanden in Windows (Parallels op de MacBook) via een Dos boxje omzet mbv Subtitleedit, dan pakt deze alle .srt bestanden en zet ze om, klaar. Of het nu al UTF-8 bestanden zijn of niet. Alleen is dat dan wel een flinke klus. Of ik moet het in Dos gaan scripten dat hij alle directories van de NAS afstruint en de .srt bestanden dan omzet. Ook niet erg, maar liever dmv een cron op de NAS natuurlijk :)
Titel: Re: iconv op DS414
Bericht door: mvveelen op 25 juli 2017, 12:46:33


EDIT:
Ik kan wel een python progje voor je schrijven die met behulp van ffmpeg de video,audio en nederlandse sub uit je .mkv haalt en daar weer een nieuwe .mkv van maakt.
Kan allemaal op je NAS draaien en via de taakplanner regelmatig laten draaien.

Lees dit nu pas :)

Daar kan ik in ieder geval eens mee gaan testen om te zien of dat het euvel verhelpt.
Titel: Re: iconv op DS414
Bericht door: Ben(V) op 25 juli 2017, 12:49:36
Zal van het weekend wel wat in elkaar prutsen.
Hou deze post in de gaten voor het resultaat.
Titel: Re: iconv op DS414
Bericht door: mvveelen op 25 juli 2017, 20:28:56
Will do.

Maar het hoeft niet zo te zijn dat het de video/audio convert naar .mkv en dan de .srt eruit filtert hoor? Want wat ik heb staan is 99,9% .mkv met alleen maar video+audio en dan los erbij de .srt files.

Edit:

Al browsend kwam ik het commando "chardetect" tegen. Ik heb wat .srt files in een testmapje gezet en dit komt eruit:

root@DiskStation:/volume1/web/test# /usr/bin/chardetect *.srt
Colony S01E01 Pilot.srt: utf-8 with confidence 0.99
Colony S01E02 A Brave New World.srt: utf-8 with confidence 0.99
Colony S01E03 98 Seconds.srt: utf-8 with confidence 0.99
Colony S01E04 Blind Spot.srt: utf-8 with confidence 0.99
Colony S01E05 Geronimo.srt: utf-8 with confidence 0.99
Colony S01E06 Yoknapatawpha.srt: utf-8 with confidence 0.99
Dexter S01E01 Dexter.srt: UTF-8-SIG with confidence 1.0
Dexter S01E02 Crocodile.srt: UTF-8-SIG with confidence 1.0
Dexter S01E03 Popping Cherry.srt: UTF-8-SIG with confidence 1.0
Dexter S01E04 Let's Give the Boy a Hand.srt: UTF-8-SIG with confidence 1.0
Designated Survivor S01E17 The Ninth Seat.srt: UTF-8-SIG with confidence 1.0
Designated Survivor S01E18 Lazarus.srt: UTF-8-SIG with confidence 1.0
Designated Survivor S01E19 Misalliance.srt: UTF-8-SIG with confidence 1.0
Designated Survivor S01E20 Bombshell.srt: UTF-8-SIG with confidence 1.0

Hieruit zou je kunnen concluderen dat alleen de laatste 8 "echte" UTF-8 coderingen hebben. De laatste 4 heb ik gecontroleerd tijdens het kijken van die afleveringen en daar ging inderdaad alles goed met speciale leestekens zoals àáèéë, enz.

Misschien kan dit nuttig zijn bij het maken van een script ?
Titel: Re: iconv op DS414
Bericht door: Ben(V) op 26 juli 2017, 06:27:34
Volgens mij zegt chardetect dat ze allemaal utf-8 zijn.
Een zekerheid van 0.99 is tamelijk hoog.

Er zijn utf-8 met BOM bestanden die aan het begin van het bestand een signature hebben waaraan je kunt zien dat het een utf-8 bestand is.
Als chardetect zo'n bestand tegenkomt concludeert hij met 100% zekerheid dat het een utf-8 bestand is, in andere gevallen gaat hij door het bestand heen en probeert te raden welk soort bestand dat is en dan krijg je nooit een score van 1.0 maar altijd lager.
Die bestanden met een BOM erin zijn die met een "utf-8-sig" codec.

Zijn dit sub's die je uit een .mkv gehaalt hebt of komen ze elders vandaan?
Haal eens een sub door chardetect waarvan je weet dat de speciale karakters verkeerd worden weergegeven.

Waar speel je de video's mee af trouwens, want de meeste players kunnen met meerdere codecs werken.
Op mijn mediaplayer kun je kiezen tussen utf-8 en windows-latin.
Titel: Re: iconv op DS414
Bericht door: mvveelen op 26 juli 2017, 07:35:20
Met de 4 laatste had ik dat alles goed werd weergegeven.

De .srt bestanden haal ik uit de .mkv en ik laat vervolgens dmv een cron de rommel omzetten naar de juiste karakters. Dus bijv: à wordt à

Echter, de PCH A400 geeft dan toch de rommel (à) weer, behalve als ik in het menu scroll naar UTF-8 encoding. Dit laatste is niet vast te zetten en moet ik voor elke aflevering weer opnieuw instellen.
BEHALVE als ik het door subtitleedit haal, dan speelt ie het wel meteen goed af. Vandaar dat ik een methode zocht om alle .srt bestanden automatisch om te laten zetten.

Die 99% of 0,99 is in mijn geval dan niet OK en pas bij de 1,00 speelt de A400 ze goed af zonder ingrijpen.
Titel: Re: iconv op DS414
Bericht door: Ben(V) op 26 juli 2017, 08:19:42
Waarschijnlijk herkent die PCH A400 alleen utf-8 correct als hij een utf-8-sig in het bestand vind en anders zal hij ze wel als een windows codec behandelen en dat gaat dan fout.

Overigens kun je niet zomaar een karakter in een utf-8 bestand veranderen, want buiten de standaard ascii karakters bestaat utf-8 helemaal niet uit karakters maar zijn indexes in een tabel van karakters.
Die indexes zijn 2 of 3 bytes groot.
Als je de eerste vervangt door een ascii karakter dan heb je een ongedefinieerd tweede( en eventueel derde) byte.

Even de functionaliteit samenvatten voor het te bouwen script.
Titel: Re: iconv op DS414
Bericht door: mvveelen op 26 juli 2017, 08:23:06
Da's een hele waslijst, maar voor mij is dat eerste deel niet persé nodig. Het stukje mbt de .srt wel. Maar misschien dat je het voor een breder publiek wilt maken, dat kan natuurlijk :)
Titel: Re: iconv op DS414
Bericht door: Ben(V) op 26 juli 2017, 08:38:27
Wat bedoel je precies met alleen het laatste stukje?
Titel: Re: iconv op DS414
Bericht door: mvveelen op 26 juli 2017, 08:50:58
Converteer de .srt naar utf-8-sig en stop die in de .mkv
Optioneel: Verwijder of verplaats de .old en/of .srt

Of je moet een andere oplossing voor me hebben? Want de .mkv bestanden die ik heb bestaan alleen nog maar uit video en audio, dus de .srt eruit halen gaat 'm niet worden :)
Titel: Re: iconv op DS414
Bericht door: Ben(V) op 26 juli 2017, 09:44:38
Ok gaan we doen.

EDIT:
Kun je eens proberen een sub die niet goed weergegeven wordt door je PCH naar ISO-8859-1 te converteren en kijken of hij dan wel goed weergeeft?
Dat converteren doe je door deze commandline op je NAS:
piconv -f utf8 -t ISO-8859-1 Input_file.srt > Output_file.srt

Vervang ""Input_file.srt door de naam van je sub file

Ik vermoed namelijk datje PCH bij geen BOM gewoon ISO-8859-1 aanneemt als codering en jij hebt met mkvtools alles naar UTF-8 geconverteerd.
Titel: Re: iconv op DS414
Bericht door: mvveelen op 31 juli 2017, 18:02:03
Ik zie nu pas je berichtje, zal het eens gaan testen. Moet eerst nog even wat zoeken hier (of een nieuw topic openen als ik het antwoord niet kan vinden :))

Edit: als ik dit doe, dan krijg ik een lege .srt terug ? Hoewel, leeg.... er staat in: Could not open input file: piconv

root@DiskStation:/volume1/Media/SERIES/Devious Maids/Seizoen 3# php piconv -f utf8 -t ISO-8859-1 'Devious Maids S03E01 Awakenings.srt' > 'Devious Maids S03E01 Awakenings2.srt'
Titel: Re: iconv op DS414
Bericht door: Ben(V) op 31 juli 2017, 19:46:53
die php moet er niet voor.
Het is een pearl script en geen php

Titel: Re: iconv op DS414
Bericht door: mvveelen op 31 juli 2017, 19:51:07
Dan kom ik niet verder:

root@DiskStation:/usr/local/bin# cd '/volume1/Media/SERIES/Devious Maids/Seizoen 3'
root@DiskStation:/volume1/Media/SERIES/Devious Maids/Seizoen 3# piconv -f utf8 -t ISO-8859-1 'Devious Maids S03E01 Awakenings.srt' > 'Devious Maids S03E01 Awakenings2.srt'
-ash: piconv: command not found
root@DiskStation:/volume1/Media/SERIES/Devious Maids/Seizoen 3#

Ik heb hetzelfde met het commando mosquitto_pub .... ergens zal dit toegevoegd moeten worden zodat het commando bekend is, waar ik het ook gebruik op de cli. Heb daarvoor een ander topic geopend, maar begrijp nog niet goed hoe dat werkt helaas.

Edit: mosquitto_pub is opgelost, thanks Birdy :) !
Titel: Re: iconv op DS414
Bericht door: Birdy op 31 juli 2017, 20:14:29
Doe eens:
Citaat
echo $PATH
Titel: Re: iconv op DS414
Bericht door: mvveelen op 31 juli 2017, 20:15:49
root@DiskStation:/usr/sbin# echo $PATH
/sbin:/bin:/usr/sbin:/usr/bin:/usr/syno/sbin:/usr/syno/bin:/usr/local/sbin:/usr/local/bin:/volume1/@appstore/mosquitto/bin


root@DiskStation:/usr/sbin# ls
aa-log-parser    debugfs       hwclock            iptables          losetup    mkfs.ext4       ntpdate        pptp        reload       showmount  tc               vgcreate
aa-status        dhclient      idmapd             iptables-restore  lslocks    mkfs.fat        ntpdc          pvcreate    repquota     shutdown   tcpdump          vgdisplay
apparmor_parser  dmsetup       ietadm             iptables-save     lsmod      mkfs.msdos      ntpq           pvdisplay   resize2fs    slapd      telinit          vgextend
arp              e2fsck        ietd               iptables-xml      lvcreate   mkfs.vfat       openvpn        pvremove    restart      sm-notify  tracepath        vgreduce
arping           eject         ifconfig           iscsiadm          lvdisplay  mkswap          parted         pvresize    rmmod        sparted    tune2fs          vgremove
avahi-browse     exportfs      init               iscsid            lvextend   modprobe        poweroff       pvs         route        start      umount.ecryptfs  vgs
avahi-daemon     fdisk         initctl            iscsi-iname       lvm        mountd          pppd           quota       rpcbind      statd      unix_chkpwd      wpa_cli
badblocks        fsck.ext3     insmod             iw                lvremove   mount.ecryptfs  pppoe          quotacheck  rpcinfo      status     upsd             wpa_passphrase
blockdev         fsck.ext4     ip                 iwconfig          lvs        mount.nfs       pppoe-connect  quotaoff    runlevel     stop       upsmon           wpa_supplicant
bluetoothd       fsck.hfsplus  ip6tables          iwlist            mdadm      nfsd            pppoe-relay    quotaon     saslauthd    svcgssd    upssched         xl2tpd
clockdiff        fstrim        ip6tables-restore  iwpriv            mkdosfs    nfsstat         pppoe-start    rarpd       saslpasswd2  swapoff    vgcfgbackup      xtables-multi
crond            getty         ip6tables-save     kinit             mke2fs     nslcd           pppoe-status   rdisc       setquota     swapon     vgcfgrestore
dbus-daemon      halt          ipsec              klist             mkfs.ext3  ntpd            pppoe-stop     reboot      sfdisk       sysctl     vgchange
root@DiskStation:/usr/sbin#
Titel: Re: iconv op DS414
Bericht door: Birdy op 31 juli 2017, 20:27:35
Citaat
root@DiskStation:/usr/sbin# ls
Staat niet in /usr/sbin maar in /usr/local/bin

En die staat in je PATH:
Citaat
/sbin:/bin:/usr/sbin:/usr/bin:/usr/syno/sbin:/usr/syno/bin:/usr/local/sbin:/usr/local/bin:/volume1/@appstore/mosquitto/bin

Dus ik snap ff niet waarom je die foutmelding krijgt.
Titel: Re: iconv op DS414
Bericht door: mvveelen op 31 juli 2017, 20:32:02
- ik ben weer bij  :D -

Ja, die staat in het pad inderdaad. En 'hij' staat er ook inderdaad:

root@DiskStation:/usr/local/bin# ls
bin       easy         etc               h2xs      instmodsh  nano  pdftops     perldoc     php56-cgi  pl2pm     pod2usage   pstruct   python3     splain
c2ph      easy-server  feasibilitycheck  htdigest  json_pp    node  perl        perlivp     php56-fpm  pod2html  podchecker  ptar      python3.5   vendor_perl
corelist  enc2xs       gs                htpasswd  lib        npm   perl5.24.0  perlthanks  phpdbg56   pod2man   podselect   ptardiff  python3.5m  xsubpp
cpan      encguess     h2ph              httpd22   libnetcfg  nvm   perlbug     php56       piconv     pod2text  prove       ptargrep  shasum      zipdetails
root@DiskStation:/usr/local/bin# piconv -l
-ash: piconv: command not found
Titel: Re: iconv op DS414
Bericht door: Birdy op 31 juli 2017, 20:36:49
Geef het volgende commando eens:

piconv -l
Titel: Re: iconv op DS414
Bericht door: mvveelen op 31 juli 2017, 20:37:51
:)

Zie mijn vorige bericht.
Titel: Re: iconv op DS414
Bericht door: Birdy op 31 juli 2017, 20:45:42
O ja.... :lol:
Vreemd, ik kan (op dit moment) niet verklaren waarom piconv niet gevonden wordt :'(
Titel: Re: iconv op DS414
Bericht door: Birdy op 31 juli 2017, 20:54:41
login as: admin
admin@192.168.1.23's password:
admin@DS716II:~$ sudo -i
root@DS716II:~# cd /volume1/T1
root@DS716II:/volume1/T1# piconv -l
7bit-jis
AdobeStandardEncoding
.
.
enz......

root@DS716II:/volume1/T1# echo $PATH
/sbin:/bin:/usr/sbin:/usr/bin:/usr/syno/sbin:/usr/syno/bin:/usr/local/sbin:/usr/local/bin

Ik zie het niet, jij hebt hetzelfde PATH, behalve dat jij dan de laatste toevoeging hebt en ik niet.

root@DiskStation:/usr/sbin# echo $PATH
/sbin:/bin:/usr/sbin:/usr/bin:/usr/syno/sbin:/usr/syno/bin:/usr/local/sbin:/usr/local/bin:/volume1/@appstore/mosquitto/bin
Titel: Re: iconv op DS414
Bericht door: mvveelen op 31 juli 2017, 20:59:42
Ja toch?

Ik begrijp het ook niet. Lijkt me ook niet dat je piconv om zeep kunt helpen door het een of ander.   :|
Titel: Re: iconv op DS414
Bericht door: Birdy op 31 juli 2017, 21:08:39
Doe eens:
ls -la /usr/local/bin/piconv
Titel: Re: iconv op DS414
Bericht door: mvveelen op 31 juli 2017, 21:09:25
root@DiskStation:/usr/local/bin# ls -la /usr/local/bin/piconv
lrwxrwxrwx 1 root root 44 Jul 17 21:51 /usr/local/bin/piconv -> /volume1/@appstore/Perl/usr/local/bin/piconv

root@DiskStation:/usr/local/bin# cd /volume1/@appstore/
root@DiskStation:/volume1/@appstore# ls
Apache2.2              CloudSync      get-pip.py  HyperBackup       LogCenter  mosquitto  Node.js_v4  py3k          sickbeard-custom  SurveillanceStation  WebStation
AudioStation           cronjobeditor  git         HyperBackupVault  MariaDB    nano       nzbget      python        Spotweb           TextEditor
AutoSub-BootstrapBill  domoticz       git-server  Init_3rdparty     monit      Node.js    PHP5.6      PythonModule  StorageAnalyzer   VPNCenter

Mis ik de 'Perl'-map ??
Titel: Re: iconv op DS414
Bericht door: Birdy op 31 juli 2017, 21:11:12
Precies hetzelfde, het is een link.....

Doe eens:
ls -la /volume1/@appstore/Perl/usr/local/bin/piconv
Titel: Re: iconv op DS414
Bericht door: mvveelen op 31 juli 2017, 21:11:46
root@DiskStation:/volume1/@appstore# ls -la /volume1/@appstore/Perl/usr/local/bin/piconv
ls: cannot access /volume1/@appstore/Perl/usr/local/bin/piconv: No such file or directory

Edit:

Perl package geïnstalleerd en nu werkt het meteen:

root@DiskStation:/volume1/@appstore# ls -la /volume1/@appstore/Perl/usr/local/bin/piconv
-rwxr-xr-x 1 root root 8331 Dec 12  2016 /volume1/@appstore/Perl/usr/local/bin/piconv

root@DiskStation:/volume1/@appstore# piconv -l
7bit-jis
AdobeStandardEncoding
AdobeSymbol
AdobeZdingbat
ascii
ascii-ctrl
big5-eten
big5-hkscs
cp1006
cp1026
cp1047
cp1250
cp1251
cp1252
cp1253
cp1254
cp1255
cp1256

-knip-

null
posix-bc
shiftjis
symbol
UCS-2BE
UCS-2LE
UTF-16
UTF-16BE
UTF-16LE
UTF-32
UTF-32BE
UTF-32LE
UTF-7
utf-8-strict
utf8
viscii
root@DiskStation:/volume1/@appstore#
Titel: Re: iconv op DS414
Bericht door: Birdy op 31 juli 2017, 21:17:26
Dat is dus het probleem, is een stapje verder.....ik denk dat er wat fout zit in Perl,

Ik krijg:
ls -la /volume1/@appstore/Perl/usr/local/bin/piconv
-rwxr-xr-x 1 root root 8331 Dec 12  2016 /volume1/@appstore/Perl/usr/local/bin/piconv

Bestaat "/volume1/@appstore/Perl" wel ? Zo ja, usr, local, bin ook ?
En staat piconv ook daar ?
Titel: Re: iconv op DS414
Bericht door: mvveelen op 31 juli 2017, 21:18:54
Zie m'n edit in de post hiervoor. Na installeren van Perl package werkt het wel :) !
Titel: Re: iconv op DS414
Bericht door: Birdy op 31 juli 2017, 21:21:26
O...ok...die EDIT had ik niet gezien maar, zou ook mijn idee geweest zijn. :D
Enig idee waardoor Perl om zeep was geholpen ?
Titel: Re: iconv op DS414
Bericht door: Birdy op 31 juli 2017, 21:22:36
Persoonlijk hou ik niet zo van EDIT's ;)
Titel: Re: iconv op DS414
Bericht door: mvveelen op 31 juli 2017, 21:23:13
Nee? Tenminste, behalve dat ik het er niet (meer ?) op had staan?

Zou het zonder het package al moeten werken, of is Perl toch een afhankelijkheid?

Ik ga dan nu maar gauw kijken wat er met de subs gebeurt met piconv  :D

Dankjewel voor de hulp, Birdy !
Titel: Re: iconv op DS414
Bericht door: mvveelen op 31 juli 2017, 21:24:11
Persoonlijk hou ik niet zo van EDIT's ;)

Tja, ligt ook een beetje op welk forum je bent en welke regels ze hanteren. Ben het wel met je eens, het is dan toch duidelijker als je alles onder elkaar leest / volgt.
Titel: Re: iconv op DS414
Bericht door: mvveelen op 31 juli 2017, 21:30:50
Ok gaan we doen.

EDIT:
Kun je eens proberen een sub die niet goed weergegeven wordt door je PCH naar ISO-8859-1 te converteren en kijken of hij dan wel goed weergeeft?
Dat converteren doe je door deze commandline op je NAS:
piconv -f utf8 -t ISO-8859-1 Input_file.srt > Output_file.srt

Vervang ""Input_file.srt door de naam van je sub file

Ik vermoed namelijk datje PCH bij geen BOM gewoon ISO-8859-1 aanneemt als codering en jij hebt met mkvtools alles naar UTF-8 geconverteerd.


Ik heb dit net met één sub geprobeerd. Zonder deze bewerking kreeg ik die rare tekens te zien bij het woord "één", maar na het uitvoeren van deze regel (en originele verwijderen en de nieuwe renamen) zag de ondertiteling er perfect uit !!

Is dat dan een bevestiging van je vermoeden en wordt het daarmee makkelijker om alle .srt bestanden in 1 keer aan te passen?

Ik heb het commando nog eens toegepast op de al aangepaste .srt, maar dan gaat het wel weer (anders) mis trouwens........dus dan zou er een check ingebouwd moeten worden voordat de conversie plaatsvindt. Toch?
Titel: Re: iconv op DS414
Bericht door: Birdy op 31 juli 2017, 21:37:29
Zou het zonder het package al moeten werken
Nee, het zit echt in PERL.

Beetje jammer dat als je PERL de-installeert, dat de link dan niet verwijderd wordt. ::)
Titel: Re: iconv op DS414
Bericht door: Ben(V) op 01 augustus 2017, 08:50:39
@mvveelen

Piconv wordt als onderdeel van pearl geïnstalleerd, ik dacht dat ik dat al gezegd had, maar na teruglezen was het alleen een vage opmerking dat het een pearl script is, maar gelukkig is dat opgelost met behulp van Birdy.

Ik zal vanavond even kijken of ik een klein python scriptje voor je kan maken die door de bestanden heen ploegt en ze omzet naar ISO-8859-1 als ze utf-8 zijn.
Dus inclusief een test of ze wel utf-8 zijn.
Je PCH kan wel met utf-8 omgaan maar alleen als het een utf-sig is (ofwel er moet een BOM inzitten), maar ISO-8859-1 doet hij zeker.
Titel: Re: iconv op DS414
Bericht door: mvveelen op 01 augustus 2017, 08:54:05
Dat zou super zijn, want conversie op conversie gaat dus mis :)

En dat het een Perl script is dat had ik wel gezien, maar nooit de link gelegd dat Perl niet (meer) op de Syno stond.....
Titel: Re: iconv op DS414
Bericht door: Ben(V) op 02 augustus 2017, 18:45:04
Hier het beloofde python script.
Het converteert bestanden met de extensie .srt die utf-8 zijn naar bestanden die utf-8 sig zijn.
Als het goed is zal de PCH deze correct weergeven.

Het script gaat ervan uit dat je python van de SynoCommunity gebruikt.
Het heeft de python module chardet nodig.
Als die er niet blijkt te zijn (script geeft dat aan) dan installeer je dat met "pip install chardet"
Als je dit bestand opslaat als converteer,py dan kun je het starten met "./converteer.py"

Code: (python) [Selecteer]
#!/volume1/@appstore/python/bin/python

import os,io
try:
    import chardet
except:
    print 'No chardet module found in Python library'
    print 'Instal chardet with the command : pip install chardet'
    quit()

        ################################################################################
        # This programm convert utf-8 files with extension .srt to utf-8-sig
        # 'path' is the location of the subtitle files
        #################################################################################
path = '/volume1/Media/SERIES'
path = 'D:\\\\sync\\Test'

Sub_ext = '.srt'
Bck_ext = '.old'

try:
    os.path.isdir(path)
except Exception as error:
    print error
    quit()

    # Here starts the folder scanning
print 'The following files are converted:'
print ''
for dirname, dirnames, filenames in os.walk(path):
    for filename in filenames:
        root,ext = os.path.splitext(filename)
        if ext.lower() == Sub_ext:
            with open(dirname + os.sep + filename, 'rb') as fp_in:
                rawdata = fp_in.read()
            SubCodec = chardet.detect(rawdata)['encoding']
            if SubCodec == 'utf-8':
                UnicodeData = rawdata.decode('utf-8', errors='replace')
                try:
                    os.rename(dirname + os.sep + filename, dirname + os.sep + root + Bck_ext)
                except Exception as error:
                    print error
                try:
                    with io.open(dirname + os.sep + filename, mode='w',encoding='utf-8',newline='') as fp_out:
                        fp_out.write(u'\uFEFF')
                        fp_out.write(UnicodeData)
                except Exception as error:
                    print error
                print filename
Titel: Re: iconv op DS414
Bericht door: mvveelen op 02 augustus 2017, 18:46:41
Ga ik mee testen, ik zal eerst het pad beperken voordat er iets mis gaat :)
Titel: Re: iconv op DS414
Bericht door: mvveelen op 02 augustus 2017, 18:52:02
Hmmmm.....moet ik nog iets extra's doen?

root@DiskStation:/volume1/web# ./convert.py
No chardet module found in Python library
Instal chardet with the command : pip install chardet
root@DiskStation:/volume1/web# pip install chardet
Requirement already satisfied: chardet in /usr/lib/python2.7/site-packages
root@DiskStation:/volume1/web# ./convert.py
No chardet module found in Python library
Instal chardet with the command : pip install chardet
root@DiskStation:/volume1/web#
Titel: Re: iconv op DS414
Bericht door: Ben(V) op 02 augustus 2017, 18:53:13
Je hebt een andere python versie.
Pas even de eerste regel van het script aan zodat hij naar jouw python versie verwijst.

Wordt dan:
#!/usr/bin/env python
Titel: Re: iconv op DS414
Bericht door: mvveelen op 02 augustus 2017, 19:05:07
Done.

Het script draait even en spuugt dan dit uit:

root@DiskStation:/volume1/web# ./convert.py
The following files are converted:

root@DiskStation:/volume1/web#

De .srt files in de test-map zijn onaangeroerd. Heb nog eens een berg .srt files erheen gezet, maar geen enkel bestand wordt iets mee gedaan?
Titel: Re: iconv op DS414
Bericht door: Ben(V) op 02 augustus 2017, 20:44:50
Ik zie net dat er nog een regel teveel instaat.
De variable path wordt twee keer toegekend.
Die tweede regel moet weg, dat was voor mij om te testen.
Titel: Re: iconv op DS414
Bericht door: mvveelen op 02 augustus 2017, 22:36:41
Dat was het idd :)

Heb 'm net 1 keer laten draaien: 10 bestanden omgezet. Daarna nog een keer: 0. Dus dat lijkt goed te gaan. Morgen even testen of ze ook daadwerkelijk goed herkend worden door de PCH en dan kan ik de hele Media/SERIES folder laten scannen :D
Titel: Re: iconv op DS414
Bericht door: mvveelen op 03 augustus 2017, 10:01:38
Lijkt allemaal goed te gaan. Als ik een aflevering afspeelde met een oude .srt, dan was de encoding volgens de PCH "English". Na de conversie staat er netjes "UTF-8". Ik ben nu alle .srt files aan het omzetten, tenminste.....jouw script.

Voor de zekerheid laat je .old bestanden wegschrijven. Hoe kan ik die het makkelijkst straks allemaal verwijderen uit de map /volume1/Media?
Titel: Re: iconv op DS414
Bericht door: Ben(V) op 03 augustus 2017, 13:00:40
Met filestation.
Ga in de folder staan.
Vul in het search veld *.old in
Selecteer alles
Rechtsklikken en voor delete kiezen.

Ik wil ook wel iets inbouwen dat het script ze meteen verwijdert of eventueel naar een andere folder verplaatst?
Titel: Re: iconv op DS414
Bericht door: mvveelen op 03 augustus 2017, 13:05:14
Zo simpel, doh..... Ik zat aan een commando voor op de cli te denken. Dit is nog makkelijker inderdaad.

Nee hoor, het script is prima zo en mocht iemand anders er gebruik van maken dan is het misschien wel goed als er backup files worden gemaakt.

Dankjewel !
Titel: Re: iconv op DS414
Bericht door: Ben(V) op 03 augustus 2017, 13:15:58
Fijn dat het werkt.
Overigens is het wel specifiek een PCH issue, want utf-8 met BOM wordt bijna niet meer gebruikt.
Vandaar dat mkvtools die BOM ook niet in het bestand schrijft.

De ellende komt overigens van windows met z'n krankzinnige code pages.
De hele wereld is allang over op utf-8 waarin je elk willekeurig karakter (dus ook het chinese alfabet) kunt weergeven en in de windows wereld moet je weten welke codepage gebruikt is toen het bestand werd weggeschreven en nergens in het bestand noch in een attribute van het bestand staat welke codepage dat was.