Overview

Request 3791 (accepted)

No description set
Submit package home:awissu:branches:Multimedia / curlew to package Multimedia / curlew

curlew.changes Changed
x
 
1
@@ -1,4 +1,12 @@
2
 -------------------------------------------------------------------
3
+Fri Apr 21 21:21:34 UTC 2017 - avvissu@yandex.by
4
+
5
+- Update to 0.2.3:
6
+  * see: /usr/share/doc/packages/curlew/ChangeLog
7
+- Update patches:
8
+  * curlew-0.2.1_path.patch -> curlew-0.2.3_path.patch 
9
+
10
+-------------------------------------------------------------------
11
 Mon Mar 14 11:58:45 UTC 2016 - avvissu@yandex.ru
12
 
13
 - Update to 0.2.2:
14
curlew.spec Changed
90
 
1
@@ -1,7 +1,7 @@
2
 #
3
 # spec file for package curlew
4
 #
5
-# Copyright (c) 2016 SUSE LINUX GmbH, Nuernberg, Germany.
6
+# Copyright (c) 2017 SUSE LINUX GmbH, Nuernberg, Germany.
7
 #
8
 # All modifications and additions to the file contributed by third parties
9
 # remain the property of their copyright owners, unless otherwise agreed
10
@@ -17,28 +17,30 @@
11
 
12
 
13
 Name:           curlew
14
-Version:        0.2.2
15
+Version:        0.2.3
16
 Release:        0
17
 Summary:        Multimedia converter
18
 License:        Waqf
19
-Group:          Productivity/Multimedia/Video/Convertors
20
+Group:          Productivity/Multimedia/Video/Editors and Convertors
21
 Url:            http://sourceforge.net/projects/curlew/
22
 Source0:        http://sourceforge.net/projects/curlew/files/curlew-%{version}/%{name}-%{version}.tar.gz
23
 # PATCH-FIX-OPENSUSE sitelib.patch avvissu@yandex.ru -- Change path to files (use site-packages)
24
-Patch0:         curlew-0.2.2_sitelib.patch
25
+Patch0:         curlew-0.2.3_sitelib.patch
26
+BuildRequires:  dbus-1-python3
27
 BuildRequires:  hicolor-icon-theme
28
 BuildRequires:  intltool
29
 BuildRequires:  python3-base >= 3.3.2
30
 BuildRequires:  python3-gobject >= 3.12.0
31
 BuildRequires:  python3-setuptools
32
 BuildRequires:  rsvg-view
33
+BuildRequires:  typelib-1_0-Gtk-3_0 >= 3.12.0
34
 BuildRequires:  update-desktop-files
35
 Requires:       dbus-1-python3
36
 Requires:       ffmpeg
37
 Requires:       mediainfo
38
 Requires:       mencoder
39
 Requires:       python3-gobject
40
-Requires:       typelib(Gtk) = 3.0
41
+Requires:       typelib-1_0-Gtk-3_0 >= 3.12.0
42
 Requires:       xdg-utils
43
 # Conflict with ffmpeg
44
 #Requires:       libav-tools
45
@@ -62,17 +64,14 @@
46
   - Combine subtitle with video file.
47
   - Show error details if exist.
48
   - And more ...
49
-  
50
+
51
 %lang_package
52
 
53
 %prep
54
 %setup -q
55
 %patch0 -p1
56
 
57
-# Set mplayer as the default player
58
-sed -i '/self.player/s/avplay/mplayer/' $(grep -rl 'avplay')
59
-
60
-# Fix spurious-executable-perm
61
+# Fix: spurious-executable-perm
62
 find . -type f -perm /u+x -exec chmod 644 {} \; || :
63
 
64
 %build
65
@@ -80,9 +79,7 @@
66
 
67
 %install
68
 python3 setup.py install --root=%{buildroot}
69
-
70
 %suse_update_desktop_file -r %{name} AudioVideo Video AudioVideoEditing
71
-
72
 %find_lang %{name}
73
 
74
 %post
75
@@ -94,12 +91,12 @@
76
 %desktop_database_postun
77
 
78
 %files
79
+%defattr(-,root,root)
80
 %doc LICENSE* AUTHORS ChangeLog README
81
 %{_bindir}/%{name}
82
 %{_datadir}/%{name}/
83
 %{_datadir}/applications/%{name}.desktop
