Advertisement
Kreser06

playlist2userbouquet.py

Feb 5th, 2017
156
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 3.03 KB | None | 0 0
  1. #!/usr/bin/env python3
  2. # -*- coding: utf-8 -*-
  3. from __future__ import print_function
  4. import io
  5. import time
  6. import re
  7.  
  8.  
  9. class PLAYLIST(object):
  10.     def __init__(self):
  11.         self.m3u_dict = dict()
  12.        
  13.     def m3u_to_m3u_dict(self, filename_m3u):
  14.         try:
  15.             with io.open(filename_m3u, 'r', encoding='utf-8-sig') as m3u:
  16.                 for zeile in m3u:
  17.                     if zeile[:7] == '#EXTINF' :
  18.                         if not zeile[11] == '=' and not zeile[:1] == '=':
  19.                             zeile = zeile.rstrip()
  20.                             name = zeile.replace('#EXTINF:-1,','')
  21.                             link = link = m3u.readline()
  22.                             link = link.rstrip()
  23.                             self.m3u_dict[name] = link
  24.  
  25.         except EnvironmentError:
  26.             print ('Die Datei: >>' + filename_m3u + '<< existiert nicht!')
  27.             pass # Ignore I/O errors.
  28.  
  29. class ANPASSEN():
  30.     def __init__(self):
  31.         self.PATTERNS = [
  32.             r'\+\d',                            # +2, +7
  33.             r'\d[+x]\d',                        # 1+1, 2x2
  34.             r'(?<=\b)[A-ZА-Я]{1,2}\d{1,2}\b',   # A1, AB12
  35.             r'\b[JT][ui][CJ][ei]',              # JuCe TV, TiJi
  36.             r'[A-ZА-Я][a-zа-я]+\.?',            # Abzde, int.
  37.             r'[A-Za-zА-Яа-я][A-ZА-Яa-zа-я]+\.?',# ABSDE, Int.
  38.             r'(?<=\b)[A-ZА-Я]{1,2}(?=\b)',      # A, AB, ABC
  39.             r'\d[A-ZА-Я]\b',                    # 1A
  40.             r'\d\.?\d+',                        # 1234, 2.0, 3.123
  41.             r'\d',
  42.             ]
  43.         self.SHORT_NAMES_TO_TITLE = {
  44.             'geo', 'nat', 'дом', 'моя', 'кто', 'hit', 'box',
  45.             'pro', 'doc', 'and', 'sci', 'fi', 'top', 'еда',
  46.             'дон', 'мир', 'ля', 'на', 'раз', 'рен'
  47.             }
  48.         self.LONG_NAMES_TO_IGNORE = {
  49.             'JuCe', 'TiJi', 'HITV', 'НСТВ', 'СССР', 'СТРК'
  50.             }
  51.  
  52.     def split(patterns, liste):
  53.         if isinstance(patterns, dict):
  54.             patterns = patterns.values()
  55.         pattern = re.compile('|'.join(patterns))
  56.         for line in liste():
  57.             line = re.sub('[\[\(][^\(\)\[\]]*[\]\)]', '', line)         # Klammer und deren Inhalt entfernen
  58.             line = re.sub('(?<!(INT))(?<!(int))[_.-](?!\d)', ' ', line) # Unnötige Sonderzeichen entfernen
  59.             line = line.rstrip()
  60.             yield pattern.findall(line)
  61.  
  62.     def gross_klein_schreibung(parts):
  63.         renamed_parts = []
  64.         for part in parts:
  65.             if len(part) <= 3:
  66.                 if part.lower() in self.SHORT_NAMES_TO_TITLE:
  67.                     renamed_parts.append(part.title())
  68.                 else:
  69.                     renamed_parts.append(part.upper())
  70.             elif part in self.LONG_NAMES_TO_IGNORE:
  71.                 renamed_parts.append(part)
  72.             else:
  73.                 renamed_parts.append(part.title())
  74.         zeile = ' '.join(part for part in renamed_parts)
  75.         print ('Das ist die zeile: ' + zeile)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement