Comments (4)
I read on the internet that str()
should not be used when dealing with unicode and .encode()
and .decode()
should be used. This poses two problems:
- Python 3 compatibility
- SrtItem does not know about encoding of its
.text
attribute as far as I can see
from pysrt.
SrtItem does not know about encoding of its .text attribute as far as I can see
Yes it's by design. SubRipFile deal with all the encoding mess, but SubRipItem is fully unicode and abstracted from encoding stuffs. So SubRipItem.str() in Python 2 do not make sense. Actually before the merge of py2 and 3 code bases that method did not exist.
I guess we have no other choices than to have two different implementations, and to conditionally define them based on python version, something like:
class SubRipItem:
if is_py3:
def __str__(self):
#actual implementation
else:
def __unicode__(self):
# same implementation
def __str__(self):
raise NotImplementedError
from pysrt.
Would not it be better if __str__(self)
pointed to unicode(self)? Only we would need to know which encoding to use, right, which we don't by design, if I understand it correctly.
Then, should not
self.position = str(position)
self.text = str(text)
in __init__
method of SubRipItem be
self.position = unicode(position)
self.text = unicode(text)
instead?
And in write_into
method of SubRipFile
, we will need to call either unicode(item) or str(item) based on whether we are using Python 2 or 3, right?
from pysrt.
we will need to call either unicode(item) or str(item) based on whether we are using Python 2 or 3, right?
It's already the case: https://github.com/byroot/pysrt/blob/master/pysrt/compat.py#L18
from pysrt.
Related Issues (20)
- In-place mode does not write the entire file HOT 2
- Inserting Subtitle Snippet
- Can't parse text with empty line HOT 2
- time passed to at() will not find caption if the time passed in equals start time of caption
- UnicodeDecodeError
- Script: parsing transcript .srt files into readable text HOT 1
- the latest code in master was not released
- SubRipTime.__init__ should maybe cast the arguments to int or float (aka “TypeError: '>' not supported between instances of 'SubRipTime' and 'dict'” in slice())
- Faster loading HOT 2
- Tag v1.1.2 HOT 1
- UnicodeEncodeError: 'ascii' codec can't encode character u'\xe9' HOT 1
- Weird version ??
- text_without_tags should also remove subtitle tags
- pysrt.open() returns empty list
- Captions whose text begins with Line Separator character are parsed as blank string HOT 1
- pysrt fails to build with Python 3.11.0a1
- Tests fail with Python 3.12 HOT 2
- Subtitle synchronization with input video files.
- SubRipTime.to_time() does not support times over 24 hours
- add `text_without_tags` support to `SubRipFile`
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from pysrt.