LINUX.ORG.RU

История изменений

Исправление Psych218, (текущая версия) :

#!/usr/bin/python

import sys

tracklist = sys.stdin.read()

CUE_TEMPLATE = '''  TRACK {:02} AUDIO
    TITLE "{}"
    INDEX 01 {:02}:{:02}:00'''


def line_to_cue(s):
    n, startpoint, title = s.split('/', 2)
    n = int(n.strip(" ."))
    startpoint = [int(x) for x in startpoint.strip().split(':')]
    if len(startpoint) == 2:
        startpoint = [0] + startpoint
    minutes = startpoint[0]*60 + startpoint[1]
    seconds = startpoint[2]
    title = title.strip()
    return CUE_TEMPLATE.format(n, title, minutes, seconds)


print('FILE "YOUTUBE.mp3" MP3')
for line in tracklist.split("\n"):
    print(line_to_cue(line))

Вот по-быстрому. Если не говнокодить, а повдумчивее сделать, то да, больше пяти минут займёт.

На вход принимает такой вот треклист, выводит cue (насколько я формат этого самого cue помню, такой ведь должен быть?):

FILE "YOUTUBE.mp3" MP3
  TRACK 01 AUDIO
    TITLE "bl00dwave - radio jpn"
    INDEX 01 00:00:00
  TRACK 02 AUDIO
    TITLE "CYBEREALITYライフ - ヒスイ t e m p l e"
    INDEX 01 02:46:00
  TRACK 03 AUDIO
    TITLE "Luxury Elite - Vengeance"
    INDEX 01 04:24:00
  TRACK 04 AUDIO
    TITLE "m ai t r o - SNAKE WAY 蛇の道"
    INDEX 01 06:38:00
  TRACK 05 AUDIO
    TITLE "Silver Richards - Ocean Breeze"
    INDEX 01 09:05:00
  TRACK 06 AUDIO
    TITLE "猫 シ Corp. x Patrol1993 - Congratulatory Message"
    INDEX 01 11:00:00
  TRACK 07 AUDIO
    TITLE "t e l e p a t h テレパシー能力者 - 愛"
    INDEX 01 12:53:00
  TRACK 08 AUDIO
    TITLE "CVLTVRΣ - Sailing By The Waves"
    INDEX 01 15:06:00
  TRACK 09 AUDIO
    TITLE "Master Stryker マスターストライカー - Okinawa Sunset"
    INDEX 01 17:38:00
  TRACK 10 AUDIO
    TITLE "SAINT PEPSI - Nova"
    INDEX 01 20:03:00
  TRACK 11 AUDIO
    TITLE "ULTRA ウルトラ - C O N N E C T 自然"
    INDEX 01 21:48:00
  TRACK 12 AUDIO
    TITLE "コンシャスTHOUGHTS - Still In Love"
    INDEX 01 24:12:00
  TRACK 13 AUDIO
    TITLE "BBRAINZ - Atlantico"
    INDEX 01 27:48:00
  TRACK 14 AUDIO
    TITLE "bl00dwave - VIRTUAL LONELINESS"
    INDEX 01 29:22:00
  TRACK 15 AUDIO
    TITLE "ESPRIT 空想 - 痴心妄想"
    INDEX 01 31:42:00
  TRACK 16 AUDIO
    TITLE "18 Carat Affair - Modus Operandi"
    INDEX 01 33:02:00
  TRACK 17 AUDIO
    TITLE "Clinton Affair x ULTRA ウルトラ - フェム f a t a l e"
    INDEX 01 35:09:00
  TRACK 18 AUDIO
    TITLE "Luxury Elite x マクロスMACROSS 82-99 - ウォーク·オン·バイ"
    INDEX 01 37:02:00
  TRACK 19 AUDIO
    TITLE "ローマンRoman - シドニーSYDNEY"
    INDEX 01 40:06:00
  TRACK 20 AUDIO
    TITLE "VentureX - First Love"
    INDEX 01 42:03:00
  TRACK 21 AUDIO
    TITLE "bl00dwave x 猫 シ Corp. - PALM CITY"
    INDEX 01 45:45:00
  TRACK 22 AUDIO
    TITLE "VHSテープリワインダ - Baby"
    INDEX 01 47:34:00
  TRACK 23 AUDIO
    TITLE "CVLTVRΣ - Menthol Gallery ❑ ❖ ❒ メントールギャラリー"
    INDEX 01 49:18:00
  TRACK 24 AUDIO
    TITLE "bl00dwave - 4LUX"
    INDEX 01 52:10:00
  TRACK 25 AUDIO
    TITLE "Infinity Frequencies - Y∞U & ME"
    INDEX 01 53:30:00
  TRACK 26 AUDIO
    TITLE "t e l e p a t h テレパシー能力者 - あなたの目で失わ"
    INDEX 01 58:09:00
  TRACK 27 AUDIO
    TITLE "Yuni Wa - Hold On To You"
    INDEX 01 61:09:00
  TRACK 28 AUDIO
    TITLE "情報デスクVIRTUAL - 街へSAPPORO✔✔✔ SPRING EQUINOX"
    INDEX 01 64:34:00
  TRACK 29 AUDIO
    TITLE "CYBEREALITYライフ x Architecture In Tokyo - MELTNET"
    INDEX 01 66:48:00
  TRACK 30 AUDIO
    TITLE "Clinton Affair - Here & Now"
    INDEX 01 68:39:00
  TRACK 31 AUDIO
    TITLE "SPACE MAGIC スペース マジック - POLICE WORK"
    INDEX 01 70:19:00
  TRACK 32 AUDIO
    TITLE "vice-AIRバイス-空気自然の愛 - call center コールセンター"
    INDEX 01 72:24:00
  TRACK 33 AUDIO
    TITLE "bl00dwave - 24 hours"
    INDEX 01 73:47:00
  TRACK 34 AUDIO
    TITLE "Architecture In Tokyo - Surf ~ Forever"
    INDEX 01 76:01:00
  TRACK 35 AUDIO
    TITLE "Infinite Quazar - Grand Prix"
    INDEX 01 77:32:00
  TRACK 36 AUDIO
    TITLE "Phoenix #2772 - Beauty Exchange"
    INDEX 01 80:59:00
  TRACK 37 AUDIO
    TITLE "猫 シ Corp. - Oceanデート"
    INDEX 01 83:15:00
  TRACK 38 AUDIO
    TITLE "死夢VANITY - 美しさ"
    INDEX 01 86:28:00
  TRACK 39 AUDIO
    TITLE "CVLTVRΣ - C:/ レンズ Login"
    INDEX 01 88:20:00
  TRACK 40 AUDIO
    TITLE "BBRAINZ - Forgive"
    INDEX 01 91:50:00
  TRACK 41 AUDIO
    TITLE "Silver Richards - Sunset"
    INDEX 01 94:17:00
  TRACK 42 AUDIO
    TITLE "t e l e p a t h テレパシー能力者 - b l i s s"
    INDEX 01 96:54:00
  TRACK 43 AUDIO
    TITLE "ULTRA ウルトラ - データ LIFE STREAM"
    INDEX 01 100:51:00
  TRACK 44 AUDIO
    TITLE "LASERDISC VISIONS - Tingri"
    INDEX 01 103:16:00
  TRACK 45 AUDIO
    TITLE "m ai t r o - Make It Last"
    INDEX 01 105:08:00
  TRACK 46 AUDIO
    TITLE "Luxury Elite - Hott Line"
    INDEX 01 107:16:00
  TRACK 47 AUDIO
    TITLE "POCARI ステューシー - Infinite Moments"
    INDEX 01 109:40:00
  TRACK 48 AUDIO
    TITLE "ESPRIT 空想 - Mindless"
    INDEX 01 111:33:00
  TRACK 49 AUDIO
    TITLE "bl00dwave - away"
    INDEX 01 113:02:00
  TRACK 50 AUDIO
    TITLE "2814 - 恢复"
    INDEX 01 114:55:00
  TRACK 51 AUDIO
    TITLE "Aloe Island Posse - Last Flight (Departure)"
    INDEX 01 120:35:00

Исходная версия Psych218, :

#!/usr/bin/python

import sys

tracklist = sys.stdin.read()

CUE_TEMPLATE = '''  TRACK {:02} AUDIO
    TITLE "{}"
    INDEX 01 {:02}:{:02}:00'''


def line_to_cue(s):
    n, startpoint, title = s.split('/', 2)
    n = int(n.strip(" ."))
    startpoint = [int(x) for x in startpoint.strip().split(':')]
    if len(startpoint) == 2:
        startpoint = [0] + startpoint
    minutes = startpoint[0]*60 + startpoint[1]
    seconds = startpoint[2]
    title = title.strip()
    return CUE_TEMPLATE.format(n, title, minutes, seconds)


print('FILE "YOUTUBE.mp3" MP3')
for line in tracklist.split("\n"):
    print(line_to_cue(line))

Вот по-быстрому. Если не говнокодить, а повдумчивее сделать, то да, больше пяти минут займёт.

На вход принимает такой вот треклист, выводит cue (насколько я формат этого самого cue помню).