84
-%{_datadir}/icons/hicolor/scalable/apps/%{name}.svg
85
-%{_datadir}/icons/hicolor/*/apps/%{name}.png
86
+%{_datadir}/icons/hicolor/*/apps/%{name}.??g
87
 %{python3_sitelib}/%{name}-*.egg-info
88
 %{python3_sitelib}/%{name}/
89
 
90
curlew-0.2.2_sitelib.patch Deleted
162
 
1
@@ -1,160 +0,0 @@
2
-diff -U 3 -dHrN curlew-0.2.2.orig/curlew curlew-0.2.2/curlew
3
---- curlew-0.2.2.orig/curlew   2016-03-07 13:52:48.000000000 +0300
4
-+++ curlew-0.2.2/curlew    2016-03-14 15:02:59.504346113 +0300
5
-@@ -1,9 +1,5 @@
6
- #!/usr/bin/env python3
7
- 
8
--from site import addsitedir
9
--addsitedir('/usr/share/curlew')
10
--addsitedir('/usr/local/share/curlew')
11
--
12
- import sys
13
--from modules.curlew import main
14
-+from curlew.curlew import main
15
- main(*sys.argv[1:])
16
-diff -U 3 -dHrN curlew-0.2.2.orig/modules/codecs.py curlew-0.2.2/modules/codecs.py
17
---- curlew-0.2.2.orig/modules/codecs.py    2016-03-10 16:19:55.000000000 +0300
18
-+++ curlew-0.2.2/modules/codecs.py 2016-03-14 15:04:47.898214293 +0300
19
-@@ -21,7 +21,7 @@
20
- gi.require_version('Gtk', '3.0')
21
- 
22
- from gi.repository import Gtk, Pango
23
--from modules.functions import get_available_codecs
24
-+from curlew.functions import get_available_codecs
25
- 
26
- class CodecsDialog(Gtk.Dialog):
27
-     def __init__(self, prnt, encoder, title, headerbar):
28
-diff -U 3 -dHrN curlew-0.2.2.orig/modules/configs.py curlew-0.2.2/modules/configs.py
29
---- curlew-0.2.2.orig/modules/configs.py   2016-03-08 19:41:33.000000000 +0300
30
-+++ curlew-0.2.2/modules/configs.py    2016-03-14 15:08:07.496466859 +0300
31
-@@ -19,7 +19,7 @@
32
- 
33
- 
34
- from gi.repository import GLib
35
--from modules.consts import CONF_FILE
36
-+from curlew.consts import CONF_FILE
37
- 
38
- GROUP = 'configs'
39
- 
40
-diff -U 3 -dHrN curlew-0.2.2.orig/modules/consts.py curlew-0.2.2/modules/consts.py
41
---- curlew-0.2.2.orig/modules/consts.py    2016-03-07 13:52:48.000000000 +0300
42
-+++ curlew-0.2.2/modules/consts.py 2016-03-14 15:05:41.710010707 +0300
43
-@@ -26,7 +26,7 @@
44
- CONF_FILE = join(CONF_PATH, 'curlew.cfg')
45
- 
46
- PKG_DIR = dirname(realpath(__file__))
47
--DTA_DIR = join(PKG_DIR, '../')
48
-+DTA_DIR = join(PKG_DIR, '../../../../share/curlew')
49
- 
50
- ORG_FFILE = join(DTA_DIR, 'formats.cfg')
51
- USR_FFILE = join(CONF_PATH, 'formats.cfg')
52
-diff -U 3 -dHrN curlew-0.2.2.orig/modules/curlew.py curlew-0.2.2/modules/curlew.py
53
---- curlew-0.2.2.orig/modules/curlew.py    2016-03-12 00:37:11.000000000 +0300
54
-+++ curlew-0.2.2/modules/curlew.py 2016-03-14 15:08:07.536464240 +0300
55
-@@ -38,23 +38,23 @@
56
-     from gi.repository import Gtk, GLib, Gdk, GObject, GdkPixbuf, Gio
57
-     import dbus.glib, dbus.service
58
-     
59
--    from modules.customwidgets import LabeledHBox, TimeLayout, HScale, \
60
-+    from curlew.customwidgets import LabeledHBox, TimeLayout, HScale, \
61
-     SpinsFrame, LabeledGrid, ComboWithEntry, ButtonWithIcon
62
--    from modules.about import About
63
--    from modules.functions import show_message, get_format_size, \
64
-+    from curlew.about import About
65
-+    from curlew.functions import show_message, get_format_size, \
66
-     duration_to_time, time_to_duration, check_codec
67
--    from modules.logdialog import LogDialog
68
--    from modules.tray import StatusIcon
69
--    from modules.languages import LANGUAGES
70
--    from modules.favdialog import Favorite
71
--    from modules.waitdialog import WaitDialog
72
--    from modules.fileinfos import FileInfos
73
--    from modules.formats import Formats
74
--    from modules.infobars import InfoBar
75
--    from modules.codecs import CodecsDialog
76
--    from modules.consts import CONF_PATH, HOME, CONF_FILE, DTA_DIR, \
77
-+    from curlew.logdialog import LogDialog
78
-+    from curlew.tray import StatusIcon
79
-+    from curlew.languages import LANGUAGES
80
-+    from curlew.favdialog import Favorite
81
-+    from curlew.waitdialog import WaitDialog
82
-+    from curlew.fileinfos import FileInfos
83
-+    from curlew.formats import Formats
84
-+    from curlew.infobars import InfoBar
85
-+    from curlew.codecs import CodecsDialog
86
-+    from curlew.consts import CONF_PATH, HOME, CONF_FILE, DTA_DIR, \
87
-     ORG_FFILE, USR_FFILE
88
--    from modules.configs import get_b_config
89
-+    from curlew.configs import get_b_config
90
- except Exception as e:
91
-     print(e)
92
-     sys.exit(1)
93
-@@ -72,7 +72,7 @@
94
- 
95
- # Localization.
96
- DOMAIN = 'curlew'
97
--LOCALDIR = join(DTA_DIR, 'locale')
98
-+LOCALDIR = join(DTA_DIR, '../locale')
99
- gettext.install(DOMAIN, LOCALDIR)
100
- 
101
- # Create ".curlew" folder if not exist
102
-diff -U 3 -dHrN curlew-0.2.2.orig/modules/edition.py curlew-0.2.2/modules/edition.py
103
---- curlew-0.2.2.orig/modules/edition.py   2016-03-11 19:29:53.000000000 +0300
104
-+++ curlew-0.2.2/modules/edition.py    2016-03-14 15:08:07.492467120 +0300
105
-@@ -24,9 +24,9 @@
106
- 
107
- from gi.repository import Gtk, GLib
108
- 
109
--from modules.customwidgets import LabeledGrid, ButtonWithIcon
110
--from modules.consts import CONF_FILE, ORG_FFILE
111
--from modules.functions import show_message
112
-+from curlew.customwidgets import LabeledGrid, ButtonWithIcon
113
-+from curlew.consts import CONF_FILE, ORG_FFILE
114
-+from curlew.functions import show_message
115
- 
116
- 
117
- class FormatEditor(Gtk.Dialog):
118
-diff -U 3 -dHrN curlew-0.2.2.orig/modules/formats.py curlew-0.2.2/modules/formats.py
119
---- curlew-0.2.2.orig/modules/formats.py   2016-03-12 00:41:14.000000000 +0300
120
-+++ curlew-0.2.2/modules/formats.py    2016-03-14 15:08:07.488467381 +0300
121
-@@ -21,8 +21,8 @@
122
- gi.require_version('Gtk', '3.0')
123
- 
124
- from gi.repository import Gtk
125
--from modules.edition import FormatEditor
126
--from modules.customwidgets import ButtonWithIcon
127
-+from curlew.edition import FormatEditor
128
-+from curlew.customwidgets import ButtonWithIcon
129
- 
130
- class Formats(Gtk.Popover):
131
-     
132
-diff -U 3 -dHrN curlew-0.2.2.orig/setup.py curlew-0.2.2/setup.py
133
---- curlew-0.2.2.orig/setup.py 2016-03-14 12:39:44.000000000 +0300
134
-+++ curlew-0.2.2/setup.py  2016-03-14 15:11:55.448256414 +0300
135
-@@ -17,8 +17,6 @@
136
- doc_files  = ['LICENSE-ar.txt', 'LICENSE-en.txt', 'AUTHORS', 'THANKS', 'ChangeLog', 'README']
137
- data_files = [('share/applications/', ['curlew.desktop']),
138
-               ('share/icons/hicolor/scalable/apps', ['curlew.svg']),
139
--              ('share/pixmaps', ['curlew.svg']),
140
--              ('share/doc/curlew', doc_files),
141
-               ('share/curlew', ['formats.cfg']),
142
-               #('share/curlew', ['formats.cfg', 'ffmpeg']), # Portable version
143
-               ('share/curlew/modules', glob("modules/*.py"))
144
-@@ -58,7 +56,7 @@
145
-         # Generate mo files
146
-         call("msgfmt {} -o {}".format(po_file, mo_path), shell=True)
147
-     
148
--    locales = map(lambda i: ('share/curlew/'+i, [i+'/curlew.mo', ]), glob('locale/*/LC_MESSAGES'))
149
-+    locales = map(lambda i: ('share/'+i, [i+'/curlew.mo', ]), glob('locale/*/LC_MESSAGES'))
150
-     data_files.extend(locales)
151
-     
152
-     return 0
153
-@@ -168,5 +166,7 @@
154
-                      'Topic :: Desktop Environment :: Gnome',
155
-                      'Topic :: Multimedia :: Sound/Audio :: Conversion',
156
-                      'Topic :: Utilities'],
157
--      data_files=data_files
158
-+      data_files=data_files,
159
-+      packages=['curlew'],
160
-+      package_dir={"curlew" : "modules"}
161
-       )
162
curlew-0.2.3_sitelib.patch Added
190
 
1
@@ -0,0 +1,188 @@
2
+diff -ruN curlew-0.2.3.orig/curlew curlew-0.2.3/curlew
3
+--- curlew-0.2.3.orig/curlew   2016-03-04 16:39:47.000000000 +0300
4
++++ curlew-0.2.3/curlew    2017-04-22 00:12:17.920666141 +0300
5
+@@ -1,9 +1,5 @@
6
+ #!/usr/bin/env python3
7
+ 
8
+-from site import addsitedir
9
+-addsitedir('/usr/share/curlew')
10
+-addsitedir('/usr/local/share/curlew')
11
+-
12
+ import sys
13
+-from modules.curlew import main
14
++from curlew.curlew import main
15
+ main(*sys.argv[1:])
16
+diff -ruN curlew-0.2.3.orig/modules/codecs.py curlew-0.2.3/modules/codecs.py
17
+--- curlew-0.2.3.orig/modules/codecs.py    2017-04-20 11:31:29.000000000 +0300
18
++++ curlew-0.2.3/modules/codecs.py 2017-04-22 00:13:35.652887426 +0300
19
+@@ -21,7 +21,7 @@
20
+ gi.require_version('Gtk', '3.0')
21
+ 
22
+ from gi.repository import Gtk, Pango
23
+-from modules.functions import get_available_codecs
24
++from curlew.functions import get_available_codecs
25
+ 
26
+ class CodecsDialog(Gtk.Dialog):
27
+     def __init__(self, prnt, encoder, title, headerbar):
28
+diff -ruN curlew-0.2.3.orig/modules/configs.py curlew-0.2.3/modules/configs.py
29
+--- curlew-0.2.3.orig/modules/configs.py   2017-04-20 11:31:29.000000000 +0300
30
++++ curlew-0.2.3/modules/configs.py    2017-04-22 00:13:35.652887426 +0300
31
+@@ -19,7 +19,7 @@
32
+ 
33
+ 
34
+ from gi.repository import GLib
35
+-from modules.consts import CONF_FILE
36
++from curlew.consts import CONF_FILE
37
+ 
38
+ GROUP = 'configs'
39
+ 
40
+diff -ruN curlew-0.2.3.orig/modules/consts.py curlew-0.2.3/modules/consts.py
41
+--- curlew-0.2.3.orig/modules/consts.py    2017-04-20 11:31:29.000000000 +0300
42
++++ curlew-0.2.3/modules/consts.py 2017-04-22 00:14:14.996999426 +0300
43
+@@ -26,7 +26,7 @@
44
+ CONF_FILE = join(CONF_PATH, 'curlew.cfg')
45
+ 
46
+ PKG_DIR = dirname(realpath(__file__))
47
+-DTA_DIR = join(PKG_DIR, '../')
48
++DTA_DIR = join(PKG_DIR, '../../../../share/curlew')
49
+ 
50
+ SOUND_FILE = join(DTA_DIR, 'done.ogg')
51
+ 
52
+diff -ruN curlew-0.2.3.orig/modules/curlew.py curlew-0.2.3/modules/curlew.py
53
+--- curlew-0.2.3.orig/modules/curlew.py    2017-04-21 02:26:15.000000000 +0300
54
++++ curlew-0.2.3/modules/curlew.py 2017-04-22 00:17:59.627062169 +0300
55
+@@ -39,24 +39,24 @@
56
+     from gi.repository import Gtk, GLib, Gdk, GObject, GdkPixbuf, Gio
57
+     import dbus.glib, dbus.service
58
+     
59
+-    from modules.customwidgets import LabeledHBox, TimeLayout, HScale, \
60
++    from curlew.customwidgets import LabeledHBox, TimeLayout, HScale, \
61
+     SpinsFrame, LabeledGrid, ComboWithEntry, ButtonWithIcon
62
+-    from modules.about import About
63
+-    from modules.functions import show_message, get_format_size, \
64
++    from curlew.about import About
65
++    from curlew.functions import show_message, get_format_size, \
66
+     duration_to_time, time_to_duration, check_codec
67
+-    from modules.logdialog import LogDialog
68
+-    from modules.tray import StatusIcon
69
+-    from modules.languages import LANGUAGES
70
+-    from modules.favdialog import Favorite
71
+-    from modules.waitdialog import WaitDialog
72
+-    from modules.fileinfos import FileInfos
73
+-    from modules.formats import Formats
74
+-    from modules.infobars import InfoBar
75
+-    from modules.codecs import CodecsDialog
76
+-    from modules.consts import CONF_PATH, HOME, CONF_FILE, DTA_DIR, \
77
++    from curlew.logdialog import LogDialog
78
++    from curlew.tray import StatusIcon
79
++    from curlew.languages import LANGUAGES
80
++    from curlew.favdialog import Favorite
81
++    from curlew.waitdialog import WaitDialog
82
++    from curlew.fileinfos import FileInfos
83
++    from curlew.formats import Formats
84
++    from curlew.infobars import InfoBar
85
++    from curlew.codecs import CodecsDialog
86
++    from curlew.consts import CONF_PATH, HOME, CONF_FILE, DTA_DIR, \
87
+     ORG_FFILE, USR_FFILE, SOUND_FILE
88
+-    from modules.configs import get_b_config, get_s_config
89
+-    from modules.players import Players
90
++    from curlew.configs import get_b_config, get_s_config
91
++    from curlew.players import Players
92
+ except Exception as e:
93
+     print(e)
94
+     sys.exit(1)
95
+@@ -74,7 +74,7 @@
96
+ 
97
+ # Localization.
98
+ DOMAIN = 'curlew'
99
+-LOCALDIR = join(DTA_DIR, 'locale')
100
++LOCALDIR = join(DTA_DIR, '../locale')
101
+ gettext.install(DOMAIN, LOCALDIR)
102
+ 
103
+ # Treeview cols nbrs
104
+diff -ruN curlew-0.2.3.orig/modules/edition.py curlew-0.2.3/modules/edition.py
105
+--- curlew-0.2.3.orig/modules/edition.py   2017-04-20 11:31:29.000000000 +0300
106
++++ curlew-0.2.3/modules/edition.py    2017-04-22 00:13:35.640887391 +0300
107
+@@ -24,9 +24,9 @@
108
+ 
109
+ from gi.repository import Gtk, GLib
110
+ 
111
+-from modules.customwidgets import LabeledGrid, ButtonWithIcon
112
+-from modules.consts import CONF_FILE, ORG_FFILE
113
+-from modules.functions import show_message
114
++from curlew.customwidgets import LabeledGrid, ButtonWithIcon
115
++from curlew.consts import CONF_FILE, ORG_FFILE
116
++from curlew.functions import show_message
117
+ 
118
+ 
119
+ class FormatEditor(Gtk.Dialog):
120
+diff -ruN curlew-0.2.3.orig/modules/formats.py curlew-0.2.3/modules/formats.py
121
+--- curlew-0.2.3.orig/modules/formats.py   2017-04-20 11:49:28.000000000 +0300
122
++++ curlew-0.2.3/modules/formats.py    2017-04-22 00:13:35.644887403 +0300
123
+@@ -21,8 +21,8 @@
124
+ gi.require_version('Gtk', '3.0')
125
+ 
126
+ from gi.repository import Gtk
127
+-from modules.edition import FormatEditor
128
+-from modules.customwidgets import ButtonWithIcon
129
++from curlew.edition import FormatEditor
130
++from curlew.customwidgets import ButtonWithIcon
131
+ 
132
+ class Formats(Gtk.Popover):
133
+     
134
+diff -ruN curlew-0.2.3.orig/modules/__init__.py curlew-0.2.3/modules/__init__.py
135
+--- curlew-0.2.3.orig/modules/__init__.py  2017-04-20 11:30:11.000000000 +0300
136
++++ curlew-0.2.3/modules/__init__.py   2017-04-22 00:13:35.640887391 +0300
137
+@@ -19,7 +19,7 @@
138
+ 
139
+ from gi.repository import GLib
140
+ 
141
+-from modules.consts import CONF_FILE, USR_FFILE, CONF_PATH
142
++from curlew.consts import CONF_FILE, USR_FFILE, CONF_PATH
143
+ from os.path import exists
144
+ import os
145
+ 
146
+diff -ruN curlew-0.2.3.orig/modules/players.py curlew-0.2.3/modules/players.py
147
+--- curlew-0.2.3.orig/modules/players.py   2017-04-20 11:31:29.000000000 +0300
148
++++ curlew-0.2.3/modules/players.py    2017-04-22 00:13:35.652887426 +0300
149
+@@ -23,8 +23,8 @@
150
+ from shutil import which
151
+ 
152
+ from gi.repository import Gtk
153
+-from modules.customwidgets import ComboWithEntry
154
+-from modules.configs import set_s_config
155
++from curlew.customwidgets import ComboWithEntry
156
++from curlew.configs import set_s_config
157
+ 
158
+ PLAYERS_LIST = [
159
+     'mpv',
160
+diff -ruN curlew-0.2.3.orig/setup.py curlew-0.2.3/setup.py
161
+--- curlew-0.2.3.orig/setup.py 2016-12-01 17:26:10.000000000 +0300
162
++++ curlew-0.2.3/setup.py  2017-04-22 00:19:55.035178724 +0300
163
+@@ -17,8 +17,6 @@
164
+ doc_files  = ['LICENSE-ar.txt', 'LICENSE-en.txt', 'AUTHORS', 'THANKS', 'ChangeLog', 'README']
165
+ data_files = [('share/applications/', ['curlew.desktop']),
166
+               ('share/icons/hicolor/scalable/apps', ['curlew.svg']),
167
+-              ('share/pixmaps', ['curlew.svg']),
168
+-              ('share/doc/curlew', doc_files),
169
+               ('share/curlew', ['formats.cfg', 'done.ogg']),
170
+               #('share/curlew', ['formats.cfg', 'ffmpeg']), # Portable version
171
+               ('share/curlew/modules', glob("modules/*.py"))
172
+@@ -58,7 +56,7 @@
173
+         # Generate mo files
174
+         call("msgfmt {} -o {}".format(po_file, mo_path), shell=True)
175
+     
176
+-    locales = map(lambda i: ('share/curlew/'+i, [i+'/curlew.mo', ]), glob('locale/*/LC_MESSAGES'))
177
++    locales = map(lambda i: ('share/'+i, [i+'/curlew.mo', ]), glob('locale/*/LC_MESSAGES'))
178
+     data_files.extend(locales)
179
+     
180
+     return 0
181
+@@ -168,5 +166,7 @@
182
+                      'Topic :: Desktop Environment :: Gnome',
183
+                      'Topic :: Multimedia :: Sound/Audio :: Conversion',
184
+                      'Topic :: Utilities'],
185
+-      data_files=data_files
186
++      data_files=data_files,
187
++      packages=['curlew'],
188
++      package_dir={"curlew" : "modules"}
189
+       )
190
curlew-0.2.2.tar.gz -> curlew-0.2.3.tar.gz Changed
Refresh
Refresh
Request History
Aliaksei Padvalski's avatar

awissu created request almost 8 years ago


Aliaksei Padvalski's avatar

awissu accepted request almost 8 years ago