Змея / Говнокод #7804 Ссылка на оригинал

0

  1. 1
  2. 2
  3. 3
  4. 4
  5. 5
  6. 6
  7. 7
  8. 8
  9. 9
  10. 10
  11. 11
  12. 12
  13. 13
  14. 14
  15. 15
  16. 16
  17. 17
  18. 18
  19. 19
  20. 20
  21. 21
  22. 22
  23. 23
  24. 24
  25. 25
  26. 26
  27. 27
  28. 28
  29. 29
  30. 30
  31. 31
  32. 32
  33. 33
  34. 34
  35. 35
  36. 36
  37. 37
  38. 38
  39. 39
  40. 40
  41. 41
  42. 42
  43. 43
  44. 44
def captions_and_translations_to_srt(captions_and_translations):
    output = StringIO.StringIO()
    for i in range(len(captions_and_translations)):
        translation_to_srt(captions_and_translations[i][1],
                           captions_and_translations[i][0],
                           i, output)
    srt = output.getvalue()
    output.close()
    return srt

def translation_to_srt(translation, video_caption, index, output):
    subtitle_to_srt_impl(video_caption.caption_text if translation is None \
                         else translation.translation_text, 
                         video_caption, index, output)

def subtitle_to_srt_impl(text, video_caption, index, output):
    output.write(str(index + 1))
    output.write("\n")
    write_srt_time_line(video_caption, output)
    output.write(text)
    output.write("\n\n")

def write_srt_time_line(video_caption, output):
    write_srt_time(video_caption.start_time, output)
    output.write(" --> ")
    write_srt_time(video_caption.end_time, output)
    output.write("\n")

def write_srt_time(seconds, output):
    seconds_int = int(seconds)
    write_padded_num((seconds_int / 3600) % 60, 2, output)
    output.write(":")
    write_padded_num((seconds_int / 60) % 60, 2, output)
    output.write(":")
    write_padded_num(seconds_int % 60, 2, output)
    output.write(",")
    write_padded_num(int(seconds * 1000) % 1000, 3, output)

def write_padded_num(num, numchars, output):
    strnum = str(num)
    numzeros = numchars - len(strnum)
    for i in range(numzeros):
        output.write("0")
    output.write(strnum)

Генератор SRT субтитров.

Запостил: alerion alerion, (Updated )

Комментарии (10) RSS

  • Противоречивое впечатление. Вроде и работает правильно всё, но увлёкся товарищ велосипедостроительством. Unpythonic.
    Ответить
  • Быдлокодер пишет так, чтобы работало, программист - так, чтобы легко читалось и правилось и правильно работало
    Ответить
  • Просто потом понадобилось добавить поддержку еще 5 форматов. Ну хорошо что добавлял не этот человек, а то было бы 20+ функций.
    Ответить
      • Вообще это "буржуйский" код. Мне интересно было только мне он кажется страшным или нет. Потому что все они это воспринимают нормально и никто рефакторить даже не думает.
        Ответить
        • Ну, ничего страшного. write_srt_time_line и ниже лучше заменить простым форматированием — читается и изменяется легче, не намного медленнее. А для остального вполне нормально.
          Ответить
          • Та уже все сделано на классах, через наследование легко добавляются новые форматы. Этот кусок никто не решается удалить т.к. там где он применяется ничего не понятно 🙂
            Ответить
      • передается список dict(start_time='...', end_time='...', text='...') - на выходе субтитры в srt формате.
        Ответить
  • щO(H:Y(P J"Z"TJ!D?L(E.F?P:PW$U.W D)X:A:V$QEP C$P?M$W!G:Y(O,P,Q$R?R)L)YZ(N?V$O$E$M$MS I$I?B,LU D:CR.C?D.O.R)Y"F!PX$N(W,I(M,LD,L,JD.F,O,I?T!TV)L!BVКBNVVJTUFWZVKIDNNIICHOCBUGQVMSWGCRCFGVMEGIUNTQPFKHUWIVOLXLPDLELJRCRWDNZCKOIXLUUAHVVFDSWBNVPKHHLXNIZULDSQHPEYDJCJSAINGXXOKLIEVB
    Ответить

Добавить комментарий

Переведи на "PHP", guest!

    А не использовать ли нам bbcode?


    8