jigoku / alluvion Goto Github PK
View Code? Open in Web Editor NEWPerl/Gtk2 torrent search utility (strike API)
Home Page: https://jigoku.github.io/alluvion/
License: GNU General Public License v3.0
Perl/Gtk2 torrent search utility (strike API)
Home Page: https://jigoku.github.io/alluvion/
License: GNU General Public License v3.0
Disable sub category combobox selection when "category" is set to "N/A"
Low priority for now.
But should contain a script for packaging/deploying with ease eventually.
Currently has:
Ideas for extra tabs:
When the module is not found on the users system, disable socks support.
interface locks up while waiting for set torrent client to respond, adding threads here will fix that.
Something changed in the api, many values are wrong (filesize the obvious one) and torrent files are no longer generated by the api.
Also it only provides the info hash from now on. Use magnet builder (with list of custom trackers) to build URI.
Allow user to specify file size to be displayed as GB / MB / KB / bytes.
Would be 3 radio buttons, and shows up in search query results and hash lookup.
Allow the user to configure socks/http/tor connection as proxy for retrieving strike API results
Make it look nicer, and more usable. Instead of a button, have a markup label with 2 buttons (open / remove)
This way we can use destroy_children($vbox) as the search is implemented, and dsiaply a spinner while waiting for the thread to finish fetching a result.
Could also add drop/open expander for file list.
Check whether input is valid for timeout, proxy host, proxy port.
Maybe use spinner widgets?
Allow user to click button to copy URI to clipboard
File request (*.torrent) as thread 7d8e5cd
JSON request as thread b1be325
Bookmark interface improvements 7eee39f
Hash Lookup interface improvements #7
HTTP proxy support 9727313
Socks4 proxy support 3ef29e6
Socks5 proxy support 3ef29e6
User Preferences 482d971
Return key; entry activation 119ab31
Find a better icon cba8c01
This will allow the results to be sorted by value, making results easier to navigate when looking for something specific.
In preferences allow the user to open megnet links via:
API example @ https://gist.github.com/Codeusa/92818fd7a0da398f0809
<snip>
"file_info":{
"file_names":[
"slackware64-14.1-iso\\slackware64-14.1-install-dvd.iso",
" slackware64-14.1-iso\\slackware64-14.1-install-dvd.iso.asc",
" slackware64-14.1-iso\\slackware64-14.1-install-dvd.iso.md5",
" slackware64-14.1-iso\\slackware64-14.1-install-dvd.iso.txt"
],
"file_lengths":[
2438987776,
198,
67,
231925
]
},
</snip>
Possibly add extra button by copy/save/execute to show more info.
Present dialog with this information?
See if it's possible to port everything to Gtk3.
As reference in main script:
#require $Bin . "/lib/interface.pm";
#require $Bin . "/lib/common.pm";
#require $Bin . "/lib/request.pm";
#require $Bin . "/lib/proxy.pm";
#require $Bin . "/lib/debug.pm";
#require $Bin . "/lib/bookmarks.pm";
#require $Bin . "/lib/searchquery.pm";
#require $Bin . "/lib/hashlookup.pm";
This will make things ALOT easier to find/edit/review.
Make it look nicer.
Since introduction of bookmarks manager, these warnings/critical messages have been appearing again. They don't appear to be making the application misbehave, so it's been hard to find where they are coming from.
Noting here as a reminder.
(alluvion-gtk.pl:2018): GLib-GObject-CRITICAL **: g_object_get_qdata: assertion 'G_IS_OBJECT (object)' failed
(alluvion-gtk.pl:2018): GLib-GObject-CRITICAL **: g_object_steal_qdata: assertion 'G_IS_OBJECT (object)' failed
(alluvion-gtk.pl:2018): GLib-GObject-CRITICAL **: g_object_unref: assertion 'G_IS_OBJECT (object)' failed
(alluvion-gtk.pl:2018): GLib-GObject-CRITICAL **: g_signal_handlers_destroy: assertion 'G_TYPE_CHECK_INSTANCE (instance)' failed
(alluvion-gtk.pl:2018): GLib-GObject-CRITICAL **: g_object_unref: assertion 'G_IS_OBJECT (object)' failed
Gtk-CRITICAL **: IA__gtk_widget_get_realized: assertion 'GTK_IS_WIDGET (widget)' failed during global destruction.
GLib-GObject-WARNING **: instance with invalid (NULL) class pointer during global destruction.
(alluvion-gtk.pl:2018): GLib-GObject-CRITICAL **: g_signal_emit_valist: assertion 'G_TYPE_CHECK_INSTANCE (instance)' failed
GLib-GObject-WARNING **: instance with invalid (NULL) class pointer during global destruction.
(alluvion-gtk.pl:2018): GLib-GObject-CRITICAL **: g_signal_handlers_destroy: assertion 'G_TYPE_CHECK_INSTANCE (instance)' failed
GLib-GObject-WARNING **: instance with invalid (NULL) class pointer during global destruction.
Launch alluvion, click "enable proxy".
HTTP is the default radio item, however proxy isn't actually set unless you click the radio item at least once, regardless of whether it is already set.
Alluvion should be threaded (priority for proxy connections when implemented). A slow connection can make the application hang, and potentially be terminated by the desktop environment.
Find a way to dynamically set width. Currently set as:
$label_title->set_width_chars(65);
When window is resized, label width should be calculated by window width, so titles are only truncated when there isn't enough room.
Add checkbutton_env_proxy to preferences proxy UI.
eg:
sub ua_init_env {
ua_init();
$ua->proxy( ['http, https'], $ENV{HTTP_PROXY} ) if exists $ENV{HTTP_PROXY};
$settings{"proxy_type"} = "env";
}
This will use proxy set by users ~/.bashrc, etc using HTTP_PROXY
or....
$ HTTP_PROXY=x.x.x.x ./alluvion-gtk.pl
*** unhandled exception in callback:
*** '' is not a valid URI scheme at ./alluvion-gtk.pl line 611.
*** ignoring at ./alluvion-gtk.pl line 596, <FILE> line 7.
proxy is enabled by issuing:
$ua->proxy([ 'http', 'https' ], "http://".$settings{"proxy_addr"}.":".$settings{"proxy_port"});
when disabling....
$ua->proxy(undef, undef);
THIS is invalid
Issues that need to be fixed before 0.3
Problems:
Cancelled issues:
Alluvion
https://www.wordnik.com/words/alluvion
n. The flow of water against a shore or bank.
n. Inundation by water; flood.
Something to do with water, like a wave, or a drop, or splash or something like that.
check_new_version() was recently added in 08def7b. However it should not be run at each launch, make a menu item under "Help" to manually check, and if a new release is found, give the URI to the release tag page in a dialog prompt.
https://getstrike.net/api/v2/torrents/descriptions/?hash=
Returns message as base64 encoded text; eg:
{"statuscode":200,"message":"<BASE64HERE>"}
This output could be added to the hash lookup display. Possibly rename it to "torrent info".
Socks proxy support has been dropped, because currently, cannot find a way to implement it along with LWP::UserAgent.
A solution exists, if you wish to use Tor (tor does not function as an HTTP proxy so cannot be set in Alluvion preferences).
Prepend alluvion with `torify' to route API requests within the application to the Tor network.
Eg;
$ torify ./alluvion-gtk.pl
Enabling the HTTP/HTTPS proxy within Alluvion aswell, will result in
It's probably not necessary, but it works.
For example debug() output
[ &] PID: 13655 | VmSize: 1024760 kB | VmPeak: 1062004 kB | Threads: 4
[ !] thread #3 started
08:21:42 libtorsocks(13655): Call to connect received on completed request 3
[ &] PID: 13655 | VmSize: 1024892 kB | VmPeak: 1062004 kB | Threads: 5
08:21:43 libtorsocks(13655): Call to connect received on completed request 3
[ *] requested via proxy (http://xyz.xyz.xyz.xyz:abc)
[ !] thread #3 finished
[ &] PID: 13655 | VmSize: 1024892 kB | VmPeak: 1062004 kB | Threads: 4
Reproduce:
Issue: Proxy is set to radio item clicked even preferences changes were cancelled
Current icon doesn't have an alpha layer. Find one that does.
This possibly happens because the sub is outside of the thread, but can be triggered while a thread is active?
Bytes , KB, MB, GB are inaccurate, fix this.
convert_bytes()
API example:
https://getstrike.net/api/v2/torrents/search/?phrase=windows&category=Applications&subcategory=Windows
Valid categories:
Categories:
Anime
Applications
Books
Games
Movies
Music
Other
TV
XXX
Sub Categories:
Highres Movies
Hentai
HD Video
Handheld
Games
Fiction
English-translated
Ebooks
Dubbed Movies
Documentary
Concerts
Comics
Books
Bollywood
Audio books
Asian
Anime Music Video
Animation
Android
Academic
AAC
3D Movies
XBOX360
Windows
Wii
Wallpapers
Video
Unsorted
UNIX
UltraHD
Tutorials
Transcode
Trailer
Textbooks
Subtitles
Soundtrack
Sound clips
Radio Shows
PSP
PS3
PS2
Poetry
Pictures
PC
Other XXX
Other TV
Other Music
Other Movies
Other Games
Other Books
Other Applications
Other Anime
Non-fiction
Newspapers
Music videos
Mp3
Movie clips
Magazines
Mac
Lossless
Linux
Karaoke
iOS
When proxy is enabled from previous session, the interface does not show until a connection has been established (or timed out).
Find work around for this.
Use buttons for
This makes it clear the buttons can be clicked, currently a clickable label with no pointer change (hand cursor) makes it hard to figure out it can be clicked.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.