LINUX.ORG.RU

А вот кому скрипт для конвертации ссылок?..


0

0

#!/usr/bin/env python
# -*- mode: python; coding: koi8-r; -*-
# (c) anonymous
# Требования:
#     - python
#     - Tkinter
# Использование:
#     - запускаем программу
#     - копируем в форуме ссылку "[Ответить на это сообщение]"
#     - жмем кнопку "Convert" (или Ctrl-C)
#     - вставляем новую ссылку средней клавишей мыши

import re
from Tkinter import *
import tkMessageBox

patterns = (
    re.compile(r'topic=(\d+).*replyto=(\d+)'),
    re.compile(r'topic=(\d+).*msgid=(\d+)'),
    re.compile(r'nocache=(\d+#\d+)'),
    re.compile(r'msgid=(\d+#\d+)'),
    re.compile(r'msgid=(\d+)'),
    )

def insert_url(url):
    entry.delete(0, END)
    entry.insert(0, url)
    entry.select_from(0)
    entry.select_to(END)

def convert_url():
    try:
        url = root.selection_get().strip()
    except TclError, err:
        tkMessageBox.Message(root,
                             type=tkMessageBox.OK,
                             icon=tkMessageBox.ERROR,
                             message='Can\'t convert url: ' + str(err)
                             ).show()
        return
    for pat in patterns:
        mo = pat.search(url)
        if mo:
            if len(mo.groups()) == 1:
                insert_url('http://www.linux.org.ru/jump-message.jsp?msgid=%s'
                           % mo.group(1))
            else:
                insert_url('http://www.linux.org.ru/jump-message.jsp?msgid=%s#%s'
                           % (mo.group(1), mo.group(2)))
            return
    tkMessageBox.Message(root,
                         type=tkMessageBox.OK,
                         icon=tkMessageBox.ERROR,
                         message='Can\'t convert url: invalid url:' + url
                         ).show()

root = Tk()
root.title('LOR url converter')
Wm.minsize(root, width=400, height=0)

# конфигуряние виджетов
root.config(borderwidth=2, background='green4')
root.option_add('*Font', 'Helvetica 22 bold')
root.option_add('*Entry.Font', 'Courier 22 bold')
root.option_add('*BorderWidth', 1)
root.option_add('*HighlightThickness', 4)
root.option_add('*Background', 'green4')
root.option_add('*HighlightBackground', 'red')
root.option_add('*HighlightForeground', 'blue')
root.option_add('*HighlightColor', 'orange')
root.option_add('*ActiveBackground', 'blue')
root.option_add('*ActiveForeground', 'aquamarine')
root.option_add('*Frame.HighlightBackground', 'green')
root.option_add('*Button.Background', 'yellow3')
root.option_add('*Button.Foreground', 'blue')
root.option_add('*Button.Cursor', 'hand2')
root.option_add('*Button.HighlightBackground', 'CadetBlue3')
root.option_add('*Entry.Background', 'wheat')
root.option_add('*Entry.Foreground', 'black')
root.option_add('*selectBackground', 'purple')
root.option_add('*selectForeground', 'green')
root.option_add('*Entry.HighlightColor', 'PaleVioletRed3')

# горячие клавиши
root.bind('<Control-c>', lambda x: convert_url())
root.bind('<Control-q>', lambda x: root.destroy())

frame = Frame(root)
frame.pack(expand=YES, fill=BOTH)
entry = Entry(frame)
entry.pack(expand=YES, fill=X)
button = Button(frame, text='Convert', underline=0, command=convert_url)
button.pack(side=LEFT, expand=YES)
entry.focus()
root.mainloop()
anonymous

Зачот! А теперь напиши плагин к фаерфоксу.

mikhail
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.